GitLab.com evaluates the namespace compute-minutes quota at pipeline creation. On a fresh push while over quota, the pipeline is marked failed within ~1s with every job stuck in created (never assigned to a runner) \u2014 even though all jobs are tagged for the self-hosted fleet, which does not consume shared minutes. Retrying the pipeline bypasses the creation-time gate and runs normally.
Fix
Add scripts/Push-Main.ps1 \u2014 pushes the current branch and, for gitlab.com remotes, waits for the resulting pipeline and auto-retries it if it died at the creation gate (all jobs created). No-op for GitHub/ADO remotes.
Also provisions a dedicated GITLAB_TAG_TOKEN (masked+protected CI variable) so the release:tag auto-tagging job can push v<version> tags.
Permanent fixes (GitLab-side)
Add compute minutes to the namespace, or wait for the monthly quota reset.
GitLab.com evaluates the namespace compute-minutes quota at pipeline creation. On a fresh push while over quota, the pipeline is marked failed within ~1s with every job stuck in
created(never assigned to a runner) \u2014 even though all jobs are tagged for the self-hosted fleet, which does not consume shared minutes. Retrying the pipeline bypasses the creation-time gate and runs normally.Fix
Add
scripts/Push-Main.ps1\u2014 pushes the current branch and, for gitlab.com remotes, waits for the resulting pipeline and auto-retries it if it died at the creation gate (all jobscreated). No-op for GitHub/ADO remotes.Also provisions a dedicated
GITLAB_TAG_TOKEN(masked+protected CI variable) so therelease:tagauto-tagging job can pushv<version>tags.Permanent fixes (GitLab-side)
Add compute minutes to the namespace, or wait for the monthly quota reset.