Read this in other languages: English, 日本語.
これは任意のコマンドを実行して変更をプルリクエストにコミットする GitHub Actions
です。
コンフリクトを解決したり不要になったプルリクエストをクローズしたりするマネジメント機能も備えています。
例:.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:
GITHUB_TOKEN: ${{ secrets.GITHUB_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'
例:.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:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
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:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
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'
グローバルにインストールするパッケージ
default: ''
実行するコマンド
コミットメッセージ
コミット時に設定する名前
default: '${github.actor}'
About Github Context
コミット時に設定するメールアドレス
default: '${github.actor}@users.noreply.github.com'
About Github Context
ブランチ名のプリフィックス
default: 'create-pr-action/'
ブランチ名
いくつかの変数が使用可能です (variables1)
プルリクエストのタイトル
いくつかの変数が使用可能です (variables1)
プルリクエストの本文
いくつかの変数が使用可能です (variables2)
デフォルトブランチをチェックするかどうか
default: 'true'
デフォルトブランチ以外をチェックしないかどうか
default: 'false'
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. ) |
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.GITHUB_TOKEN }} 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'