Agent skill

gitlab-ci-job-configuration

Use when defining GitLab CI jobs, configuring scripts, setting up environments, or managing job dependencies. Covers job structure and execution options.

Stars 163
Forks 31

Install this agent skill to your Project

npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/data/job-configuration

SKILL.md

GitLab CI - Job Configuration

Configure GitLab CI jobs with proper scripts, environments, and execution settings.

Basic Job Structure

yaml
job_name:
  stage: test
  image: node:20-alpine
  before_script:
    - npm ci
  script:
    - npm test
  after_script:
    - echo "Cleanup tasks"
  rules:
    - if: $CI_COMMIT_BRANCH == "main"

Script Configuration

Multi-Line Scripts

yaml
build:
  script:
    - echo "Building application..."
    - npm run build
    - echo "Build complete"

Script with Exit Codes

yaml
test:
  script:
    - npm test || exit 1
    - npm run lint
  allow_failure: false

Environment Configuration

yaml
deploy:production:
  stage: deploy
  script:
    - ./deploy.sh
  environment:
    name: production
    url: https://example.com
    on_stop: stop:production
  rules:
    - if: $CI_COMMIT_BRANCH == "main"
      when: manual

stop:production:
  stage: deploy
  script:
    - ./teardown.sh
  environment:
    name: production
    action: stop
  when: manual

Job Rules

Conditional Execution

yaml
job:
  rules:
    - if: $CI_COMMIT_BRANCH == "main"
      when: always
    - if: $CI_PIPELINE_SOURCE == "merge_request_event"
      when: on_success
    - when: never

Changes-Based Rules

yaml
test:frontend:
  rules:
    - changes:
        - "src/frontend/**/*"
        - "package.json"

Exists-Based Rules

yaml
docker:build:
  rules:
    - exists:
        - Dockerfile

Job Dependencies

Using Dependencies

yaml
build:
  stage: build
  script: npm run build
  artifacts:
    paths:
      - dist/

test:
  stage: test
  dependencies:
    - build
  script: npm test

Using Needs (DAG)

yaml
test:unit:
  needs:
    - job: build
      artifacts: true
  script: npm run test:unit

Parallel Jobs

Matrix Jobs

yaml
test:
  parallel:
    matrix:
      - NODE_VERSION: ["18", "20", "22"]
        OS: ["alpine", "bullseye"]
  image: node:${NODE_VERSION}-${OS}
  script: npm test

Simple Parallel

yaml
test:
  parallel: 5
  script: npm run test:shard

Resource Configuration

yaml
heavy_job:
  tags:
    - high-memory
  resource_group: deploy
  timeout: 2h
  retry:
    max: 2
    when:
      - runner_system_failure
      - stuck_or_timeout_failure

Didn't find tool you were looking for?

Be as detailed as possible for better results