Github Actions
docs
ぐぐると微妙にローカライズされた公式のやつが出てくるけど、リンクがおかしかったり変だったりするので英語版
まとまってる
Workflow command
:: から始まる出力をすることでいろいろできる
echo "::error file=app.js,line=10,col=15::Something went wrong" みたいなのを出力することで、Github の UI 上にフィードバックできる
なんか Injection できそうで不安
branch や tag にマッチさせる glob パターン
正規表現ではない
1つの * はスラッシュ入りのブランチにマッチしない
renovate などは renovate/{module} のようなブランチ名の PR を送るのでなんかテスト実行されていないな〜ということがあった、** は */* で指定する run
env
env で他の env を参照できない、${{ env.GITHUB_SERVER_URL }} とかもだめ、github context を使う
個別の run の URL を作るって env に入れるなら
code:env.yaml
- env:
WORKFLOW_RUN_URL: ${{github.server_url}}/${{github.repository}}/actions/runs/${{github.run_id}}
作業ディレクトリ
working-directory を使う
code:dir
- run: go run main.go
working-directory: ./examples/access-secrets
if
式で型の合わない比較は以下のルールで型変換される
build して差分があれば npm version patch で bump してコミッシュした例 ::set-output
いま非推奨
アクションを提供する側が actions.yaml で使うのかと思ったけど、普通に workflow 内でも使える
echo ::set-output name={name}::{value} でセットする、値は全て文字列になる
sptes.{step_id}.outputs.{name} で参照できる
code:workflow.yaml
...
steps:
- id: hoge
run: echo ::set-output name=key::value
- run: ...
if steps.hoge.outputs.key == "value" # これは真になり step が実行される
なんか独特だけど、出力に書かれた ::set-output をパースしてたりするのか??
exit
シェルコマンドを実行した終了コード 0 ならそのまま job は継続
非 0 ならそこで fail
その場で fail ではなく打ち切る方法は 2020/1/5 のところなさそう
以前は exit code で表現できていたっぽい
yaml の |
のあとはもう1段ネスト深くしようね
|- で複数行のシェルコマンド書いたりする
code:newline
- run: |-
-H 'Authorization: ...'
Links
キャッシュ
actions/cache を使う、各パッケージマネージャの example が README にある
restore-keys についてはこちらにまとまってる