GitLab Runner: Running jobs in parallel

This documentation is part of the Building Docker images guide. You can view the complete guide here: Build and push Docker images from your GitLab CI/CD pipelines using your Stackhero runner and Docker-in-Docker.

👋 Welcome to the Stackhero documentation!

Stackhero offers you an easy-to-use GitLab Runner cloud solution, designed to efficiently run your GitLab CI/CD jobs. Here’s what you can expect:

  • Unlimited CI/CD minutes: there’s no per-minute billing, so your pipelines can run whenever you need them.
  • Concurrent jobs: run multiple jobs in parallel to speed up your entire pipeline.
  • The Docker executor with Docker-in-Docker support: simplify building and pushing your container images.
  • Compatible with GitLab.com as well as any self-managed GitLab instance.
  • A private, dedicated VM powered by fast NVMe/SSD disks for consistent, reliable builds.
  • Available in both 🇪🇺 Europe and 🇺🇸 USA regions.

Save time: connect your first GitLab Runner and start running pipelines in just a few minutes!

Your plan determines how many jobs can run at the same time. Jobs within the same stage start together, up to your concurrency limit. This means a stage with multiple independent jobs will finish as soon as the slowest job completes, instead of running all jobs one after another.

Here’s a simple example:

stages:
  - test

unit:
  stage: test
  image: node:22
  script: npm run test:unit

integration:
  stage: test
  image: node:22
  script: npm run test:integration

e2e:
  stage: test
  image: node:22
  script: npm run test:e2e

If you set your concurrency to 3 or higher, the unit, integration, and e2e jobs will all run at the same time.

If you’d like to learn more about building Docker images in CI, feel free to check out the official GitLab documentation.