概要
UnityアプリのBundle Version変更をGitHub Actionsから行えるようにするWorkflowの使い方を解説します。
このWorkflowを使うと、手動でバージョン番号を指定して更新したり、自動でバージョンを上げたりできます。
このActionsの便利なポイント
- 🎯 バージョン更新作業の自動化(人的ミス防止)
- 🔄 自動インクリメント機能搭載
- 🌿 リリースブランチの自動作成
- ✅ バージョン形式の自動チェック
- 🚫 重複ブランチの作成防止
GitHub上での操作
- GitHubのリポジトリに移動
- 「Actions」タブをクリック
- 左サイドバーから「Manual Bundle Version up」を選択
- 「Run workflow」(緑のボタン)をクリック
- バージョン指定方法を選択:
- 特定のバージョンにしたい場合:
x.x.x
形式で入力(例:1.2.3
) - ビルド番号だけ上げたい場合:空欄のまま実行
- 特定のバージョンにしたい場合:
実装コード
主要な部分を解説します:
.github/workflows/manual-bundle-version-up.yml
# versionup.yml
name: Manual Bundle Version up
# Action to manually update the app's Bundle Version
#
# If a version is specified, the Bundle Version will be set to that value
# If no version is specified, the current Bundle Version will be automatically incremented
on:
workflow_dispatch:
inputs:
version:
description: new app version x.x.x. if empty only the build number will be incremented
required: false
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Update version
id: version
run: |
# Function to validate version number format
validate_version() {
if [[ ! $1 =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
echo "Error: Invalid version format. Must be x.x.x"
exit 1
fi
}
if [ -n "${{ github.event.inputs.version }}" ]; then
validate_version "${{ github.event.inputs.version }}"
sed -i "s/bundleVersion: .*/bundleVersion: ${{ github.event.inputs.version }}/" ProjectSettings/ProjectSettings.asset
echo "version=${{ github.event.inputs.version }}" >> $GITHUB_OUTPUT
else
current_version=$(grep "bundleVersion:" ProjectSettings/ProjectSettings.asset | sed 's/.*bundleVersion: //')
if [ -z "$current_version" ]; then
echo "Error: Could not find current version"
exit 1
fi
new_version=$(echo $current_version | awk -F. '{$NF = $NF + 1;}1' OFS=.)
validate_version "$new_version"
sed -i "s/bundleVersion: .*/bundleVersion: $new_version/" ProjectSettings/ProjectSettings.asset
echo "version=$new_version" >> $GITHUB_OUTPUT
fi
- name: Git operations
run: |
# Store branch name in variable
branch_name="release-${{ steps.version.outputs.version }}"
# Check if branch with same name already exists
if git ls-remote --heads origin "$branch_name" | grep -q "$branch_name"; then
echo "Error: Branch $branch_name already exists"
exit 1
fi
git config --global user.name "bot"
git config --global user.email "bot@example.com"
git fetch -p
git checkout -b "$branch_name"
git add ProjectSettings/ProjectSettings.asset
git commit -m "Update version number to ${{ steps.version.outputs.version }}"
git push origin "$branch_name"
実行結果
-
release-{version}
という名前の新しいブランチが作成される -
ProjectSettings.asset
のバンドルバージョンが更新される - 変更が自動でコミット・プッシュされる
注意点
- バージョン番号は必ず
x.x.x
形式(例:1.0.0) - 同名のリリースブランチが既に存在する場合はエラー
- プロジェクト設定ファイルが自動で更新されるので、ローカルで作業中の場合は注意