【GithubActions】ブランチ名に特定の文字列が入っているかどうか確認する
経緯
私の携わっているプロジェクトでは、release/〇〇.〇〇みたいな感じでバージョンごとにブランチ切ってるんですが、ブランチに記載しているバージョンとgredleに記載しているバージョンが違うというケースが発生しました
まぁ原因は私のバージョン累進忘れなんですけどね・・・
ということで、バージョンチェックもActionsでやろうということになったので今回はそのお話です
サンプル
name: ANDROID_CI
on:
push:
branches:
- develop
- release/**
- master
pull_request:
branches:
- develop
- release/**
- master
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set env to develop
if: endsWith(github.ref, '/develop') || endsWith(github.base_ref , 'develop')
run: echo "FLAVOR=develop" >> $GITHUB_ENV
- name: Set env to release
if: contains(github.ref, '/release') || contains(github.base_ref , 'release')
# バージョン累進チェックを行う
run: |
if echo ${{github.ref}} | grep "${APK_VERSION}" > /dev/null || echo ${{github.base_ref}} | grep "${APK_VERSION}" > /dev/null ; then
echo "FLAVOR=release" >> $GITHUB_ENV
else
exit 1
fi
- name: Set env to production
if: endsWith(github.ref, '/master') || endsWith(github.base_ref , 'master')
run: echo "FLAVOR=prod" >> $GITHUB_ENV
...
このようにgrep検索を条件にすることで実現できます
検索結果がある場合はそのまま環境変数を設定する処理を行い、なかったら「exit 1」で強制終了
grep部の変数はなぜかクオーテーションつけないと「unary operator expected」というエラーが発生したので必須のようです
/dev/nullに関してはなんのためにいるのかわかっていないですが、これがないと動かなかったです
参考:
bash何もわからん
今回も最後まで見てくださってありがとうございました