---
myst:
  html_meta:
    "description": "Configure GitLab CI pipelines generated by plone.meta"
    "property=og:description": "Configure GitLab CI pipelines generated by plone.meta"
    "property=og:title": "Configure GitLab CI"
    "keywords": "plone.meta, GitLab CI, CI/CD"
---

# Configure GitLab CI

<!-- diataxis: how-to -->

For repositories hosted on GitLab, `plone.meta` generates a {file}`.gitlab-ci.yml` file instead of GitHub Actions workflows.

## Select CI jobs

```toml
[gitlab]
jobs = [
    "lint",
    "release-ready",
    "dependencies",
    "circular-dependencies",
    "testing",
    "coverage",
]
```

## Use custom Docker images

Specify Docker images per Python version using the `custom_images` dictionary:

```toml
[gitlab]
custom_images = {"3.14" = "python:3.14-trixie", "3.13" = "python:3.13-trixie"}
```

This allows different Python versions in the CI matrix to use appropriate base images (for example, Debian Trixie for Python 3.14 support).

## Install OS-level dependencies

```toml
[gitlab]
os_dependencies = """
    - apt-get install libxslt libxml2
"""
```

## Test matrix support

GitLab CI also benefits from the test matrix feature.
When `use_test_matrix` is enabled (the default), the generated {file}`.gitlab-ci.yml` will include test jobs for each combination of Plone version and Python version defined in `[tox] test_matrix`.

See {doc}`/how-to/customize-meta-toml` for details on configuring the test matrix.

## Add extra configuration

```toml
[gitlab]
extra_lines = """
deploy:
  stage: deploy
  script:
    - echo "deploying"
"""
```
