🦎
リポジトリ名の取得 [GitHub Actions]
環境変数
ワークフローを書くときに意外と難しいのがリポジトリ名の取得です。
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 }}
様々な環境変数
まとめるついでにリポジトリ名以外でも役に立ちそうなものを少し紹介します。
詳細はドキュメントを参照してください。
項目 | 環境変数 |
---|---|
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
コンテキスト
github.event.repository.name
でリポジトリ名だけの文字列が取得できました。github.event
は、英語版ドキュメントでは「The full event webhook payload. 」だそうです。そして、webhook payloadの
repository
は webhook ペイロードオブジェクトの共通プロパティだそうです。共通プロパティなのでgithub.event.repository
の存在はアクションのトリガーによらず期待できそうです。github.event.repository
はリポジトリオブジェクトであり、 name属性を持ちます。その値がowner/repo 形式のrepoの部分の文字列です。