Skip to content

ci: split Build into required lint + advisory compile#17

Merged
stevenjvik merged 1 commit into
mainfrom
fix/ci-split-lint-compile
May 10, 2026
Merged

ci: split Build into required lint + advisory compile#17
stevenjvik merged 1 commit into
mainfrom
fix/ci-split-lint-compile

Conversation

@stevenjvik

Copy link
Copy Markdown
Owner

Why

The `Build` workflow has never gone green in CI. Going back to 2026-04-21, every run fails with 88 errors of the form `package com.minecolonies.api.entity.ai.statemachine does not exist`.

Root cause is not a regression — it's a CI architecture mismatch. `build.gradle` declares MineColonies as `compileOnly fileTree(dir: 'libs')` and `scripts/fetch-deps.sh` populates `libs/` from a local Minecraft instance (`$HOME/AppData/.../atm10/mods`). CI has no local Minecraft instance, no jar, no way to compile.

Full analysis + path-forward options at `audit/squire-mod-v2-ci-architecture-2026-05-09.md` in the vault. Picked option A (advisory CI, no third-party supply chain) over option F (CurseMaven proxy) — the latter resolves but adds a community-run external to the build path, not worth the trade for a personal mod.

What this changes

Splits the single `Build` job into two:

  • `lint` (required signal) — runs `./gradlew help tasks` and `./gradlew dependencies`. Catches:

    • build.gradle syntax errors
    • Plugin version regressions (NeoForged moddev, etc.)
    • Broken Maven coordinates for declared deps
    • Gradle wrapper issues
    • Anything that doesn't need the MineColonies jar to detect
  • `compile` (advisory) — `continue-on-error: true`. Runs the full `./gradlew build`. Cannot pass in CI without `libs/`, but stays in place so:

    • If you ever vendor the jars or switch to CurseMaven, this lights up immediately
    • Failure shows yellow on PRs instead of red — no more "ignored CI failure" cognitive load
    • Artifact upload still triggers if compile ever succeeds

Impact on Dependabot

5 stuck PRs (#12 #13 #14 #15 #16) currently red because the unified Build fails. After this lands, they show:

  • ✅ Lint passes (real signal — the bump didn't break anything CI-detectable)
  • ⚠️ Compile advisory failure (expected — same MineColonies-jar gap, not the bump's fault)

Steve can merge them based on lint signal + manual local verification, instead of staring at a permanently-red queue.

Local dev unchanged

`fetch-deps.sh` still works, `./gradlew build` still works on Steve's authoring machine. This is purely a CI workflow split.

Lint catches build.gradle / plugin / dep regressions without needing the
MineColonies jars (which can't be sourced reproducibly in CI — see
audit/squire-mod-v2-ci-architecture-2026-05-09.md). Compile stays as
continue-on-error so failures from missing libs/ don't poison Dependabot PRs.

Closes the 'Build never green' issue documented after 2026-04-21.
@stevenjvik stevenjvik merged commit 7bbdd58 into main May 10, 2026
1 of 2 checks passed
@stevenjvik stevenjvik deleted the fix/ci-split-lint-compile branch May 10, 2026 14:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant