🦎

リポジトリ名の取得 [GitHub Actions]

2022/06/06に公開
1

環境変数

ワークフローを書くときに意外と難しいのがリポジトリ名の取得です。
owner/repo 形式は ${GITHUB_REPOSITORY} 環境変数か ${{ github.repository }} コンテキストで、 owner${GITHUB_REPOSITORY_OWNER} 環境変数か ${{ github.repository_owner }} コンテキストでそれぞれ取得できるのですが repo だけを取得する方法はありません。
そのうち素直に取得できるようになると思いますが今のところはこのように書きます。

環境変数
- run: echo "${GITHUB_REPOSITORY#${GITHUB_REPOSITORY_OWNER}/}"

Bash の変数展開を利用しています。

コンテキスト

github コンテキストから直接取得することはできないので steps コンテキストか env コンテキスト(環境変数)を経由します。

steps 経由
- id: repository
  run: echo "name=${GITHUB_REPOSITORY#${GITHUB_REPOSITORY_OWNER}/}" >> $GITHUB_OUTPUT
- uses: actions/example@v1
  with:
    repo: ${{ steps.repository.outputs.name }}
環境変数経由
- run: echo "REPOSITORY_NAME=${GITHUB_REPOSITORY#${GITHUB_REPOSITORY_OWNER}/}" >> $GITHUB_ENV
- uses: actions/example@v1
  with:
    repo: ${{ env.REPOSITORY_NAME }}

様々な環境変数

まとめるついでにリポジトリ名以外でも役に立ちそうなものを少し紹介します。
詳細はドキュメントを参照してください。

https://docs.github.com/ja/actions/learn-github-actions/environment-variables

項目 環境変数
owner/repo $GITHUB_REPOSITORY
owner $GITHUB_REPOSITORY_OWNER
repo ${GITHUB_REPOSITORY#${GITHUB_REPOSITORY_OWNER}/}
actor $GITHUB_ACTOR
workspace $GITHUB_WORKSPACE
branch $GITHUB_REF_NAME
PR base branch $GITHUB_BASE_REF
PR head branch $GITHUB_HEAD_REF
${{ github.* }} $GITHUB_*
run URL $GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID
OS $RUNNER_OS
Architecture $RUNNER_ARCH
${{ runner.* }} $RUNNER_*

Discussion

azechiazechi

コンテキストgithub.event.repository.nameでリポジトリ名だけの文字列が取得できました。

github.eventは、英語版ドキュメントでは「The full event webhook payload. 」だそうです。

そして、webhook payloadのrepositorywebhook ペイロードオブジェクトの共通プロパティだそうです。共通プロパティなのでgithub.event.repositoryの存在はアクションのトリガーによらず期待できそうです。

github.event.repositoryはリポジトリオブジェクトであり、 name属性を持ちます。その値がowner/repo 形式のrepoの部分の文字列です。