Introduction
A CI migration can move pipelines to a new GitLab instance while GitLab Runner still polls the old coordinator for jobs. Runners stay online, but work keeps executing from the retired platform, one runner group uses the new instance while another still checks the previous URL, or failures begin only after the old GitLab server or token is removed because runner registration, config.toml, and fleet automation often drift separately.
Treat this as a runner-registration problem instead of a generic CI outage. Start by checking which GitLab instance an affected runner actually contacts for job pickup, because migrations often validate the new platform in the UI while live executors continue polling older runner configuration.
Symptoms
- GitLab Runner still pulls jobs from the old instance after migration
- Runners appear healthy, but jobs keep executing from the retired GitLab platform
- One runner or executor group uses the new instance while another still uses the previous one
- Job pickup failures begin only after the old GitLab server, token, or certificate is removed
- The new instance is healthy, but migrated runners never accept its jobs consistently
- The issue started after moving GitLab, runner fleets, or executor management workflows
Common Causes
- The runner is still registered against the old GitLab instance URL
config.tomlor a containerized runner config mount still contains the previous coordinator address- Automation, autoscaling images, or bootstrap scripts keep reenrolling runners with the retired instance
- The runner entry was updated in the new platform, but the actual runner registration target on the host was not changed
- One executor pool or autoscaling manager was updated while another still polls the earlier coordinator
- Validation confirmed the new GitLab instance accepted manual registration but did not verify which coordinator live runners actually contacted
Step-by-Step Fix
- 1.Capture one affected runner and record the coordinator URL, runner token scope, executor type, and config source it actually uses, because the live registration path determines where job polling really lands.
- 2.Compare that active runner path with the intended post-migration CI design, because one stale runner registration can keep whole executor pools tied to the retired GitLab instance.
- 3.Review
config.toml, registration scripts, autoscaling images, environment variables, and runner-management automation for references to the old instance, because GitLab Runner targeting depends on both local config and fleet bootstrap behavior. - 4.Check each executor pool, runner manager, and autoscaling path separately if behavior differs, because migrations often update one runner group while another still polls the previous coordinator.
- 5.Update the authoritative runner registration and bootstrap configuration so affected runners poll the intended GitLab instance, because adding runners to the new platform alone does not retarget existing executors.
- 6.Re-register or restart the affected runner as needed and confirm the intended instance now assigns jobs to it, because a running runner service does not prove the right coordinator owns it.
- 7.Verify the old GitLab instance no longer receives job polling from migrated runners, because split CI ownership can remain hidden while both coordinators stay reachable.
- 8.Review token validity, certificate trust, and runner scope if pickup still fails, because the destination can be correct while access or registration policy still blocks the new path.
- 9.Document which team owns runner bootstrap, registration, and migration validation so future GitLab cutovers verify the actual runtime coordinator before retiring the previous instance.
Verification
After applying fixes:
- 1.Trigger pipeline and verify runner picks up job from new instance
- 2.Check old GitLab instance for any runner polling activity
- 3.Verify runner config shows correct coordinator URL
- 4.Confirm runner is registered in new GitLab instance
- 5.Test all executor types work correctly
Prevention
To prevent GitLab Runner issues during future migrations:
- 1.Document runner fleet - Before migration, inventory all runners, their registration targets, and executor types.
- 2.Use configuration management - Store runner config in version control and deploy consistently across the fleet.
- 3.Update autoscaling images - If using autoscaling, update the base images with correct coordinator URLs.
- 4.Monitor both instances - During migration, monitor runner activity on both GitLab instances.
- 5.Use registration tokens consistently - Coordinate registration token updates with config changes.
- 6.Test registration process - Validate runner registration works on new instance before bulk migration.
- 7.Document runner ownership - Maintain clear documentation of which teams manage which runner groups
Common Pitfalls
- Re-registering runner without updating config.toml
- Forgetting to update autoscaling manager configuration
- Not checking all executor pools
- Missing environment variable overrides
- Assuming runner is registered based on UI status
- Not validating token scope matches new instance requirements
Related Articles
- [WordPress troubleshooting: Fix CloudFormation Permission Denied - C](fix-cloudformation-permission-denied)
- [Technical troubleshooting: Fix Cloud Migration Data Transfer Incomplete Issue](cloud-migration-data-transfer-incomplete)
- [Fix Database Migration Schema Lock Timeout in Infrastructure Migration](database-migration-schema-lock-timeout)
- [Fix DNS Cutover Propagation Delay Issue in Infrastructure Migration](dns-cutover-propagation-delay)
- [How to Fix Ansible Automation Controller Still Running Jobs Against the Old Execution Environment After Migration](fix-ansible-automation-controller-still-running-jobs-against-old-execution-environment-after-migration)
<script type="application/ld+json"> { "@context": "https://schema.org", "@type": "TechArticle", "headline": "How to Fix GitLab Runner Still Pulling Jobs From the Old Instance After Migration", "description": "Troubleshoot GitLab migration issues by checking runner registration, config.toml, bootstrap config, and stale coordinator settings.", "url": "https://www.fixwikihub.com/fix-gitlab-runner-still-pulling-jobs-from-old-instance-after-migration", "publisher": { "@type": "Organization", "name": "FixWikiHub", "url": "https://www.fixwikihub.com" }, "author": { "@type": "Person", "name": "FixWikiHub Editorial Team" }, "datePublished": "2025-11-02T15:31:17.097Z", "dateModified": "2025-11-02T15:31:17.097Z" } </script>