mainブランチを releaseブランチにマージするとGooglePlayに配布するのはすでに組んでいたが、build.gradle.kts
の versionCode
と versionName
を書き換えて git-pr-release
するという手順を毎回手動でやってたので、「そろそろなんとかするか。。。」ということで対応したという話。
使うやつ
github actionsにワークフローを手動実行するやつがあるのでそれを使う。
Manually running a workflow - GitHub Docs作ったworkflowの紹介
手動実行する際にやることはここでversionをいれるだけ、ちなみに Semverでやってるがパッチバージョンを毎回インクリメントするのが面倒なので、年月日時(2023/05/14の12時なら 23051412
)とかにした。
メジャーとマイナーバージョンを上げる必要がなければ、常に Run workflowするだけで良いということで楽ちんである。
RunするとCIが始まる。
CIがPassするとこんな感じでPRが作成される。
内容を確認してOKそうならマージするとGooglePlayに内部用早期アクセスとしてアップロードされて端末側に降ってくる。
今後別のAndroidアプリを作るときもそのまま使えるのでこういうのを作っておくのは、地味に大事。
workflowのyaml
以下が、github actionsのworkflowを組んだyamlのすべて。多分よくある普通のAndroid App構成ならコピペしてそのまま使えると思う。
name: Release Dispatch
on:
workflow_dispatch:
inputs:
version:
description: 'Version'
required: true
default: '0.9'
type: string
jobs:
release_dispatch:
timeout-minutes: 15
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-ruby@v1
with:
ruby-version: 3.1
- run: gem install --no-document git-pr-release
- name: Modify versionCode And versionName of build.gradle.kts
run: |
export VERSION_CODE="$(env TZ=Asia/Tokyo date +%y%m%d%H)"
export VERSION_NAME="${VERSION}.${VERSION_CODE}"
echo "VersionCode: ${VERSION_CODE}"
echo "VersionName: ${VERSION_NAME}"
# Setup git identity
git config --global user.email "[email protected]"
git config --global user.name "gh-workflow-release"
# app/build.gradle.ktsを書き換えて、上書き保存する
sed -i -e 's/versionCode = .*/versionCode = '${VERSION_CODE}'/' app/build.gradle.kts
sed -i -e 's/versionName = .*/versionName = "'${VERSION_NAME}'"/' app/build.gradle.kts
# git commitしてmainブランチにpushする
git add -u && git commit -m "Fix Version ${VERSION_CODE}" && git push -u origin main
# git-pr-releaseを実行する
git-pr-release
env:
VERSION: ${{ inputs.version }}
GIT_PR_RELEASE_TOKEN: ${{ secrets.GITHUB_TOKEN }}