Skip unchanged Addressables in Unity builds (#7255)

This commit is contained in:
2026-06-15 10:06:35 -07:00
committed by GitHub
parent 9a54732fae
commit 31d41fbff9
8 changed files with 185 additions and 72 deletions
+33 -29
View File
@@ -158,46 +158,28 @@ jobs:
- name: Sync Bazel Xcode config
run: ./scripts/sync_bazel_xcode.sh
- name: Build Mac Unity
run: ./ci/github_actions/build_unity_mac.sh "${{ env.EAGLE0_BUILD_DIR }}/eagle0MAC"
- name: Save build SHA for Bee/ cache invalidation
if: success()
run: |
mkdir -p src/main/csharp/net/eagle0/clients/unity/eagle0/Library
git rev-parse HEAD > src/main/csharp/net/eagle0/clients/unity/eagle0/Library/.last_built_sha
- name: Check if should deploy
id: check-deploy
run: |
if [[ "${{ github.event_name }}" == "workflow_dispatch" && "${{ github.event.inputs.skip_signing }}" == "true" ]]; then
echo "should_deploy=false" >> $GITHUB_OUTPUT
elif [[ "${{ github.event_name }}" == "push" && "${{ github.ref }}" == "refs/heads/main" ]]; then
echo "should_deploy=true" >> $GITHUB_OUTPUT
elif [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
echo "should_deploy=true" >> $GITHUB_OUTPUT
else
echo "should_deploy=false" >> $GITHUB_OUTPUT
fi
- name: Detect Addressables changes
id: addressables
if: success() && steps.check-deploy.outputs.should_deploy == 'true'
if: success()
shell: bash
run: |
set -euo pipefail
BASE_SHA="${{ github.event.before }}"
if [[ "${{ github.event_name }}" == "pull_request" ]]; then
BASE_SHA="${{ github.event.pull_request.base.sha }}"
else
BASE_SHA="${{ github.event.before }}"
fi
HEAD_SHA="${{ github.sha }}"
if [ -z "$BASE_SHA" ] || [[ "$BASE_SHA" =~ ^0+$ ]]; then
echo "No usable base SHA for this run; uploading Addressables as a safe default."
echo "No usable base SHA for this run; building Addressables as a safe default."
echo "changed=true" >> "$GITHUB_OUTPUT"
exit 0
fi
if ! git cat-file -e "$BASE_SHA^{commit}"; then
echo "Base SHA $BASE_SHA is not available locally; uploading Addressables as a safe default."
echo "Base SHA $BASE_SHA is not available locally; building Addressables as a safe default."
echo "changed=true" >> "$GITHUB_OUTPUT"
exit 0
fi
@@ -235,13 +217,35 @@ jobs:
done < <(git diff --name-only "$BASE_SHA" "$HEAD_SHA")
if [ "$changed" = "true" ]; then
echo "Uploading Addressables because their inputs changed."
echo "Building Addressables because their inputs changed."
else
echo "Skipping Addressables upload; no Addressables inputs changed."
echo "Skipping Addressables build; no Addressables inputs changed."
fi
echo "changed=$changed" >> "$GITHUB_OUTPUT"
- name: Build Mac Unity
run: ./ci/github_actions/build_unity_mac.sh "${{ env.EAGLE0_BUILD_DIR }}/eagle0MAC" "${{ steps.addressables.outputs.changed }}" "${{ steps.addressables.outputs.changed }}"
- name: Save build SHA for Bee/ cache invalidation
if: success()
run: |
mkdir -p src/main/csharp/net/eagle0/clients/unity/eagle0/Library
git rev-parse HEAD > src/main/csharp/net/eagle0/clients/unity/eagle0/Library/.last_built_sha
- name: Check if should deploy
id: check-deploy
run: |
if [[ "${{ github.event_name }}" == "workflow_dispatch" && "${{ github.event.inputs.skip_signing }}" == "true" ]]; then
echo "should_deploy=false" >> $GITHUB_OUTPUT
elif [[ "${{ github.event_name }}" == "push" && "${{ github.ref }}" == "refs/heads/main" ]]; then
echo "should_deploy=true" >> $GITHUB_OUTPUT
elif [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
echo "should_deploy=true" >> $GITHUB_OUTPUT
else
echo "should_deploy=false" >> $GITHUB_OUTPUT
fi
- name: Zip unsigned app for deploy
if: success() && steps.check-deploy.outputs.should_deploy == 'true'
run: |
@@ -273,7 +277,7 @@ jobs:
path: ${{ env.EAGLE0_BUILD_DIR }}/editor_mac.log
retention-days: 3
- name: Archive Addressables build reports
if: success() || failure()
if: (success() || failure()) && steps.addressables.outputs.changed == 'true'
uses: actions/upload-artifact@v7
with:
name: mac-addressables-build-reports
+25 -21
View File
@@ -256,39 +256,29 @@ jobs:
dotnet-version: '8.0.x'
- name: Ensure Bazel installed
uses: ./.github/actions/setup-bazel
- name: Build Windows unity
run: ./ci/github_actions/build_unity.sh "${{ env.EAGLE0_BUILD_DIR }}/eagle0WIN"
- name: Save build SHA for Bee/ cache invalidation
if: success()
run: |
mkdir -p src/main/csharp/net/eagle0/clients/unity/eagle0/Library
git rev-parse HEAD > src/main/csharp/net/eagle0/clients/unity/eagle0/Library/.last_built_sha
- name: Save Unity version for Library/ cache invalidation
if: success()
run: |
mkdir -p src/main/csharp/net/eagle0/clients/unity/eagle0/Library
grep "m_EditorVersion:" src/main/csharp/net/eagle0/clients/unity/eagle0/ProjectSettings/ProjectVersion.txt | head -1 | sed 's/m_EditorVersion: //' > src/main/csharp/net/eagle0/clients/unity/eagle0/Library/.last_unity_version
- name: Detect Addressables changes
id: addressables
if: success() && github.ref == 'refs/heads/main' && github.event_name != 'pull_request'
if: success()
shell: bash
run: |
set -euo pipefail
BASE_SHA="${{ github.event.before }}"
if [[ "${{ github.event_name }}" == "pull_request" ]]; then
BASE_SHA="${{ github.event.pull_request.base.sha }}"
else
BASE_SHA="${{ github.event.before }}"
fi
HEAD_SHA="${{ github.sha }}"
if [ -z "$BASE_SHA" ] || [[ "$BASE_SHA" =~ ^0+$ ]]; then
echo "No usable base SHA for this run; uploading Addressables as a safe default."
echo "No usable base SHA for this run; building Addressables as a safe default."
echo "changed=true" >> "$GITHUB_OUTPUT"
exit 0
fi
if ! git cat-file -e "$BASE_SHA^{commit}"; then
echo "Base SHA $BASE_SHA is not available locally; uploading Addressables as a safe default."
echo "Base SHA $BASE_SHA is not available locally; building Addressables as a safe default."
echo "changed=true" >> "$GITHUB_OUTPUT"
exit 0
fi
@@ -326,12 +316,26 @@ jobs:
done < <(git diff --name-only "$BASE_SHA" "$HEAD_SHA")
if [ "$changed" = "true" ]; then
echo "Uploading Addressables because their inputs changed."
echo "Building Addressables because their inputs changed."
else
echo "Skipping Addressables upload; no Addressables inputs changed."
echo "Skipping Addressables build; no Addressables inputs changed."
fi
echo "changed=$changed" >> "$GITHUB_OUTPUT"
- name: Build Windows unity
run: ./ci/github_actions/build_unity.sh "${{ env.EAGLE0_BUILD_DIR }}/eagle0WIN" "${{ steps.addressables.outputs.changed }}" "${{ steps.addressables.outputs.changed }}"
- name: Save build SHA for Bee/ cache invalidation
if: success()
run: |
mkdir -p src/main/csharp/net/eagle0/clients/unity/eagle0/Library
git rev-parse HEAD > src/main/csharp/net/eagle0/clients/unity/eagle0/Library/.last_built_sha
- name: Save Unity version for Library/ cache invalidation
if: success()
run: |
mkdir -p src/main/csharp/net/eagle0/clients/unity/eagle0/Library
grep "m_EditorVersion:" src/main/csharp/net/eagle0/clients/unity/eagle0/ProjectSettings/ProjectVersion.txt | head -1 | sed 's/m_EditorVersion: //' > src/main/csharp/net/eagle0/clients/unity/eagle0/Library/.last_unity_version
- name: Upload Windows player for deploy
if: success() && github.ref == 'refs/heads/main' && github.event_name != 'pull_request'
@@ -372,7 +376,7 @@ jobs:
path: ${{ env.EAGLE0_BUILD_DIR }}/editor_win.log
retention-days: 3
- name: Archive Addressables build reports
if: success() || failure()
if: (success() || failure()) && steps.addressables.outputs.changed == 'true'
uses: actions/upload-artifact@v7
with:
name: windows-addressables-build-reports