🔖
github actionsで使えるコンテキスト情報について
はじめに
githubのbase/headがどっちがどっちかわからない。
github.head_ref が使えたり使えなかったりするのがよくわからない。
そもそもrefも何なんだかわからない。
整理する
まずref
refはreferenceで参照の意味。
refs/heads/master
のような形式ではじめて意味を持つ。
(個人的な感想として、github actionsでgithub.refという変数があるからややこしく感じる。まるでrefで何が定義される値があるかのように感じる。)
次にhead
これは「現在の位置」を表す。
「ブランチの先頭」という勘違いをしてきたが、そうではない。
ブランチと言うとは分岐した流れを示すことを想像するが、実際は単なる一つのコミットを指す参照に過ぎない。
その参照であるブランチを持たないcommitをcheckoutした時に「detached head」となる。
github actionsでコンテキスト情報
素晴らしい情報。
ここに一つだけ情報を追加しておきたい。
github.event.before を使うことでpush前のbaseブランチのコミットハッシュが取れる。
これを使うとPRと同様にpush単位、PR単位、で差分を比較評価できる。
例えばPR前後、push前後で特定のファイルが変わったかどうかなどの評価ができる。
Variable | Push Event | Pull Request Event |
---|---|---|
$GITHUB_REF |
refs/heads/{BRANCH_NAME} |
refs/pull/{ISSUE_NUMBER}/merge |
${{ github.ref }} |
refs/heads/{BRANCH_NAME} |
refs/pull/{ISSUE_NUMBER}/merge |
${{ github.ref_name }} |
{BRANCH_NAME} |
{ISSUE_NUMBER}/merge |
${{ github.head_ref }} |
- | {HEAD_BRANCH_NAME} |
${{ github.base_ref }} |
- | {BASE_BRANCH_NAME} |
${{ github.event.before }} |
push前のbaseブランチのコミットハッシュ | - |
すべてのコンテキスト情報
直感的にわかるような変数ではない。
要するにここを読んでやりたいことをやる必要がある。
と理解した。
Discussion