Read this in other languages: English, 日本語.
これは任意のコマンドを実行して変更をプルリクエストにコミットする GitHub Actions
です。
コンフリクトを解決したり不要になったプルリクエストをクローズしたりするマネジメント機能も備えています。
Details
例:.github/workflows/update-npm-packages.yml
on:
schedule:
- cron: 0 0 * * *
pull_request:
types: [opened, synchronize, reopened, closed]
name: Update packages
jobs:
release:
name: Update npm packages
runs-on: ubuntu-latest
steps:
- name: Update npm packages
uses: technote-space/create-pr-action@v1
with:
EXECUTE_COMMANDS: |
npx npm-check-updates -u --packageFile package.json
yarn install
yarn upgrade
yarn audit
COMMIT_MESSAGE: 'chore: update npm dependencies'
COMMIT_NAME: 'GitHub Actions'
COMMIT_EMAIL: 'example@example.com'
PR_BRANCH_NAME: 'chore-npm-update-${PR_ID}'
PR_TITLE: 'chore: update npm dependencies'
例:.github/workflows/update-composer-packages.yml
on:
schedule:
- cron: 0 0 * * *
pull_request:
types: [opened, synchronize, reopened, closed]
name: Update packages
jobs:
release:
name: Update composer packages
runs-on: ubuntu-latest
steps:
- name: Update composer packages
uses: technote-space/create-pr-action@v1
with:
EXECUTE_COMMANDS: |
rm -f "composer.lock"
< "composer.json" jq -r '.require | to_entries[] | select(.value | startswith("^")) | select(.key | contains("/")) | .key' | tr '\n' ' ' | xargs -r php -d memory_limit=2G "$(command -v composer)" require --no-interaction --prefer-dist --no-suggest
< "composer.json" jq -r '."require-dev" | to_entries[] | select(.value | startswith("^")) | select(.key | contains("/")) | .key' | tr '\n' ' ' | xargs -r php -d memory_limit=2G "$(command -v composer)" require --dev --no-interaction --prefer-dist --no-suggest
COMMIT_MESSAGE: 'chore: update composer dependencies'
COMMIT_NAME: 'GitHub Actions'
COMMIT_EMAIL: 'example@example.com'
PR_BRANCH_NAME: 'chore-composer-update-${PR_ID}'
PR_TITLE: 'chore: update composer dependencies'
例:.github/workflows/update-packages.yml
on:
schedule:
- cron: 0 0 * * *
pull_request:
types: [opened, synchronize, reopened, closed]
name: Update packages
jobs:
release:
name: Update packages
runs-on: ubuntu-latest
steps:
- name: Update packages
uses: technote-space/create-pr-action@v1
with:
EXECUTE_COMMANDS: |
npx npm-check-updates -u --packageFile package.json
yarn install
yarn upgrade
yarn audit
rm -f "composer.lock"
< "composer.json" jq -r '.require | to_entries[] | select(.value | startswith("^")) | select(.key | contains("/")) | .key' | tr '\n' ' ' | xargs -r php -d memory_limit=2G "$(command -v composer)" require --no-interaction --prefer-dist --no-suggest
< "composer.json" jq -r '."require-dev" | to_entries[] | select(.value | startswith("^")) | select(.key | contains("/")) | .key' | tr '\n' ' ' | xargs -r php -d memory_limit=2G "$(command -v composer)" require --dev --no-interaction --prefer-dist --no-suggest
COMMIT_MESSAGE: 'chore: update dependencies'
COMMIT_NAME: 'GitHub Actions'
COMMIT_EMAIL: 'example@example.com'
PR_BRANCH_NAME: 'chore-update-${PR_ID}'
PR_TITLE: 'chore: update dependencies'
name | description | default | required | e.g. |
---|---|---|---|---|
GLOBAL_INSTALL_PACKAGES | グローバルにインストールするパッケージ | imagemin-cli |
||
EXECUTE_COMMANDS | 実行するコマンド | |||
COMMIT_MESSAGE | コミットメッセージ | |||
COMMIT_NAME | コミット時に設定する名前 | ${github.actor} |
||
COMMIT_EMAIL | コミット時に設定するメールアドレス | ${github.actor}@users.noreply.github.com |
||
PR_BRANCH_PREFIX | ブランチ名のプリフィックス | create-pr-action/ |
true | imagemin/ |
PR_BRANCH_NAME | ブランチ名 いくつかの変数が使用可能です (variables1) |
true | imagemin-${PR_ID} |
|
PR_TITLE | プルリクエストのタイトル いくつかの変数が使用可能です (variables1) |
true | chore: minify images |
|
PR_BODY | プルリクエストの本文 いくつかの変数が使用可能です (variables2) |
true | ||
CHECK_DEFAULT_BRANCH | デフォルトブランチをチェックするかどうか | true |
false |
|
ONLY_DEFAULT_BRANCH | デフォルトブランチ以外をチェックしないかどうか | false |
true |
|
AUTO_MERGE_THRESHOLD_DAYS | 自動マージを行う日数しきい値 詳細 |
30 |
||
GITHUB_TOKEN | アクセストークン | ${{github.token}} |
true | ${{secrets.ACCESS_TOKEN}} |
eventName | action |
---|---|
pull_request | opened, synchronize, reopened, labeled, unlabeled |
pull_request | closed |
schedule | * |
- 次のアクティビティタイプは明示的に指定する必要があります (detail)
labeled
,unlabeled
,closed
name | description |
---|---|
PR_NUMBER | pull_request.number (例:11 ) |
PR_NUMBER_REF | #${pull_request.number} (例:#11 ) |
PR_ID | pull_request.id (例:21031067 ) |
PR_HEAD_REF | pull_request.head.ref (例:change ) |
PR_BASE_REF | pull_request.base.ref (例:master ) |
PR_TITLE | pull_request.title (例:Update the README with new information. ) |
PATCH_VERSION | new patch version (e.g. v1.2.4 ) |
MINOR_VERSION | new minor version (e.g. v1.3.0 ) |
MAJOR_VERSION | new major version (e.g. v2.0.0 ) |
name | description |
---|---|
PR_LINK | プルリクエストへのリンク |
COMMANDS_OUTPUT | コマンドの結果 |
FILES_SUMMARY | 例:Changed 2 files |
FILES | 変更されたファイル一覧 |
GitHub Actions で提供されるGITHUB_TOKEN
は連続するイベントを作成する権限がありません。
したがって、プッシュによってトリガーされるビルドアクションなどは実行されません。
これはブランチプロテクションを設定していると問題になる場合があります。
もしアクションをトリガーしたい場合は代わりにpersonal access token
を使用してください。
- public_repo または repo の権限で Personal access token を生成
(repo はプライベートリポジトリで必要です) - ACCESS_TOKENとして保存
GITHUB_TOKEN
の代わりにACCESS_TOKEN
を使用するように設定
例:.github/workflows/update-packages.yml
on: schedule: - cron: 0 0 * * * pull_request: types: [opened, synchronize, reopened, closed] name: Update packages jobs: release: name: Update npm packages runs-on: ubuntu-latest steps: - name: Update npm packages uses: technote-space/create-pr-action@v1 with: GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }} EXECUTE_COMMANDS: | npx npm-check-updates -u --packageFile package.json yarn install yarn upgrade yarn audit COMMIT_MESSAGE: 'chore: update npm dependencies' COMMIT_NAME: 'GitHub Actions' COMMIT_EMAIL: 'example@example.com' PR_BRANCH_NAME: 'chore-npm-update-${PR_ID}' PR_TITLE: 'chore: update npm dependencies'
以下の条件を満たす場合、自動でマージを行います。
AUTO_MERGE_THRESHOLD_DAYS
が設定されている- 今回の実行で変更がない
- PRを作成してからこの値の日数が経っている
- すべてのチェックがSuccess
- マージ可能