Understand the timeline: the Docker Machine executor was deprecated in GitLab 17.5 and is scheduled for removal in GitLab 20.0 (May 2027); migrate before that date
Install a fleeting plugin for your cloud provider (e.g., fleeting-plugin-aws, fleeting-plugin-googlecompute, or fleeting-plugin-azure) alongside your existing GitLab Runner binary
In config.toml, replace the [runners.machine] section with an [runners.autoscaler] block that references the plugin binary path and a [runners.autoscaler.plugin_config] block for provider-specific settings such as instance type and image ID
Set capacity_per_instance, max_instances, and idle_time under [runners.autoscaler] to control how aggressively the runner scales up and how long idle instances wait before termination
Choose executor: docker+autoscaler for Docker-based jobs (equivalent to the old docker+machine) or instance for jobs that run directly on the provisioned VM without Docker
Run gitlab-runner verify and check the runner's log output to confirm instances are being created and jobs dispatched before decommissioning the old Docker Machine configuration
Known gotchas
The docker+autoscaler executor uses taskscaler internally and does not support all Docker Machine options; review the fleeting plugin docs for your provider to remap settings
Fleeting plugins are versioned separately from GitLab Runner; pin compatible plugin versions in your deployment and test upgrades in a staging environment first
Instance executor jobs share the same OS environment as the runner process; ensure your AMI or machine image is hardened and secrets are not baked in, since isolation is weaker than containers
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp