Github Actions
Custom Action
action.ya?ml
というファイルに書く
- 入出力インターフェースを定義する
inputs
- variablesやsecretsには直接アクセスできないので、
inputs
で受け取る
outputs
secrets.GITHUB_TOKEN
が使えなくても、github.token
でトークンにアクセスできる裏技がある
- バージョン番号のタグは、フルとメジ ャーバージョンだけの2種類を用意するのが慣例
- プライベートなactionsやReusable Workflows
- リポジトリの範囲内でしか利用できない
.github/actions/<action_name>/*.yml
あたりに置くのが一般的
- 他のリポジトリから使う場合は、リポジトリのActionsの設定で
Accesible from repositories owned by HOGEHOGE
という明示的な許可が必要
- 公開するには専用リポジトリを作りメタデータファイルをルートに置く
- アクションをマーケットプレースにドラフト公開する際には、メタデータファイルで指定したカテゴリが実在するものである必要がある。
- 単一のジョブを
runs
として書くイメージ
runs.using
- composite(stepsを指定。お手軽)
- node20(mainにJSファイルを指定)
- docker(imageにドッカーファイルを指定)
- Composite Actions固有
- 各ステップごとにシェルの明示的な指定が必須
- stepsが長くなったら
run: "${{GITHUB_ACTION_PATH}}/script.sh"
のように外部スクリプトに切り出すと良い。相対パスでは動かないので注意。
- JavaScript Actions固有
- ピュアなJSコードである必要があり、かつどのプラットフォームでも動作しないといけない
- ランナー上で直接実行される
- GitHub Hosted Runnerの場合、ランタイム(バイナリ)はプラットフォームごとに既定で用意され、自前で用意することはできない。
- JSでアクションを書くときは
actions/toolkit
を使うと便利
- Docker Container Actions固有
- 環境変数を渡すには、メタデータファイル(yml)の
runs.args