gitlab-ci-artifacts-caching
Use when configuring artifacts for inter-job data passing or caching for faster builds. Covers cache strategies and artifact management.
Installation
Follow the repository instructions for this skill and your agent. Review the files and dependencies before adding it to your workflow.
View source ↗GuidesSkill instructions
GitLab CI - Artifacts & Caching
Configure artifacts and caching for efficient pipeline execution.
Artifacts
Basic Artifact Configuration
build:
script:
- npm run build
artifacts:
paths:
- dist/
expire_in: 1 week
Artifact Reports
test:
script:
- npm test -- --coverage
artifacts:
reports:
junit: junit.xml
coverage_report:
coverage_format: cobertura
path: coverage/cobertura-coverage.xml
Conditional Artifacts
build:
artifacts:
paths:
- dist/
when: on_success # on_success, on_failure, always
exclude:
- dist/**/*.map
Artifact Dependencies
build:
artifacts:
paths:
- dist/
test:
dependencies:
- build # Downloads build artifacts
script:
- npm test
deploy:
dependencies: [] # Skip all artifact downloads
script:
- ./deploy.sh
Caching
Basic Cache Configuration
default:
cache:
key: ${CI_COMMIT_REF_SLUG}
paths:
- node_modules/
- .npm/
Cache Key Strategies
# Per-branch cache
cache:
key: ${CI_COMMIT_REF_SLUG}
paths:
- node_modules/
# Lock file based cache
cache:
key:
files:
- package-lock.json
paths:
- node_modules/
# Combined key
cache:
key:
prefix: ${CI_JOB_NAME}
files:
- package-lock.json
paths:
- node_modules/
Cache Policy
install:
cache:
key: ${CI_COMMIT_REF_SLUG}
paths:
- node_modules/
policy: push # Only upload cache
script:
- npm ci
test:
cache:
key: ${CI_COMMIT_REF_SLUG}
paths:
- node_modules/
policy: pull # Only download cache
script:
- npm test
Fallback Keys
cache:
key: ${CI_COMMIT_REF_SLUG}
fallback_keys:
- ${CI_DEFAULT_BRANCH}
- main
paths:
- node_modules/
Distributed Cache (S3)
Configure in GitLab Runner:
[runners.cache]
Type = "s3"
Shared = true
[runners.cache.s3]
ServerAddress = "s3.amazonaws.com"
BucketName = "gitlab-runner-cache"
BucketLocation = "us-east-1"
Artifacts vs Cache
| Feature | Artifacts | Cache |
|---|---|---|
| Purpose | Pass data between jobs | Speed up job execution |
| Storage | GitLab server | Runner local or S3 |
| Reliability | Guaranteed | Best effort |
| Expiration | Configurable | Configurable |
| Cross-pipeline | Yes (with dependencies) | Yes (with keys) |
Best Practices
- Use cache for dependencies (node_modules, vendor)
- Use artifacts for build outputs
- Set appropriate expiration times
- Use lock file-based cache keys
- Exclude source maps and unnecessary files
- Use
policy: pullfor jobs that only read cache
Examples
Read the usage examples in the source repository.
View source ↗Source history
- Indexed on
- 2026-01-20
- Index updated
- 2026-02-04
- Branch
- main
Index and sync dates describe this directory. View the source repository for code history.
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!