composer使ってるプロジェクトなら何でも使えるはず。
https://github.com/kawax/composer-update-action
https://github.com/marketplace/actions/composer-update-action
PHP7.4が下限なので7.4ではインストールもできないプロジェクトではcomposer.jsonでconfig.platformの設定が必要かも。
プライベートリポジトリでも使える。プランごとに月に何分までの制限があるけど。
使い方
.github/workflows/update.yml
を作るだけ。
UTCの0時は日本時間で9時。好きなように変更する。
name: composer update
on:
schedule:
- cron: '0 0 * * *' #UTC
jobs:
composer_update_job:
runs-on: ubuntu-latest
name: composer update
steps:
- name: Checkout
uses: actions/checkout@v2
- name: composer update action
uses: kawax/composer-update-action@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_TOKENは自動的に使える
ymlにこれさえ書けばいい。
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
パーソナルアクセストークンの作成は不要。Secretsは使わなくていい。
composer.jsonがルートにない場合
COMPOSER_PATH
でcomposer.jsonがあるサブディレクトリを指定。
env:
COMPOSER_PATH: /subdir
composer.jsonが2つある場合
2回に分けて実行。
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GIT_NAME: cu
GIT_EMAIL: cu@composer-update
jobs:
composer_1st_job:
runs-on: ubuntu-latest
name: composer update 1
steps:
- name: Checkout
uses: actions/checkout@v2
- name: composer update
uses: kawax/composer-update-action@v1
composer_2nd_job:
runs-on: ubuntu-latest
name: composer update 2
steps:
- name: Checkout
uses: actions/checkout@v2
- name: composer update
uses: kawax/composer-update-action@v1
env:
COMPOSER_PATH: /subdir
コミットユーザー
env:
GIT_NAME: cu
GIT_EMAIL: cu@composer-update
Secretsを使ってもいい。
env:
GIT_NAME: cu
GIT_EMAIL: ${{ secrets.GIT_EMAIL }}
GitHub Actionsのバージョン
@v1
で指定してる例が多いからcomposerの^1.0
と同じかと思ったけど違った。v1
というタグをわざわざ付け替えてる。そんな面倒なことしたくないのでv1
はブランチで使用することにした。@v1
ならv1ブランチから使う。タグは普通にv1.0.0
。
steps:
- uses: actions/setup-node@74bc508 # Reference a specific commit
- uses: actions/setup-node@v1.0 # Reference the major version of a release
- uses: actions/setup-node@master # Reference a branch
https://help.github.com/ja/actions/building-actions/about-actions#versioning-your-action
終わり
自動composer update自体は1年以上前から毎日動かしてたけど結構負荷が高いので自分のサーバーで動かすと色々辛い。
GitHub Actionsに移したのでかなり楽になった。