Open5
Github Actions 雑メモ
環境変数のスコープについては下記の記事が分かりやすかった。
環境変数の参照はシェルの構文、もしくはコンテキスト経由で参照することができる。
jobs:
Explore-GitHub-Actions:
runs-on: ubuntu-latest
steps:
- name: test-1
run: echo ${{ env.NAME }}
- name: test-2
run: echo ${{ env['NAME'] }}
- name: test-3
run: echo $NAME
コンテキストは run 以外でも利用することができるので、利便性等を考えるとコンテキストから参照するのが統一感が出るのでそちらを利用する。
中間環境変数という仕組みを利用するのが良い。
環境変数をステップを跨いで異なるステップへ渡すには、GitHub Actions が提供する一時ファイルへ書き込むことで実現できる。
一時ファイルへのパスは$GITHUB_ENV
で参照可能。
jobs:
Explore-GitHub-Actions:
runs-on: ubuntu-latest
steps:
- name: test-1
run: echo "HOGE=${{ env.NAME }}" >> "$GITHUB_ENV"
env:
NAME: 'matazou'
- name: test-2
run: |
echo $HOGE
echo ${{ env.HOGE }}
github-script というライブラリを使用すれば、JS を使用して書くこともできる。
他にも色々とできそう!
jobs:
Explore-GitHub-Actions:
runs-on: ubuntu-latest
steps:
- uses: actions/github-script@v7
id: test-1
with:
script: |
const name = 'matazou';
console.log(`Hello, ${name}!`);
core.exportVariable('HOGE', name);
- name: test-2
run: |
echo $HOGE
ジョブ間で、任意のステップを値を共有する場合は、$GITHUB_OUTPUT
を利用する。
jobs:
Explore-GitHub-Actions:
runs-on: ubuntu-latest
outputs:
SELECTED_COLOR: ${{ steps.test1.outputs.SELECTED_COLOR }}
steps:
- name: test1
# id の指定が必要
id: test1
run: |
echo "SELECTED_COLOR=green" >> "$GITHUB_OUTPUT"
- name: test2
env:
SELECTED_COLOR: ${{ steps.test1.outputs.SELECTED_COLOR }}
run: |
echo "The selected color is $SELECTED_COLOR"
Other:
runs-on: ubuntu-latest
# needs の指定が必要
needs: Explore-GitHub-Actions
steps:
- name: test3
env:
SELECTED_COLOR: ${{ needs.Explore-GitHub-Actions.outputs.SELECTED_COLOR }}
run: |
echo "The selected color is $SELECTED_COLOR"
jobs.<job_id>.defaults.run.shell
に明示的に bash を指定することで、未設定の場合の時と違い -o pipefail
が設定される!
これにより、パイプライン中にエラーが発生した場合、そのエラーコードが返されるようになる!
(知らなかった。。)
job のコンカレンシーを設定することで、ジョブの同時実行数を制御できるのでコスト削減等に繋がりそう。
読む