Closed9
GitHub CI/CD実践ガイド まとめ
気になったとこだけ
中間環境変数
steps:
- run: echo "${ACTOR}"
これでもいいが、特殊文字が含まれると意図しない動作になり得るためアンチパターン。
一旦環境変数に格納して使うのが良い。
env:
ACTOR: ${{ github.actor }}
steps:
- run: echo "${ACTOR}"
Secretsの取り扱い
GitHub ActionsでのSecretsはログでもマスクされるが、回避する方法もある。
ので、安易にログにSecretsを吐かない。
env:
PASSWORD: ${{ secrets.PASSWORD }}
steps:
- run: echo "${PASSWORD}" # これはマスクされる
- run: echo "${PASSWORD:0:1} ${PASSWORD#?}" # これはマスクされない
PR時にコメントするActions
name: Comment
on: pull_request
jobs:
job:
name: comment
runs-on: ubuntu-latest
permissions:
pull-requests: write
contents: read
steps:
- users: actions/checkout@v4
- run: gh pr comment "${GITHUB_HEAD_REF}" --body "Hello, ${GITHUB_ACTOR}"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
対象言語のファイルが更新されたときのみテストを実行
Goでの例
name: Test
on:
pull_request:
paths: ['./**/*.go']
setup actionsのバージョン指定をバージョンファイルで
Goでの例
- uses: actions/setup-go@v5
with:
go-version-file: go.mod
GitHub ActionsのLint
name: Actions Lint
on:
pull_request:
paths: ['.github/workflows/*.yaml']
defaults:
run:
shell: bash
concurrency:
group: ${{ github.workflow}}-${{ github.ref }}
cancel-in-progess: true
jobs:
lint:
runs-on: ubuuntu-latest
timeout-minutes: 5
steps:
- uses: actions/checkout@v4
- run: |
docker run --rm -v #$(pwd):$(pwd)" -w "$(pwd)" rhysd/actionlint:latest
シェルの指定
GitHub Actionsでは基本的にシェルを指定しなくても bash
が使われるが、明示的に指定したときと動作が異なる。
- 省略時:
bash -e {0}
- 記述時:
bash --noprofile --norc -eo pipefail {0}
特に重要なのが pipefail
で、これがないとパイプエラーが拾えない。
ので、明示的に記述すべき。
また、前ステップに書かなくても、デフォルトシェルとして定義してやれば良い。
defaults:
run:
shell: bash
Reusable Workflows
自リポジトリの他のworkflowもしくは他のリポジトリのworkflowをコードをコピペしなくても扱えるようになる。
このスクラップは1ヶ月前にクローズされました