Lanes
A lane is one project's Scaleway Serverless Jobs definition for one image and size, with its own runner and tag in that project. Each run starts from the lane's image, installs git and curl when the image lacks them, fetches the pinned gitlab-runner from the deployment's bucket and runs the job with the shell executor. A lane takes only its own project's jobs.
- Keep on the VM runner: jobs with
services:, Docker-in-Docker,docker buildor testcontainers, and steady load that keeps paid VM hours busy. - Move to a lane: Docker-free jobs (lint, type checks, unit tests, compiles, browser tests) that would leave a VM idle for most of its paid hour, or that need more CPU than a DEV1 slot has.
Example ciburst.json: a lane for the jobs lint, typecheck and every unit-*.
{
"lanes": [
{ "tag": "node24", "image": "node:24-bookworm-slim", "jobs": ["lint", "typecheck", "unit-*"], "vcpu": 2, "memoryMiB": 4096, "maxRuns": 10 }
]
}
jobs patterns match the job name (* any characters, ? one character); a pattern belongs to one lane. Each lane job carries the lane's tag instead of the component's default, and its image: equals the lane's image, because the lane run ignores image: and runs the lane's:
unit-api:
image: node:24-bookworm-slim
tags: [node24]
script:
- npm ci
- npm test
Lane images: linux/amd64 with /bin/sh, public or in the deployment's Scaleway registry. RPM-based images (UBI, Fedora) and images that run as a non-root user must already contain git and curl. A run gets up to 6 vCPU, 16 GB memory, 10 GB disk and 24 hours, with at most 400 runs per organization at once; it has no Docker daemon and no privileged mode, root has no capabilities (chown fails: extract archives with tar --no-same-owner), and /tmp lives in memory.
ciburst check --suggest proposes lanes: per image of the Docker-free jobs on the VM runner, a lane for ciburst.json and the tags: line each job needs, and the ignoreJobs list of the jobs that run on other runners. ciburst check and the ciburst-check job report a lane job with services:, a Docker image, a docker command, or an image other than its lane's. Details: docs/RUNBOOK.md, Lanes.