🛠️
GitHub Actionsでset-envが非推奨になったので$GITHUB_ENV使う
GitHub Actions: Deprecating set-env and add-path commands - GitHub Changelog October 1, 2020
2020-10-01の変更で、セキュリティの面から、set-env
による環境変数の設定が非推奨になった。
新しい設定方法
今まではset-envでしていたのを、以下のように書き換えるだけです
echo "{name}={value}" >> $GITHUB_ENV
pathの場合はこうします
echo "/path/to/dir" >> $GITHUB_PATH
複数行の場合は、区切り文字も$GITHUB_ENVに設定します。
{name}<<{delimiter}
{value}
{delimiter}
steps:
- name: Set the value
id: step_one
run: |
echo 'JSON_RESPONSE<<EOF' >> $GITHUB_ENV
curl https://httpbin.org/json >> $GITHUB_ENV
echo 'EOF' >> $GITHUB_ENV
やってみた:一行の場合
たとえば、自動デプロイのためにリリースタグを取得してActionsで使いたい場合、以下のように書いていましたが
echo ::set-env name=RELEASE_VERSION::$(echo ${{GITHUB_REF#refs/*/}})
これを書き換えると以下のようになります
echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
全体像はこんな感じです
on:
push:
tags:
- 'v*.*.*'
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set env
run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
- name: Test
run: |
echo $RELEASE_VERSION
echo ${{ env.RELEASE_VERSION }}
https://stackoverflow.com/questions/58177786/get-the-current-pushed-tag-in-github-actions
この質問の回答にも反映しときました
やってみた:複数行の場合
プルリクエスト作成時にリポジトリのコードステップを取得し、コメントで出力するフローを書きました
使用したツール
step-count.yaml
name: step count
on: [pull_request,workflow_dispatch]
jobs:
build:
name: code steps using gocloc
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@master
- name: Login GitHub Registry
run: docker login docker.pkg.github.com -u owner -p ${{ secrets.GITHUB_TOKEN }}
- name: Run gocloc and Set env
run: |
echo 'content<<EOF' >> $GITHUB_ENV
docker run --rm -v "${PWD}":/workdir docker.pkg.github.com/hhatto/gocloc/gocloc:latest . >> $GITHUB_ENV
echo 'EOF' >> $GITHUB_ENV
- uses: actions/github-script@v3
with:
github-token: ${{secrets.GITHUB_TOKEN}}
script: |
const env = process.env
github.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: "``` \n" + env.content + "\n ```"
})
これで、以下のようにツールの出力を環境変数に入れて、コメントの内容として再利用できました
Discussion