githubコンテキストでActionsのURLを表現する

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 と等価なのだろう。

せっかくなので通知例も

文章だけなのもアレなので実際に通知させてみた。 通知内容自体はどちらも同じになる。

検証方法

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 }}"
                  }
                ]
              }
            ]

f:id:rsym1290:20210912223133p:plain

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",

f:id:rsym1290:20210912224005p:plain


もちろん環境変数でも良いのだが、コードの見栄え的に自分はgithubコンテキストのほうが好みかな。