Skip to content
Merged
Show file tree
Hide file tree
Changes from 11 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -29,3 +29,13 @@ Explorer/Assets/StreamingAssets/AssetBundles/**/*.meta -filter=lfs -diff=lfs -me
*.asset binary
*.controller binary
*.asset text diff=yaml merge=yaml

# Root-level compiler rsp files must check out byte-identical to what
# scripts/generate-ignore-warnings.sh writes (LF), or its drift check rewrites
# them on CRLF-converting builders and re-triggers a Bee DAG rebuild.
Explorer/Assets/*.rsp text eol=lf

# Shell scripts must check out LF everywhere: CRLF-converting Windows builders
# fail them with "$'\r': command not found" (seen on every Windows cloud build
# running the UBA preBuildScript).
*.sh text eol=lf
4 changes: 3 additions & 1 deletion .github/workflows/build-release-main-page.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,9 @@ jobs:
uses: dawidd6/action-download-artifact@v6
with:
run_id: ${{ github.event.workflow_run.id }}
name: Decentraland_.*
# Anchored to the four player zips: Decentraland_.* also matched the multi-GB
# *_debug_symbols artifacts, downloading them only to discard them.
name: Decentraland_(windows64|macos)(_epic)?$
Comment thread
mikhail-dcl marked this conversation as resolved.
name_is_regexp: true
skip_unpack: true

Expand Down
38 changes: 24 additions & 14 deletions .github/workflows/build-unitycloud.yml
Original file line number Diff line number Diff line change
Expand Up @@ -573,6 +573,7 @@ jobs:
POLL_TIME: 60
QUEUE_POLL_TIME: 120
STALE_POLL_THRESHOLD: 600
LOG_STALL_THRESHOLD: 900
QUEUE_TIMEOUT: 14400
BUILD_TIMEOUT: 10800
TARGET: t_${{ matrix.target }}
Expand All @@ -599,6 +600,19 @@ jobs:
PARAM_IS_RELEASE_BUILD: ${{ inputs.is_release_build }}
PARAM_UNITY_EXTRA_PARAMS: '-disable-assembly-updater'

# Must run before any always() log/report steps: on cancellation GitHub grants a 5-minute
# grace window, and the DELETE that frees the Unity-side queue slot has to win that race
# (a large-log upload ahead of it can eat the whole window). Also runs on failure() so an
# outer-step timeout doesn't leave a Unity-side build holding a slot.
- name: Cancel Unity Cloud build
if: ${{ cancelled() || failure() }}
timeout-minutes: 2
env:
API_KEY: ${{ secrets.UNITY_CLOUD_API_KEY }}
ORG_ID: ${{ secrets.UNITY_CLOUD_ORG_ID }}
PROJECT_ID: ${{ secrets.UNITY_CLOUD_PROJECT_ID }}
run: python -u scripts/cloudbuild/build.py --cancel || true

- name: Locate Windows main executable
if: matrix.target == 'windows64' && (inputs.is_release_build == true || github.event.inputs.force_sign == 'true')
run: |
Expand Down Expand Up @@ -877,14 +891,19 @@ jobs:
echo "[${ARTIFACT_URL}](${ARTIFACT_URL})"
} >> "$GITHUB_STEP_SUMMARY"

# Symbol artifacts have no downstream consumer (Sentry uploads from the on-disk build/
# folder below; release drafting attaches only the player zips) — keep them only where a
# human might need post-hoc symbolication, and never at default retention.
- name: Upload debug symbols
if: ${{ inputs.is_release_build == true }}
uses: actions/upload-artifact@v6
with:
name: ${{ env.artifact_name }}_debug_symbols
path: |
build/**/*_BackUpThisFolder_ButDontShipItWithYourGame
build/**/*_BurstDebugInformation_DoNotShip
if-no-files-found: error
retention-days: 7

- name: Upload debug symbols to Sentry
if: ${{ needs.prebuild.outputs.sentry_enabled == 'true' }}
Expand All @@ -899,22 +918,22 @@ jobs:
--project "$SENTRY_PROJECT" \
"build"

# Will run always (even if failing)
# Runs even on failure, but only once a log actually exists (a run cancelled in-queue
# never writes one, and a guaranteed-failing upload would burn the cancellation grace window).
- name: Upload cloud logs
if: always()
if: ${{ always() && hashFiles('unity_cloud_log.log') != '' }}
uses: actions/upload-artifact@v6
with:
name: ${{ matrix.target }}_${{ needs.prebuild.outputs.install_source }}_unity_log
path: unity_cloud_log.log
if-no-files-found: error

# Will run always (even if failing)
- name: Print cloud logs
if: always()
if: ${{ always() && hashFiles('unity_cloud_log.log') != '' }}
run: cat unity_cloud_log.log

- name: Extract and display errors
if: always()
if: ${{ always() && hashFiles('unity_cloud_log.log') != '' }}
run: |
echo "=== Extracted Errors for ${{ matrix.target }} ${{ needs.prebuild.outputs.install_source }} ==="
grep -iE "error c|fatal" unity_cloud_log.log | sed 's/^/\x1b[31m/' | sed 's/$/\x1b[0m/' || echo "No 'error c' or 'fatal' errors found in ${{ matrix.target }} log."
Expand All @@ -931,15 +950,6 @@ jobs:
path: shader_compilation_report.log
if-no-files-found: warn

