A pipeline job stays 'pending' indefinitely because no available runner matches the job's tags, or the assigned runner is offline.
Verify runner registration, online status, and tag matching against what the .gitlab-ci.yml expects.
Step-by-Step Guide
Check Settings > CI/CD > Runners to confirm a runner is online (green indicator)
Verify the job's tags: field matches a tag registered on an active runner
If using shared runners, confirm they're enabled for the project's runner settings
For self-hosted runners, check status directly: sudo gitlab-runner status
Review runner logs for registration token or network connectivity issues
Confirm the runner's executor (docker, shell, etc.) matches what the job requires
Restart the runner service if it shows online but isn't picking up jobs: sudo gitlab-runner restart
Check concurrent job limits aren't already maxed out in config.toml
Found an issue with this solution?