Use when defining GitLab CI jobs, configuring scripts, setting up environments, or managing job dependencies. Covers job structure and execution options.
Limited to specific tools
Additional assets for this skill
This skill is limited to using the following tools:
name: gitlab-ci-job-configuration description: Use when defining GitLab CI jobs, configuring scripts, setting up environments, or managing job dependencies. Covers job structure and execution options. allowed-tools:
Configure GitLab CI jobs with proper scripts, environments, and execution settings.
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"
build:
script:
- echo "Building application..."
- npm run build
- echo "Build complete"
test:
script:
- npm test || exit 1
- npm run lint
allow_failure: false
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:
- if: $CI_COMMIT_BRANCH == "main"
when: always
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
when: on_success
- when: never
test:frontend:
rules:
- changes:
- "src/frontend/**/*"
- "package.json"
docker:build:
rules:
- exists:
- Dockerfile
build:
stage: build
script: npm run build
artifacts:
paths:
- dist/
test:
stage: test
dependencies:
- build
script: npm test
test:unit:
needs:
- job: build
artifacts: true
script: npm run test:unit
test:
parallel:
matrix:
- NODE_VERSION: ["18", "20", "22"]
OS: ["alpine", "bullseye"]
image: node:${NODE_VERSION}-${OS}
script: npm test
test:
parallel: 5
script: npm run test:shard
heavy_job:
tags:
- high-memory
resource_group: deploy
timeout: 2h
retry:
max: 2
when:
- runner_system_failure
- stuck_or_timeout_failure