Skip to content

Renovate at GitLab: Current Implementation Documentation

Renovate is a dependency update tool used at GitLab to automate the process of keeping dependencies up-to-date. This document outlines the current implementation, configurations, and workflows of Renovate within the GitLab infrastructure.

GitLab currently uses two different approaches for Renovate:

Repository: https://gitlab.com/gitlab-com/gl-infra/common-ci-tasks

Key Characteristics:

  • Per-project CI job implementation
  • Requires CI include and renovate.json configuration. This can be generated for you using our common-template-copier template.
  • Uses custom container image with specific tooling installed

Focus Areas:

  • Security and isolation by running one job per project
  • Custom tooling baked into the image to generate/update templates and non-standard files

Documentation:

Repositories:

Key Characteristics:

  • Global CI job with auto-discovery via renovate-runner
  • Sets a managed-by-soos topic to prevent duplication with the common-ci-tasks approach
  • Requires renovate.json configuration
  • Language-specific images based on project code/files

Focus Areas:

  • Low maintenance and easy onboarding
  • Efficiency through running a global CI job that caches dependencies data for all projects
  • Uses upstream maintained components

Documentation:

We will likely be deprecating the Global Renovate Runner approach, so please set up all new projects using common-ci-tasks.

To configure Renovate Bot for a given project, follow the Automated Project Setup documentation in common-ci-tasks.

Renovate best practices are documented in the common-ci-tasks project.

If you configured a dependency and it isn’t getting picked up by Renovate check the output of the latest scheduled pipeline job.

Common CI Tasks: Scheduled pipeline on the project in question. Renovate CI:

If you need further debug data, check the renovate-log.ndjson file on the CI job’s artifacts and grep for the project’s name.

If you suspect your renovate.json may need adjustments, you can try them out before merging them the following way:

RENOVATE_PLATFORM=gitlab RENOVATE_TOKEN=<your-gitlab-token> RENOVATE_REPOSITORIES=gitlab-com/gl-infra/<path-to-project> RENOVATE_BASE_BRANCHES=<your-branch> renovate --use-base-branch-config=merge --autodiscover=false --dry-run=full