Github Actionsで実行したCIの結果をslackに通知するときに、ActionsのURLも含めたいと考えていた。 環境変数を使うか採用するアクションのREADMEに沿えばよいのだが、いろいろ調べていたらgithubコンテキストでも表現できる方法を見つけた。
方法1:github.event.repository.urlを使う
https://github.com/tokorom/action-slack-incoming-webhook のREADMEではgithub.event.repository.urlを使っていた。
${{ github.event.repository.url }}/actions/runs/${{ github.run_id }}
方法2:github.server_urlとgithub.repositoryを組み合わせる
https://github.community/t/get-runs-url/16921/5 には、github.server_urlとgithub.repositoryを組み合わせる方法が書いてあった。
${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
GitHub Actions のコンテキストおよび式の構文 - GitHub Docs によると、ほとんどの環境変数はgithubコンテキストで表現できるらしい。
なので $GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID
と等価なのだろう。
せっかくなので通知例も
文章だけなのもアレなので実際に通知させてみた。 通知内容自体はどちらも同じになる。
検証方法
- https://github.com/tokorom/action-slack-incoming-webhook を使用する
- pull request https://github.com/rsym/actions_test/pull/1 を使う
- 以下のパターンそれぞれのコミットをpushして自分のslack宛に通知させる
github.event.repository.urlを使う場合
コード抜粋("title": "GitHub Actions URL"
の部分が検証ポイント)
steps: - uses: actions/checkout@v2 - name: Slack Notification if: success() uses: tokorom/action-slack-incoming-webhook@main env: INCOMING_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} with: text: Successfully automated deployment. attachments: | [ { "color": "good", "author_name": "${{ github.actor }}", "author_icon": "${{ github.event.sender.avatar_url }}", "fields": [ { "title": "Commit Message", "value": "${{ github.event.head_commit.message }}" }, { "title": "GitHub Actions URL", "value": "${{ github.event.repository.url }}/actions/runs/${{ github.run_id }}" }, { "title": "Compare URL", "value": "${{ github.event.compare }}" } ] } ]
github.server_urlとgithub.repositoryを使う場合
コード抜粋(diffのみ)
}, { "title": "GitHub Actions URL", - "value": "${{ github.event.repository.url }}/actions/runs/${{ github.run_id }}" + "value": "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" }, { "title": "Compare URL",