2.7 KiB
coa-pack
Bundles every Exiles/coa-* addon's latest Gitea release into one
ExilesPack-<YYYY.MM.DD>.zip for guildies. This repo is not itself an addon;
it's the pack builder.
The output zip unpacks straight into Interface/AddOns/ - every entry at the
top level of the zip is an addon folder.
Cut a release
git tag 2026.05.25
git push --tags
The .gitea/workflows/release.yml workflow picks up any tag starting with
20*, runs tools/build_pack.sh --tag <tag>, and attaches the resulting
ExilesPack-<tag>.zip to a Gitea release.
The pack lands at git.sub-net.at/Exiles/coa-pack/releases.
Build locally
bash tools/build_pack.sh # ExilesPack-<UTC date>.zip
bash tools/build_pack.sh --tag 2026.05.25
Produces dist/ExilesPack-*.zip and prints a summary (addon count, size,
sha256, repos included/skipped).
Dependencies: bash, curl, jq, unzip, zip. No yq.
Peek at what's currently included
bash tools/list_releases.sh
Lists every include: true repo in manifest.yaml with its latest release
tag (or (no releases)). Pure read-only against the public Gitea API.
manifest.yaml
Controls which repos go in the pack. Format:
addons:
- repo: coa-decursive
include: true
- repo: coa-ace3
include: false
note: "Ace3 libs are already embedded inside each consuming fork."
include: true- fetch the latest release and unpack its zip assets into the pack.include: false- leave it out (libraries, repo-only utilities, not-yet-ready forks, etc.).
To add a new addon: append a - repo: coa-<name> block with include: true.
To drop one without deleting the entry, flip its flag to false (and add a
note: so the reason survives).
Asset selection rules
For each included repo, the builder grabs the latest release and chooses which zip(s) to extract:
- If a
<repo>-all.zipasset is present (umbrella zip with every addon folder side-by-side), use just that. - Otherwise, download every
*.zipasset attached to the release.
Each chosen zip is unpacked straight into staging/, where it should
produce one or more <AddonFolder>/ entries. The per-repo zips don't carry
repo metadata (.git, README.md, .gitea/), so the pack stays clean.
Failure modes
- Repo has no releases yet: warned and skipped (the pack still builds).
- Asset download fails: one retry, then warned and skipped.
- All repos skip: build errors out (
staging is empty).
This means cutting a pack release while some addons are still tagless will produce a smaller-than-final pack rather than a hard failure. Re-tag once all repos have shipped.
License
0BSD. Matches the rest of the Exiles addon repos.