🦀

【Flutter】アプリバージョン変更時に自動でGit Tagをつける

2024/12/15に公開

はじめに

今までFlutterアプリの開発をgitで管理しているとき、アプリのバージョンを変更したときにそのバージョン名でgit tagを手動で作っていました。

今回、この作業をGithub Actionsで自動化すれば便利なのでは?と思い、実際に作ってみました。

作成したworkflow

.github/workflows/create_version_tag.yaml
name: Create App Version's Git Tag

on:
  push:
    branches:
      - main

jobs:
  create-version-tag:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: "Check app version"
        run: |
          echo "v$(yq '.version' pubspec.yaml)" | awk -F'[+]' '{print $1}' > TAG_NAME
          echo "TAG_NAME=$(cat TAG_NAME)" >> $GITHUB_ENV
          git ls-remote --tags | grep "$(cat TAG_NAME)$" > TAG_GREP || echo "" > TAG_GREP
          echo "TAG_GREP=$(cat TAG_GREP)" >> $GITHUB_ENV
      - name: "Create Git tag if not exist"
        if: env.TAG_GREP == ''
        run: |
          git tag '${{ env.TAG_NAME }}'
          git push origin '${{ env.TAG_NAME }}'

リポジトリのルート直下にpubspec.yamlがある想定です。
上記のworkflowを追加すると、例えば

version: 0.1.0+1

と記述されているpubspec.yamlをmainブランチにpushした時、「v0.1.0」のタグが存在しなければ自動で作成してくれます。
pubspec.yamlのversionはアプリをリリースしたいタイミングで変更することが多いと思いますが、そのタイミングで自動でgit tagを付けてくれるようになるわけです。

「0.1.0+1」を「v0.1.0」のタグ名に変換しているのは

echo "v$(yq '.version' pubspec.yaml)" | awk -F'[+]' '{print $1}' > TAG_NAME

の部分ですので、お好みに合わせて変更して使用していただければと思います。
(※注)yqコマンドはUbuntu 20.04以降で標準搭載らしいです。

おわりに

アプリリリースのタイミングだ、アプリのバージョン変えるぞ、ついでにgitのtag付けて残しておくぞ、と開発を進めるのが常だったのでその作業を自動化できるようになったのはありがたい。。。Github Actionsで他にももっと便利に開発を進められるようにしたいです。

参考文献

Discussion