Some checks failed
build image / build (push) Has been cancelled
The first run produced one job leg with an empty variant, and the build rejected it. The prepare job was fine — it set variants=["minimal"] and the output evaluated correctly — but Gitea's runner resolves strategy.matrix while planning the workflow, before `needs` has produced anything, so fromJSON(needs.prepare.outputs.variants) saw an empty string. Dynamic matrices from needs outputs are not supported here. Drop the prepare job and loop in shell instead: one job, no expression-engine dependency, and a non-zero exit only after every requested variant has been attempted. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XWRjNJMistCy6ngXH5aJLS