# Also runs on failure() so an outer-step timeout doesn't leave a Unity-side build holding a slot.
- name: Cancel Unity Cloud build
if: ${{ cancelled() || failure() }}
env:
API_KEY: ${{ secrets.UNITY_CLOUD_API_KEY }}
ORG_ID: ${{ secrets.UNITY_CLOUD_ORG_ID }}
PROJECT_ID: ${{ secrets.UNITY_CLOUD_PROJECT_ID }}
run: python -u scripts/cloudbuild/build.py --cancel || true

build-gate:
name: Build Gate (Windows + macOS)
runs-on: ubuntu-latest
Expand Down
31 changes: 31 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ on:
pull_request:
paths:
- 'Explorer/**'
# The rsp-drift job must run when the generator changes, or drift merges unnoticed.
- 'scripts/generate-ignore-warnings.sh'
types:
- opened
- reopened
Expand Down Expand Up @@ -36,6 +38,35 @@ concurrency:

jobs:

# The committed Explorer/Assets/*.rsp files must stay byte-identical to what
# generate-ignore-warnings.sh produces: on drift the preBuildScript rewrites them
# on every cloud build, and the Bee DAG rebuild (~4.5 min per build) silently returns.
rsp-drift:
name: rsp files match generator
runs-on: ubuntu-latest
timeout-minutes: 5
permissions:
contents: read
steps:
- name: Checkout code
uses: actions/checkout@v6
with:
ref: ${{ github.event.pull_request.head.sha || github.sha }}

- name: Regenerate rsp files and fail on drift
run: |
set -euo pipefail
bash scripts/generate-ignore-warnings.sh
# git status --porcelain (not `git diff`) so a newly added, still-untracked
# rsp file also counts as drift.
drift=$(git status --porcelain -- 'Explorer/Assets/*.rsp')
if [[ -n "$drift" ]]; then
echo "Committed rsp files differ from generate-ignore-warnings.sh output:"
echo "$drift"
git diff -- 'Explorer/Assets/*.rsp'
exit 1
fi

changes:
if: (github.event_name == 'push' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/dev')) || (github.event.pull_request.draft == false) || (github.event.label.name == 'force-build') || (github.event.label.name == 'clean-build') || (github.event.label.name == 'force-lint')
name: Detect C# changes
Expand Down
14 changes: 14 additions & 0 deletions Explorer/Assets/csc.rsp
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
-nowarn:8618
Comment thread
mikhail-dcl marked this conversation as resolved.
-nowarn:8625
-nowarn:8602
-nowarn:8604
-nowarn:8619
-nowarn:8620
-nowarn:8603
-nowarn:8600
-nowarn:8601
-nowarn:0649
-nowarn:0414
-nowarn:0168
-nowarn:0219
-nowarn:8632
7 changes: 7 additions & 0 deletions Explorer/Assets/csc.rsp.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 14 additions & 0 deletions Explorer/Assets/gmcs.rsp
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
-nowarn:8618
-nowarn:8625
-nowarn:8602
-nowarn:8604
-nowarn:8619
-nowarn:8620
-nowarn:8603
-nowarn:8600
-nowarn:8601
-nowarn:0649
-nowarn:0414
-nowarn:0168
-nowarn:0219
-nowarn:8632
7 changes: 7 additions & 0 deletions Explorer/Assets/gmcs.rsp.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 14 additions & 0 deletions Explorer/Assets/mcs.rsp
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
-nowarn:8618
-nowarn:8625
-nowarn:8602
-nowarn:8604
-nowarn:8619
-nowarn:8620
-nowarn:8603
-nowarn:8600
-nowarn:8601
-nowarn:0649
-nowarn:0414
-nowarn:0168
-nowarn:0219
-nowarn:8632
7 changes: 7 additions & 0 deletions Explorer/Assets/mcs.rsp.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 14 additions & 0 deletions Explorer/Assets/smcs.rsp
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
-nowarn:8618
-nowarn:8625
-nowarn:8602
-nowarn:8604
-nowarn:8619
-nowarn:8620
-nowarn:8603
-nowarn:8600
-nowarn:8601
-nowarn:0649
-nowarn:0414
-nowarn:0168
-nowarn:0219
-nowarn:8632
7 changes: 7 additions & 0 deletions Explorer/Assets/smcs.rsp.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

14 changes: 14 additions & 0 deletions Explorer/Assets/us.rsp
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
-nowarn:8618
-nowarn:8625
-nowarn:8602
-nowarn:8604
-nowarn:8619
-nowarn:8620
-nowarn:8603
-nowarn:8600
-nowarn:8601
-nowarn:0649
-nowarn:0414
-nowarn:0168
-nowarn:0219
-nowarn:8632
7 changes: 7 additions & 0 deletions Explorer/Assets/us.rsp.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading