Use when configuring GitLab CI/CD pipelines, defining stages, or setting up workflow rules. Covers pipeline structure, stage ordering, and execution flow.
Install
npx skillscat add thebushidocollective/han/gitlab-ci-pipeline-configuration Install via the SkillsCat registry.
About this skill
This skill configures GitLab CI/CD pipelines by defining stages, workflow rules, and execution flow. It solves the problem of structuring automated build, test, and deployment processes with proper ordering and conditional logic. Use it when setting up pipeline configurations, managing stage dependencies, or implementing branch-specific workflows in GitLab repositories.
SKILL.md
GitLab CI - Pipeline Configuration
Configure GitLab CI/CD pipelines with proper stage ordering, workflow rules, and execution flow.
Pipeline Structure
# .gitlab-ci.yml
stages:
- build
- test
- deploy
default:
image: node:20-alpine
before_script:
- npm ci --cache .npm --prefer-offline
cache:
key: ${CI_COMMIT_REF_SLUG}
paths:
- .npm/
workflow:
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCHStage Configuration
Sequential Stages
stages:
- install
- lint
- test
- build
- deployParallel Jobs Within Stages
test:unit:
stage: test
script: npm run test:unit
test:integration:
stage: test
script: npm run test:integration
test:e2e:
stage: test
script: npm run test:e2eWorkflow Rules
Branch-Based Pipelines
workflow:
rules:
- if: $CI_COMMIT_BRANCH == "main"
variables:
DEPLOY_ENV: production
- if: $CI_COMMIT_BRANCH =~ /^release\//
variables:
DEPLOY_ENV: staging
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
- if: $CI_COMMIT_TAGAuto-Cancel Redundant Pipelines
workflow:
auto_cancel:
on_new_commit: interruptibleUsing Needs for DAG Pipelines
build:
stage: build
script: npm run build
test:unit:
stage: test
needs: ["build"]
script: npm run test:unit
test:lint:
stage: test
needs: [] # No dependencies, runs immediately
script: npm run lint
deploy:
stage: deploy
needs: ["build", "test:unit"]
script: npm run deployInclude External Configurations
include:
- local: .gitlab/ci/build.yml
- local: .gitlab/ci/test.yml
- project: 'my-group/my-templates'
ref: main
file: '/templates/deploy.yml'
- template: Security/SAST.gitlab-ci.ymlBest Practices
- Define clear stage ordering
- Use
needsto optimize pipeline execution - Configure workflow rules to prevent unnecessary pipelines
- Use
includeto split large configurations - Set appropriate
interruptibleflags for cancelable jobs