GitHub Actions でブランチ名を取得する
3027 ワード
概要
GitHub Actions でいろいろなタイミングでトピックブランチ名を取得したかったので調べてみました。
挙動
トピックブランチに Push 時にトピックブランチ名を取得
次のコマンドで取得可能です。
on:
push:
jobs:
sample:
runs-on: ubuntu-latest
steps:
- run: echo "${GITHUB_REF#refs/heads/}"
- run: echo "${GITHUB_REF_CONTEXT#refs/heads/}"
env:
GITHUB_REF_CONTEXT: ${{ github.ref }}
PRが作成されている場合にトピックブランチ名を取得
次のコマンドで取得可能です。
on:
push:
jobs:
sample:
runs-on: ubuntu-latest
if: github.event.pull_request
steps:
- run: echo "${GITHUB_REF#refs/heads/}" # PRの番号が取得されてしまいます
- run: echo "${GITHUB_HEAD_REF}"
- run: echo "${{ github.ref }}"
PRをマージ時にトピックブランチ名を取得
できないです。
ちなみにPRをマージ時に発火させる場合には、
on:
pull_request:
jobs:
sample:
runs-on: ubuntu-latest
if: github.event.pull_request.merged == true
steps:
- run: #command
で可能です。
tips
github のコンテキストや環境変数を実際に確認したい
次のコマンドで取得可能です。
- run: echo '${{ toJson(github) }}'
- run: env
まとめ
以下の関係になっていることがわかりました。
GITHUB_REF | GITHUB_HEAD_REF | GITHUB_BASE_REF | |
---|---|---|---|
push | refs/heads/${branch_name} | "(empty)" | "(empty)" |
PR | refs/pull/${PR_number}/merge | ${branch_name} | main |
context の一部は環境変数として事前に定義されていて環境変数として渡せることもわかりました。その場合は大文字で .
が _
になった値が設定されています。
また、context は文字列加工ができないので、いったん env を利用してjob 内の環境変数として定義した上で利用すると取り回しがしやすいです。
普段はプライベートでしかGHAを触ることはありませんが、yml を定義するだけでCIを回せるようになってとても楽な時代になりました。
参考
GitHub Actions のコンテキストおよび式の構文
環境変数
Github Actionsの個人的ユースケース備忘録
Author And Source
この問題について(GitHub Actions でブランチ名を取得する), 我々は、より多くの情報をここで見つけました https://qiita.com/athagi/items/063a3adf2ae6f5b13b97著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .