---
title: "Migrate from GitLab"
description: "Move your CI/CD from GitLab to CircleCI. Sign up, then compare your GitLab configuration with the equivalent CircleCI configuration."
platform: "Cloud"
doc_version: "unversioned"
last_updated: "2026-09-30"
cloud_plans: "Free, Performance, Scale"
version_control: "GitLab, GitLab self-managed"
---

> For current CircleCI product defaults, deprecated patterns, and Cloud/Server differences, see [AGENTS.md](https://circleci.com/docs/AGENTS.md).
>
> For the complete documentation index and site structure, see [llms.txt](https://circleci.com/docs/llms.txt).

# Migrate from GitLab

**Cloud plans:** Free, Performance, Scale

**Version control:** GitLab, GitLab self-managed

This document provides an overview of how to migrate from GitLab to CircleCI.

The [CircleCI configuration translator](https://circleci.com/developer/tools/configTranslator) provides a way to convert your GitHub Actions or GitLab config into a CircleCI `config.yml` file. The configuration translator is currently in open preview.

**Tips provided by ImagineX Consulting**

## Sign up

Follow the steps on the [Sign Up and Try](https://circleci.com/docs/guides/getting-started/first-steps/#github-gitlab-cursor-origin) page to connect your GitLab account with CircleCI. Then follow the steps in the following sections to migrate your CI/CD setup to CircleCI.

## Build configuration

If you are using [GitLab’s CI/CD](https://circleci.com/docs/guides/permissions-authentication/users-organizations-and-integrations-guide/), you will need to migrate your build configuration. On GitLab, the build configuration is defined in a file called `.gitlab-ci.yml` in the root directory of your source code repository. If you use shell scripts to perform your build, you can reuse those scripts in CircleCI.

First, create a CircleCI build configuration file. In the root directory of your source code repository, create a folder named `.circleci` and create a file in that folder named `config.yml`. Next, follow the CircleCI documentation [here](https://circleci.com/docs/config-intro/) to learn how to configure the `config.yml` file.

The GitLab and CircleCI configurations will be different. It may be helpful to have both GitLab and CircleCI reference documentation open side-by-side to help with the conversion of the build steps:

*   [GitLab YML Reference](https://docs.gitlab.com/ee/ci/yaml/)
    
*   [CircleCI YML Reference](https://circleci.com/docs/configuration-reference/)
    

## Configuration comparison

**Using Docker?** Authenticating Docker pulls from image registries is recommended when using the Docker execution environment. Authenticated pulls allow access to private Docker images, and may also grant higher rate limits, depending on your registry provider. For further information, see [Using Docker Authenticated Pulls](https://circleci.com/docs/guides/execution-managed/private-images/).

<table><thead><tr><th>GitLab</th><th>CircleCI</th></tr></thead><tbody><tr><td colspan="2">Defining a job that executes a single build step</td></tr><tr><td><div><div><div><pre><code data-lang="yaml" class="shiki  " style="--shiki-line-number-start: 1; --shiki-line-number-color: #787ea2;"><span class="line"><span style="color: #8BE9FD">job1</span><span style="color: #FF79C6">:</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #8BE9FD">script</span><span style="color: #FF79C6">:</span><span style="color: #F8F8F2"> </span><span style="color: #E9F284">"</span><span style="color: #F1FA8C">execute-script-for-job1</span><span style="color: #E9F284">"</span></span></code></pre></div></div></div></td><td><div><div><div><pre><code data-lang="yaml" class="shiki  " style="--shiki-line-number-start: 1; --shiki-line-number-color: #787ea2;"><span class="line"><span style="color: #8BE9FD">jobs</span><span style="color: #FF79C6">:</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #8BE9FD">job1</span><span style="color: #FF79C6">:</span></span>
<span class="line"><span style="color: #F8F8F2">    </span><span style="color: #8BE9FD">steps</span><span style="color: #FF79C6">:</span></span>
<span class="line"><span style="color: #F8F8F2">      </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">checkout</span></span>
<span class="line"><span style="color: #F8F8F2">      </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2"> </span><span style="color: #8BE9FD">run</span><span style="color: #FF79C6">:</span><span style="color: #F8F8F2"> </span><span style="color: #E9F284">"</span><span style="color: #F1FA8C">execute-script-for-job1</span><span style="color: #E9F284">"</span></span></code></pre></div></div></div></td></tr><tr><td colspan="2">Specify a Docker image to use for a job.</td></tr><tr><td><div><div><div><pre><code data-lang="yaml" class="shiki  " style="--shiki-line-number-start: 1; --shiki-line-number-color: #787ea2;"><span class="line"><span style="color: #8BE9FD">job1</span><span style="color: #FF79C6">:</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #8BE9FD">image</span><span style="color: #FF79C6">:</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">node:10</span></span></code></pre></div></div></div></td><td><div><div><div><pre><code data-lang="yaml" class="shiki  " style="--shiki-line-number-start: 1; --shiki-line-number-color: #787ea2;"><span class="line"><span style="color: #8BE9FD">jobs</span><span style="color: #FF79C6">:</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #8BE9FD">job1</span><span style="color: #FF79C6">:</span></span>
<span class="line"><span style="color: #F8F8F2">    </span><span style="color: #8BE9FD">docker</span><span style="color: #FF79C6">:</span></span>
<span class="line"><span style="color: #F8F8F2">      </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2"> </span><span style="color: #8BE9FD">image</span><span style="color: #FF79C6">:</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">node:10</span></span></code></pre></div></div></div></td></tr><tr><td colspan="2">Define a multi-stage build pipeline. Job1 and Job2 run concurrently. Once they are done, Job3 runs. Once Job3 is done, Job4 runs.</td></tr><tr><td><div><div><div><pre><code data-lang="yaml" class="shiki  " style="--shiki-line-number-start: 1; --shiki-line-number-color: #787ea2;"><span class="line"><span style="color: #8BE9FD">job1</span><span style="color: #FF79C6">:</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #8BE9FD">stage</span><span style="color: #FF79C6">:</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">build</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #8BE9FD">script</span><span style="color: #FF79C6">:</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">make build dependencies</span></span>
<span class="line"></span>
<span class="line"><span style="color: #8BE9FD">job2</span><span style="color: #FF79C6">:</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #8BE9FD">stage</span><span style="color: #FF79C6">:</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">build</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #8BE9FD">script</span><span style="color: #FF79C6">:</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">make build artifacts</span></span>
<span class="line"></span>
<span class="line"><span style="color: #8BE9FD">job3</span><span style="color: #FF79C6">:</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #8BE9FD">stage</span><span style="color: #FF79C6">:</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">test</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #8BE9FD">script</span><span style="color: #FF79C6">:</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">make test</span></span>
<span class="line"></span>
<span class="line"><span style="color: #8BE9FD">job4</span><span style="color: #FF79C6">:</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #8BE9FD">stage</span><span style="color: #FF79C6">:</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">deploy</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #8BE9FD">script</span><span style="color: #FF79C6">:</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">make deploy</span></span>
<span class="line"></span>
<span class="line"><span style="color: #8BE9FD">stages</span><span style="color: #FF79C6">:</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">build</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">test</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">deploy</span></span></code></pre></div></div></div></td><td><div><div><div><pre><code data-lang="yaml" class="shiki  " style="--shiki-line-number-start: 1; --shiki-line-number-color: #787ea2;"><span class="line"><span style="color: #8BE9FD">version</span><span style="color: #FF79C6">:</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">2.1</span></span>
<span class="line"><span style="color: #8BE9FD">jobs</span><span style="color: #FF79C6">:</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #8BE9FD">job1</span><span style="color: #FF79C6">:</span></span>
<span class="line"><span style="color: #F8F8F2">    </span><span style="color: #8BE9FD">steps</span><span style="color: #FF79C6">:</span></span>
<span class="line"><span style="color: #F8F8F2">      </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">checkout</span></span>
<span class="line"><span style="color: #F8F8F2">      </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2"> </span><span style="color: #8BE9FD">run</span><span style="color: #FF79C6">:</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">make build dependencies</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #8BE9FD">job2</span><span style="color: #FF79C6">:</span></span>
<span class="line"><span style="color: #F8F8F2">    </span><span style="color: #8BE9FD">steps</span><span style="color: #FF79C6">:</span></span>
<span class="line"><span style="color: #F8F8F2">      </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2"> </span><span style="color: #8BE9FD">run</span><span style="color: #FF79C6">:</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">make build artifacts</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #8BE9FD">job3</span><span style="color: #FF79C6">:</span></span>
<span class="line"><span style="color: #F8F8F2">    </span><span style="color: #8BE9FD">steps</span><span style="color: #FF79C6">:</span></span>
<span class="line"><span style="color: #F8F8F2">      </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2"> </span><span style="color: #8BE9FD">run</span><span style="color: #FF79C6">:</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">make test</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #8BE9FD">job4</span><span style="color: #FF79C6">:</span></span>
<span class="line"><span style="color: #F8F8F2">    </span><span style="color: #8BE9FD">steps</span><span style="color: #FF79C6">:</span></span>
<span class="line"><span style="color: #F8F8F2">      </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2"> </span><span style="color: #8BE9FD">run</span><span style="color: #FF79C6">:</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">make deploy</span></span>
<span class="line"></span>
<span class="line"><span style="color: #8BE9FD">workflows</span><span style="color: #FF79C6">:</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #8BE9FD">jobs</span><span style="color: #FF79C6">:</span></span>
<span class="line"><span style="color: #F8F8F2">    </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">job1</span></span>
<span class="line"><span style="color: #F8F8F2">    </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">job2</span></span>
<span class="line"><span style="color: #F8F8F2">    </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2"> </span><span style="color: #8BE9FD">job3</span><span style="color: #FF79C6">:</span></span>
<span class="line"><span style="color: #F8F8F2">        </span><span style="color: #8BE9FD">requires</span><span style="color: #FF79C6">:</span></span>
<span class="line"><span style="color: #F8F8F2">          </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">job1</span></span>
<span class="line"><span style="color: #F8F8F2">          </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">job2</span></span>
<span class="line"><span style="color: #F8F8F2">    </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2"> </span><span style="color: #8BE9FD">job4</span><span style="color: #FF79C6">:</span></span>
<span class="line"><span style="color: #F8F8F2">        </span><span style="color: #8BE9FD">requires</span><span style="color: #FF79C6">:</span></span>
<span class="line"><span style="color: #F8F8F2">          </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">job3</span></span></code></pre></div></div></div></td></tr><tr><td colspan="2">Execute jobs on multiple platforms. GitLab uses tags to identify build runners. CircleCI provides all major OSes and Docker and must be explicitly set in config. See our <a href="https://circleci.com/docs/executor-intro/#section=configuration">execution environments documentation</a> for more information.</td></tr><tr><td><div><div><div><pre><code data-lang="yaml" class="shiki  " style="--shiki-line-number-start: 1; --shiki-line-number-color: #787ea2;"><span class="line"><span style="color: #8BE9FD">ubuntu job</span><span style="color: #FF79C6">:</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #8BE9FD">tags</span><span style="color: #FF79C6">:</span></span>
<span class="line"><span style="color: #F8F8F2">    </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">ubuntu</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #8BE9FD">script</span><span style="color: #FF79C6">:</span></span>
<span class="line"><span style="color: #F8F8F2">    </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">echo "Hello, $USER!"</span></span>
<span class="line"></span>
<span class="line"><span style="color: #8BE9FD">osx job</span><span style="color: #FF79C6">:</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #8BE9FD">tags</span><span style="color: #FF79C6">:</span></span>
<span class="line"><span style="color: #F8F8F2">    </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">osx</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #8BE9FD">script</span><span style="color: #FF79C6">:</span></span>
<span class="line"><span style="color: #F8F8F2">    </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">echo "Hello, $USER!"</span></span></code></pre></div></div></div></td><td><div><div><div><pre><code data-lang="yaml" class="shiki  " style="--shiki-line-number-start: 1; --shiki-line-number-color: #787ea2;"><span class="line"><span style="color: #8BE9FD">jobs</span><span style="color: #FF79C6">:</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #8BE9FD">ubuntu-job</span><span style="color: #FF79C6">:</span></span>
<span class="line"><span style="color: #F8F8F2">    </span><span style="color: #8BE9FD">machine</span><span style="color: #FF79C6">:</span></span>
<span class="line"><span style="color: #F8F8F2">      </span><span style="color: #F1FA8C">ubuntu-2404:current</span></span>
<span class="line"><span style="color: #F8F8F2">    </span><span style="color: #8BE9FD">steps</span><span style="color: #FF79C6">:</span></span>
<span class="line"><span style="color: #F8F8F2">      </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">checkout</span></span>
<span class="line"><span style="color: #F8F8F2">      </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2"> </span><span style="color: #8BE9FD">run</span><span style="color: #FF79C6">:</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">echo "Hello, $USER!"</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #8BE9FD">osx-job</span><span style="color: #FF79C6">:</span></span>
<span class="line"><span style="color: #F8F8F2">    </span><span style="color: #8BE9FD">macos</span><span style="color: #FF79C6">:</span></span>
<span class="line"><span style="color: #F8F8F2">      </span><span style="color: #8BE9FD">xcode</span><span style="color: #FF79C6">:</span><span style="color: #F8F8F2"> </span><span style="color: #BD93F9">27.0.0</span></span>
<span class="line"><span style="color: #F8F8F2">    </span><span style="color: #8BE9FD">steps</span><span style="color: #FF79C6">:</span></span>
<span class="line"><span style="color: #F8F8F2">      </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">checkout</span></span>
<span class="line"><span style="color: #F8F8F2">      </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2"> </span><span style="color: #8BE9FD">run</span><span style="color: #FF79C6">:</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">echo "Hello, $USER!"</span></span></code></pre></div></div></div></td></tr><tr><td colspan="2">Cache Dependencies.</td></tr><tr><td><div><div><div><pre><code data-lang="yaml" class="shiki  " style="--shiki-line-number-start: 1; --shiki-line-number-color: #787ea2;"><span class="line"><span style="color: #8BE9FD">image</span><span style="color: #FF79C6">:</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">node:latest</span></span>
<span class="line"></span>
<span class="line"><span style="color: #6272A4"># Cache modules in between jobs</span></span>
<span class="line"><span style="color: #8BE9FD">cache</span><span style="color: #FF79C6">:</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #8BE9FD">key</span><span style="color: #FF79C6">:</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">${CI_COMMIT_REF_SLUG}</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #8BE9FD">paths</span><span style="color: #FF79C6">:</span></span>
<span class="line"><span style="color: #F8F8F2">    </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">node_modules/</span></span>
<span class="line"></span>
<span class="line"><span style="color: #8BE9FD">before_script</span><span style="color: #FF79C6">:</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">npm install</span></span>
<span class="line"></span>
<span class="line"><span style="color: #8BE9FD">test_async</span><span style="color: #FF79C6">:</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #8BE9FD">script</span><span style="color: #FF79C6">:</span></span>
<span class="line"><span style="color: #F8F8F2">    </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">node ./specs/start.js</span></span></code></pre></div></div></div></td><td><div><div><div><pre><code data-lang="yaml" class="shiki  " style="--shiki-line-number-start: 1; --shiki-line-number-color: #787ea2;"><span class="line"><span style="color: #8BE9FD">jobs</span><span style="color: #FF79C6">:</span></span>
<span class="line"><span style="color: #F8F8F2">  </span><span style="color: #8BE9FD">test_async</span><span style="color: #FF79C6">:</span></span>
<span class="line"><span style="color: #F8F8F2">    </span><span style="color: #8BE9FD">steps</span><span style="color: #FF79C6">:</span></span>
<span class="line"><span style="color: #F8F8F2">      </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2"> </span><span style="color: #8BE9FD">restore_cache</span><span style="color: #FF79C6">:</span></span>
<span class="line"><span style="color: #F8F8F2">          </span><span style="color: #8BE9FD">key</span><span style="color: #FF79C6">:</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">source-v1-{{ checksum "package.json" }}</span></span>
<span class="line"><span style="color: #F8F8F2">      </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">checkout</span></span>
<span class="line"><span style="color: #F8F8F2">      </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2"> </span><span style="color: #8BE9FD">run</span><span style="color: #FF79C6">:</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">npm install</span></span>
<span class="line"><span style="color: #F8F8F2">      </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2"> </span><span style="color: #8BE9FD">save_cache</span><span style="color: #FF79C6">:</span></span>
<span class="line"><span style="color: #F8F8F2">          </span><span style="color: #8BE9FD">key</span><span style="color: #FF79C6">:</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">source-v1-{{ checksum "package.json" }}</span></span>
<span class="line"><span style="color: #F8F8F2">          </span><span style="color: #8BE9FD">paths</span><span style="color: #FF79C6">:</span></span>
<span class="line"><span style="color: #F8F8F2">            </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">node_modules</span></span>
<span class="line"><span style="color: #F8F8F2">      </span><span style="color: #FF79C6">-</span><span style="color: #F8F8F2"> </span><span style="color: #8BE9FD">run</span><span style="color: #FF79C6">:</span><span style="color: #F8F8F2"> </span><span style="color: #F1FA8C">node ./specs/start.js</span></span></code></pre></div></div></div></td></tr></tbody></table>

For larger and more complex build files, we recommend moving over the build steps in phases until you get comfortable with the CircleCI platform. We recommend this order:

1.  [Pick your executor](https://circleci.com/docs/executor-intro/)
    
2.  [Checkout code](https://circleci.com/docs/configuration-reference/#checkout)
    
3.  [Environment variables](https://circleci.com/docs/env-vars/) and [Contexts](https://circleci.com/docs/contexts/)
    
4.  Install dependencies, also see [Cache dependencies](https://circleci.com/docs/caching/)
    
5.  [Service containers](https://circleci.com/docs/configuration-reference/#docker)
    
6.  Run testing commands
    
7.  [Custom convenience images](https://circleci.com/docs/custom-images/)
    
8.  [Resource classes](https://circleci.com/docs/configuration-reference/#resourceclass)
    
9.  [Workflows](https://circleci.com/docs/workflows/)
    
10.  [Test results](https://circleci.com/docs/collect-test-data/) / test splitting / [parallelism](https://circleci.com/docs/parallelism-faster-jobs/)
     
11.  [Artifacts](https://circleci.com/docs/artifacts/)