12 Free GitHub Actions Concurrency Group Patterns That Wont Corrupt Unity Addressables Builds (2026)
<span style="font-weight: 600;">October–November 2026</span> Unity teams add <span style="font-style: italic;">concurrency: cancel-in-progress</span> to stop duplicate CI—then lint and Addressables player builds share one <span style="font-weight: 600;">group</span>. Cancel mid-catalog poisons <span style="font-style: italic;">Library/</span> while the next job stays green. This bookmark stack separates <span style="font-weight: 600;">official concurrency docs</span> from <span style="font-weight: 600;">cleanup CLIs</span> and GamineAI gates for <span style="font-style: italic;">ci_cancel_safe_receipt_v1.json</span>.<br><span style="color: #6366f1; font-weight: 600;">Beginner start:</span> GitHub concurrency docs + the twelve-pattern listicle; <span style="color: #059669; font-weight: 600;">Developer path:</span> never share one group between fast jobs and Addressables packaging—add post-cancel <span style="font-style: italic;">rm -rf Library</span>.
GitHub Docs — Using concurrency
Official DocsOfficial concurrency reference—workflow- and job-level group + cancel-in-progress semantics.
CTA: never share one group between lint and player packaging
GitHub Docs — Workflow syntax (concurrency)
Official DocsYAML field map—where concurrency sits on workflow vs job; expressions for branch filters.
Pro tip: Addressables-exclusive job with cancel-in-progress: false
actions/checkout
Official ActionFresh workspace after cancel—pair with Library wipe so half-written caches are not the only poison vector.
Fail when: cancel weeks skip clean checkout
actions/cache
Official ActionLibrary restore lane—cousin to cancel poison; bust keys after group moves (Resource false-green list).
Contrast: concurrency owns cancel boundaries; cache owns ContentState hash
GameCI Unity Builder
Unity CIHeadless Unity packaging—run under a concurrency group that does not share lint cancel tokens.
Receipt: log job id in cancel_repro_log
GNU coreutils — rm
CLI ToolPost-cancel cleanup—rm -rf Library with if: always() after cancel-prone weeks.
Gate: Pattern 3 in the listicle cookbook
jq
CLI ToolReceipt gate—require ci_cancel_safe_ok / addressables_build_exclusive_ok before promote.
CI check: jq -e .ci_cancel_safe_ok
JSON Schema
ValidationReceipt validation—schema for ci_cancel_safe_receipt_v1.json with concurrency group map + cancel repro row.
Reject: missing split-group proof
Printable YAML cookbook—twelve safe patterns, receipt sample, weekly audit map.
Format ladder: blog = patterns; this list = bookmarks
Ninety-second X1–X6 gate—split groups, post-cancel cleanup, fail-closed exclusive Addressables job.
Run before: Lesson 268 promotion
GamineAI — Lesson 268 CI cancel BUILD_RECEIPT
Site CourseBUILD_RECEIPT milestone—promote ci_cancel_safe_receipt_v1.json after X1–X6.
Cousin: Lesson 261 cache-key column (not cancel)
GamineAI — False-green Library cache debug tools
Site ResourceCache-bust sibling list—AddressablesContentState hash + weekly no-cache when cancel is not the poison class.
Order: concurrency split → cache key → 3-day ladder