ci: publish each Eco mod with scoped LFS assets #6

Closed
opened 2026-07-22 08:09:33 +00:00 by coilyco-ops · 3 comments
Member

Build the C# mod collection in the pinned AOS CI container, route NuGet through the Forgejo runner egress proxy, and publish one deterministic Forgejo generic package per Mods/UserCode mod. Each package job must fetch only its own Git LFS objects, fail if any LFS pointer remains in the archive input, preserve the install-ready Mods/UserCode/ layout, use the existing organization package token, and support workflow dispatch. CI must not materialize or rebuild the full Unity project.

Build the C# mod collection in the pinned AOS CI container, route NuGet through the Forgejo runner egress proxy, and publish one deterministic Forgejo generic package per Mods/UserCode mod. Each package job must fetch only its own Git LFS objects, fail if any LFS pointer remains in the archive input, preserve the install-ready Mods/UserCode/<Mod> layout, use the existing organization package token, and support workflow dispatch. CI must not materialize or rebuild the full Unity project.
Author
Member

Push run 5 failed only in the mods job after seven seconds. Root hygiene and secret scanning passed, and all nine package jobs correctly skipped behind the failed dependency. The workflow exported the runner proxy only inside the final dotnet step, while the earlier validate-ci Ward verb invokes uv to materialize the locked Python environment. The next correction moves HTTP_PROXY and HTTPS_PROXY into GITHUB_ENV before all dependency-bearing Ward commands, keeping checkout and internal Forgejo traffic direct.

Push run 5 failed only in the mods job after seven seconds. Root hygiene and secret scanning passed, and all nine package jobs correctly skipped behind the failed dependency. The workflow exported the runner proxy only inside the final dotnet step, while the earlier validate-ci Ward verb invokes uv to materialize the locked Python environment. The next correction moves HTTP_PROXY and HTTPS_PROXY into GITHUB_ENV before all dependency-bearing Ward commands, keeping checkout and internal Forgejo traffic direct.
Author
Member

Exact AOS v0.255.0 reproduction found the startup failure. The image passed python-syntax, validate-ci, and test-mod-packages, then lint-mod-packages failed because the repo invoked a global ruff executable that the image does not provide. The repo now declares ruff in its development dependency group, locks ruff 0.15.22, and invokes it through uv. The same four CI startup verbs all pass inside the exact pinned image before this correction is pushed.

Exact AOS v0.255.0 reproduction found the startup failure. The image passed python-syntax, validate-ci, and test-mod-packages, then lint-mod-packages failed because the repo invoked a global ruff executable that the image does not provide. The repo now declares ruff in its development dependency group, locks ruff 0.15.22, and invokes it through uv. The same four CI startup verbs all pass inside the exact pinned image before this correction is pushed.
Author
Member

Completed and verified. Push run 7 succeeded in 29 seconds on commit a12bb5d. Root hygiene, offline secret scanning, the locked package-tool tests and lint, and the proxy-backed .NET build all passed. Nine independent package jobs succeeded, including the mods with scoped Git LFS runtime bundles. Guarded workflow-dispatch run 8 then succeeded in 28 seconds against the same commit, proving the manual path and byte-identical idempotent re-publication. The full Unity source tree was never materialized or rebuilt.

Completed and verified. Push run 7 succeeded in 29 seconds on commit a12bb5d. Root hygiene, offline secret scanning, the locked package-tool tests and lint, and the proxy-backed .NET build all passed. Nine independent package jobs succeeded, including the mods with scoped Git LFS runtime bundles. Guarded workflow-dispatch run 8 then succeeded in 28 seconds against the same commit, proving the manual path and byte-identical idempotent re-publication. The full Unity source tree was never materialized or rebuilt.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
coilyco-gaming/eco-mods#6
No description provided.