Skip to content

fix(ci): pass --all to mix igniter.upgrade so the job stops failing - #2841

Merged
zachdaniel merged 1 commit into
mainfrom
ci/fix-igniter-upgrade-job
Aug 4, 2026
Merged

fix(ci): pass --all to mix igniter.upgrade so the job stops failing#2841
zachdaniel merged 1 commit into
mainfrom
ci/fix-igniter-upgrade-job

Conversation

@jimsynz

@jimsynz jimsynz commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

The shared mix igniter.upgrade job fails on every dependabot PR across the
ecosystem:

##[group]Run mix igniter.upgrade --git-ci --yes
Must specify at least one package to upgrade or use --all to upgrade all packages.
##[error]Process completed with exit code 1.

The job passes neither package names nor --all, so mix igniter.upgrade
rejects the invocation before doing any work. Confirmed identical in ash,
ash_postgres, ash_phoenix, ash_graphql and ash_ai — anything using this
workflow.

It broke in ff418c2 ("ci: setup action properly for igniter.upgrade"), which
converted the step from a run: to the staple-actions/mix-task action and
dropped the argument along the way:

-        run: mix igniter.upgrade ${{steps.dependabot-metadata.outputs.dependency-names}} --git-ci
+          task: igniter.upgrade --git-ci

Nothing surfaced it because the step only runs for dependabot PRs. On tag pushes
it's skipped, and build-release/hex_publish gate on !failure(), which
treats skipped as fine — so releases were never blocked and the failure just sat
on dependabot PRs as a red X.

--all is the right argument rather than restoring dependency-names: under
--git-ci the upgrade set is derived entirely from diffing HEAD~1:mix.lock
against the loaded deps, and the dependency fetch is skipped, so --all only
satisfies the argument check. It doesn't widen what gets upgraded or touch
mix.lock.

Verified end-to-end in a scratch project with a simulated dependabot lock bump:
--git-ci --yes exits 1 with the error above, --git-ci --yes --all exits 0 and
reports jason 1.4.4 => 1.4.5 with mix.lock unmodified.

Igniter shouldn't have demanded the argument in the first place, since it never
reads it on the --git-ci path — ash-project/igniter#397 fixes that end. This
change is worth landing regardless: it's a one-liner, it works against released
igniter, and it unblocks dependabot PRs now instead of after an igniter release.

The job invoked `mix igniter.upgrade --git-ci --yes` with neither package
names nor `--all`, so it exited 1 with "Must specify at least one package to
upgrade or use --all to upgrade all packages." before doing any work. Every
dependabot PR across the ecosystem has failed this check since the step was
converted to the `mix-task` action and lost its argument.

Under `--git-ci` the set of packages to upgrade comes entirely from diffing
`HEAD~1:mix.lock` against the loaded deps, and the dependency fetch is
skipped, so `--all` only satisfies the argument check — it does not widen
what gets upgraded or touch `mix.lock`.
@zachdaniel
zachdaniel merged commit 0859b17 into main Aug 4, 2026
51 checks passed
@zachdaniel

Copy link
Copy Markdown
Contributor

🚀 Thank you for your contribution! 🚀

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.

2 participants