Clean Architecture, Clean Life

仕事・個人での技術的なことつぶやきます

【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に関してはなんのためにいるのかわかっていないですが、これがないと動かなかったです

参考:

blog.eiel.info

bash何もわからん

今回も最後まで見てくださってありがとうございました