Run build #257
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Run build | |
on: | |
workflow_dispatch: | |
inputs: | |
build_windows: | |
description: 'Build for Windows' | |
required: true | |
default: true | |
type: boolean | |
build_mac: | |
description: 'Build for macOS' | |
required: true | |
default: true | |
type: boolean | |
pull_request: | |
branches: | |
- main | |
types: [opened, synchronize, reopened] | |
schedule: | |
- cron: '0 0 * * *' # 毎日UTCで午前0時に実行 | |
jobs: | |
check-branch: | |
runs-on: ubuntu-latest | |
outputs: | |
current_version: ${{ steps.check_branch.outputs.current_version }} | |
steps: | |
- uses: actions/[email protected] | |
with: | |
fetch-depth: 0 # すべての履歴とタグを取得 | |
- name: Check event type and branch | |
id: check_branch | |
run: | | |
echo "イベント名: ${{ github.event_name }}" | |
# ProjectSettings.assetから現在のバージョンを取得 | |
current_version=$(grep -m1 'bundleVersion:' ProjectSettings/ProjectSettings.asset | awk '{print $2}') | |
echo "current_version=${current_version}" >> $GITHUB_OUTPUT | |
if [ "${{ github.event_name }}" == "pull_request" ]; then | |
echo "これはプルリクエストイベントです。" | |
echo "PRのソースブランチ: ${{ github.head_ref }}" | |
echo "PRのターゲットブランチ: ${{ github.base_ref }}" | |
if [ "${{ github.head_ref }}" == "develop" ] && [ "${{ github.base_ref }}" == "main" ]; then | |
echo "これは 'develop' から 'main' へのPRです。バージョンチェックを実行します。" | |
# gitからバージョンタグのリストを取得 | |
git fetch --tags | |
version_tags=$(git tag -l 'v*' | grep -v '^v99\.99\.99$') | |
echo "既存のバージョンタグ: $version_tags" | |
# タグからバージョン番号を抽出 | |
versions=() | |
for tag in $version_tags; do | |
versions+=("${tag#v}") | |
done | |
if [ ${#versions[@]} -eq 0 ]; then | |
highest_version="0.0.0" | |
else | |
highest_version=$(printf '%s\n' "${versions[@]}" | sort -V | tail -n1) | |
fi | |
echo "最高の既存バージョン: $highest_version" | |
# 現在のバージョンと最高の既存バージョンを比較 | |
if [ "$(printf '%s\n' "$highest_version" "$current_version" | sort -V | tail -n1)" != "$current_version" ]; then | |
echo "エラー: 現在のバージョン ($current_version) は最高の既存バージョン ($highest_version) よりも高くありません。" | |
exit 1 | |
else | |
echo "現在のバージョン ($current_version) は最高の既存バージョン ($highest_version) よりも高いです。" | |
fi | |
else | |
echo "これは 'develop' から 'main' へのPRではありません。バージョンチェックをスキップします。" | |
fi | |
else | |
echo "プルリクエストイベントではありません。チェックをスキップします。" | |
fi | |
build-windows: | |
if: ${{ github.event_name == 'pull_request' || github.event_name == 'schedule' || inputs.build_windows }} | |
needs: [check-branch] | |
runs-on: windows-latest | |
steps: | |
- name: Check out my unity project. | |
uses: actions/[email protected] | |
- name: Create LFS file list | |
run: git lfs ls-files -l | cut -d' ' -f1 | sort > .lfs-assets-id | |
- name: Restore LFS cache | |
uses: actions/[email protected] | |
id: lfs-cache | |
with: | |
path: .git/lfs | |
key: ${{ runner.os }}-lfs-${{ hashFiles('.lfs-assets-id') }} | |
- name: Git LFS Pull | |
run: | | |
git lfs pull | |
git add . | |
git reset --hard | |
- uses: actions/[email protected] | |
with: | |
path: Library | |
key: Library-${{ hashFiles('Assets/**', 'Packages/**', 'ProjectSettings/**') }} | |
restore-keys: | | |
Library- | |
- name: Run the build for StandaloneWindows64 | |
uses: game-ci/[email protected] | |
env: | |
UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }} | |
UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} | |
UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }} | |
with: | |
targetPlatform: StandaloneWindows64 | |
unityVersion: '6000.0.31f1' | |
buildName: 'uDesktopMascot' | |
versioning: Custom | |
version: ${{ needs.check-branch.outputs.current_version }} | |
- name: Update setup.iss | |
if: ${{ github.event_name != 'pull_request' && github.ref != 'refs/heads/develop' }} | |
shell: bash | |
run: | | |
git config --global user.name "github-actions" | |
git config --global user.email "[email protected]" | |
# 変更の有無をチェック | |
if [ -z "$(git status --porcelain setup.iss)" ]; then | |
echo "setup.issに変更はありません" | |
exit 0 | |
fi | |
# ブランチ名を取得 | |
if [ "${{ github.event_name }}" == "pull_request" ]; then | |
TARGET_BRANCH="${{ github.base_ref }}" # refs/heads/main | |
SOURCE_BRANCH="${{ github.head_ref }}" # refs/heads/develop | |
else | |
TARGET_BRANCH="${{ github.ref }}" # refs/heads/current-branch | |
SOURCE_BRANCH="${{ github.ref }}" | |
fi | |
# refs/heads/プレフィックスを除去 | |
TARGET_BRANCH=${TARGET_BRANCH#refs/heads/} | |
SOURCE_BRANCH=${SOURCE_BRANCH#refs/heads/} | |
# 現在の変更をスタッシュに保存 | |
git stash push -u -m "temp setup.iss changes" | |
# ソースブランチを直接チェックアウト | |
git fetch origin $SOURCE_BRANCH | |
git checkout $SOURCE_BRANCH | |
git pull origin $SOURCE_BRANCH | |
# スタッシュから変更を復元 | |
git stash pop | |
git add setup.iss | |
if ! git diff --cached --quiet; then | |
git commit -m "Update setup.iss" | |
git push origin $SOURCE_BRANCH | |
else | |
echo "変更が競合解決後に消失しました" | |
fi | |
- name: Change build folder name | |
run: | | |
cd build | |
mv "StandaloneWindows64" "uDesktopMascot" | |
cd .. | |
- name: Upload the Build for StandaloneWindows64 | |
uses: actions/[email protected] | |
with: | |
name: Build-StandaloneWindows64-v${{ needs.check-branch.outputs.current_version }} | |
path: build/uDesktopMascot | |
- name: Set up Inno Setup | |
uses: Minionguyjpro/[email protected] | |
with: | |
path: 'setup.iss' | |
- name: Upload Installer | |
uses: actions/[email protected] | |
with: | |
name: uDesktopMascot_win64_installer_v${{ needs.check-branch.outputs.current_version }} | |
path: "uDesktopMascot_win64_installer_v${{ needs.check-branch.outputs.current_version }}.exe" | |
build-mac: | |
if: ${{ github.event_name == 'pull_request' || github.event_name == 'schedule' || inputs.build_mac }} | |
needs: [check-branch] | |
runs-on: macos-latest | |
steps: | |
- name: Check out my unity project. | |
uses: actions/[email protected] | |
- name: Create LFS file list | |
run: git lfs ls-files -l | cut -d' ' -f1 | sort > .lfs-assets-id | |
- name: Restore LFS cache | |
uses: actions/[email protected] | |
id: lfs-cache | |
with: | |
path: .git/lfs | |
key: ${{ runner.os }}-lfs-${{ hashFiles('.lfs-assets-id') }} | |
- name: Git LFS Pull | |
run: | | |
git lfs pull | |
git add . | |
git reset --hard | |
- uses: actions/[email protected] | |
with: | |
path: Library | |
key: Library-${{ hashFiles('Assets/**', 'Packages/**', 'ProjectSettings/**') }} | |
restore-keys: | | |
Library- | |
- name: Run the build for StandaloneOSX | |
uses: game-ci/[email protected] | |
env: | |
UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }} | |
UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} | |
UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }} | |
with: | |
targetPlatform: StandaloneOSX | |
unityVersion: '6000.0.31f1' | |
buildName: 'uDesktopMascot' | |
versioning: Custom | |
version: ${{ needs.check-branch.outputs.current_version }} | |
- name: Change build folder name | |
run: | | |
cd build | |
mv "StandaloneOSX" "uDesktopMascot" | |
cd .. | |
- name: Upload the Build for StandaloneOSX | |
uses: actions/[email protected] | |
with: | |
name: Build-StandaloneOSX-v${{ needs.check-branch.outputs.current_version }} | |
path: build/uDesktopMascot | |
- name: Set up Installer | |
run: | | |
cd build | |
productbuild --component uDesktopMascot/uDesktopMascot.app /Applications ./uDesktopMascot_mac_installer_v${{ needs.check-branch.outputs.current_version }}.pkg | |
- name: Upload Installer | |
uses: actions/[email protected] | |
with: | |
name: uDesktopMascot_mac_installer_v${{ needs.check-branch.outputs.current_version }} | |
path: build/uDesktopMascot_mac_installer_v${{ needs.check-branch.outputs.current_version }}.pkg |