Understanding GitLab CI Tags: A Guide to Distinguishing and Using Tags in CI/CD

Dec 04, 2025 · Programming · 10 views · 7.8

Keywords: Git | GitLab | CI/CD | Tags

Abstract: This article delves into the concept of tags in GitLab CI, emphasizing the distinction between Git tags and GitLab CI tags. It covers key aspects such as setting up runner tags, configuring job tags in .gitlab-ci.yml, and leveraging Git tags to trigger CI/CD pipelines, with clear examples and steps to optimize workflows.

In GitLab CI/CD, tags are essential for job allocation and pipeline triggering, but newcomers often confuse Git tags with GitLab CI tags, leading to misconfigurations. This article breaks down the concepts from basics to practical applications.

Distinguishing Git Tags from GitLab CI Tags

Git tags are used for version control in Git repositories, marking specific commits with commands like git tag -a 1.0.0 -m "Version 1.0.0". In contrast, GitLab CI tags are associated with runners to specify which runner executes a job, defined in .gitlab-ci.yml as tags: [testing]. These concepts are separate but can be integrated.

Setting Up GitLab CI Tags

First, register a runner with a tag, e.g., "testing". Then, in the GitLab project's CI/CD settings, ensure the runner is bound to this tag. In .gitlab-ci.yml, assign the same tag to jobs to match runners. For example:

compile:
    stage: build
    script:
        - echo Running job...
    tags: [testing]

This ensures only runners with the "testing" tag pick up this job.

Integrating Git Tags to Trigger CI/CD Pipelines

Use the only: [tags] directive in .gitlab-ci.yml to trigger pipelines based on Git tags. For instance, pushing a Git tag automatically runs relevant jobs. Steps: create a tag locally, e.g., git tag -a 2.0.0 -m "Version 2.0.0", and push it with git push origin 2.0.0. In the configuration file, add:

deploy:
    stage: deploy
    only: [tags]
    script:
        - echo Deploying version...
    tags: [production]

This ensures deployment jobs run only when tags are pushed.

Configuration and Best Practices

Ensure runner tags align with job tags to prevent jobs from being unassigned. Use numeric or semantic versioning for Git tags to automate triggers. Regularly consult GitLab documentation for updates.

By mastering these mechanisms, users can streamline CI/CD processes, minimize manual intervention, and enhance development efficiency.

Copyright Notice: All rights in this article are reserved by the operators of DevGex. Reasonable sharing and citation are welcome; any reproduction, excerpting, or re-publication without prior permission is prohibited.