【GithubActions】特定のブランチでのみ処理を実施したい場合にif文で分岐させるやり方
経緯
GithubActionsであるブランチへのPusu(PR)時のみ実施したい処理というのがいくつか出てきた
とはいえ、ブランチごとにymlファイルを作っちゃうと、変更するときの影響範囲が大きくなるのでやりたくない
一つのファイルの中で分岐させるようにしたい
方法
結論、containsやendsWithを利用することで条件分岐をさせることができる
ブランチの情報はgithub.refやgithub.base_refで取得できる
github.ref
Push時のブランチ名を取得することができます
そのままブランチ名が出てくるわけではなく、refs/heads/(ブランチ名)という値になっています (タグのときはrefs/tags/(ブランチ名)となるようです)
なので、末尾が一致しているかどうかを判定するendsWithを使うことでチェックを行います
github.base_ref
PullRequest先のブランチ名を取得できます
これはgithub.refとちがってブランチ名をそのまま取得することができます
こちらはそのままイコールで比較すればいいんですが、めんどうなので同じようにendsWith使っています
endsWithとcontains
endsWithは上記のとおりですが、今回の私のケースだと末尾がバージョンになっていて、毎回名前が変わるという状況でした(例:release/〇〇.〇〇)
その時は文字列が含まれているかどうかを確認するcontainsを用います
この2つ以外にも、頭を比較するstartsWithもあります
サンプル
name: ANDROID_CI
on:
push:
branches:
- develop
- release/**
- master
pull_request:
branches:
- develop
- release/**
- master
paths-ignore:
- .idea/**
- README.md
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: only release and master
if: contains(github.ref, '/release') || contains(github.base_ref , 'release') || endsWith(github.ref, '/master') || endsWith(github.base_ref , 'master')
run: (実施したい処理)
まとめ
よくあるケースだとは思うのですが、案外調べて引っかからなかったので今回備忘録としてまとめておきました
お役に立てると幸いです
今回も最後まで見てくださってありがとうございました