GITHUB_REF_NAMEが使えるようになったのでそちらを使おう!
以下、太古の昔の手法です。
IT考古学的に、将来なんらかの文化的価値が出るかもしれないので保存しておきます。
GitHubActionsでブランチ名を取りたいけど毎回忘れるのでメモ。
下記の環境変数と、gitコマンドによる取得を試しています。
確認に使ったyamlファイル
name: Build
on:
workflow_dispatch: # 手動で任意のブランチをビルドしたい
pull_request:
branches:
- main # mainあてのPRをビルドしたい
push:
branches:
- main # mainにPRがマージされてpushされたらビルドしたい
- develop # developにPRがマージされてpushされたらビルドしたい
tags:
- v* # タグが打たれたらビルドしたい
jobs:
prepare:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Set tag names
id: tag_names
run: |
echo "GITHUB_EVENT_NAME =" "${GITHUB_EVENT_NAME}"
# git コマンドでの習得テスト (sedは、いろいろ試しているときの消し忘れなので気にしないでください)
echo "git branch --show-current | sed 's|/|-|g' =" $(git branch --show-current | sed 's|/|-|g')
echo "git rev-parse --short HEAD =" $(git rev-parse --short HEAD)
echo "git describe --tags --always =" $(git describe --tags --always)
# 環境変数での習得テスト
echo "GITHUB_REF#refs/heads/ =" "${GITHUB_REF#refs/heads/}"
echo "GITHUB_HEAD_REF#refs/heads/ =" "${GITHUB_HEAD_REF#refs/heads/}"
echo "GITHUB_BASE_REF#refs/heads/ =" "${GITHUB_BASE_REF#refs/heads/}"
トリガーごとの動作
1. push branch
mainブランチをpushする。
(mainあてのPRがマージされたときも同じ)
gitコマンドでも環境変数でも取れる。
git describe --tags --always
はalwaysオプションつけているので、タグが無いときはコミットハッシュがとれています。
2. pull_request
feature/test01
-> main
のPRを作成。
PRをマージした場合のcommit hashについて、ビルドしてdockerイメージを作りたい。
イメージのタグはPRもとのブランチ名にしたい。
そんなときは GITHUB_HEAD_REF
から取る。
3. push tag
github web-ui から v0.0.1
というリリースを作成。
ブランチ名など存在しませんよ。
4. workflow_dispatch
github web-ui から feature/test01
というブランチを選んで Run workflow
。
push branchとおんなじですね。
まとめ
この記事を書いたことを覚えていますように