Skip to main content

Artifacts

tip

Artifacts functionality is only available in the Docker runtime and requires the Vela server to be configured with an S3-compatible object storage backend.

What are artifacts?

Artifacts are files produced by a pipeline step — such as test reports, screenshots, videos, or build binaries — that you want to preserve after the build completes. By declaring artifacts.paths on a step, Vela will automatically collect matching files from the step's workspace and upload them to configured object storage once the step finishes.

Usage

Add an artifacts block to any step with a paths list of glob patterns:

version: "1"

steps:
- name: cypress_tests
image: cypress/browsers:node-20.16.0-chrome-127.0.6533.119-1-ff-129.0.1-edge-127.0.2651.98-1
commands:
- npm install
- npm run cy:run
artifacts:
paths:
- cypress/screenshots/**/*.png
- cypress/videos/**/*.mp4
- test-results/*.xml
- coverage/**/*.xml

After the step completes, Vela searches the step's workspace for any files matching those patterns and uploads them to object storage. The files are stored under the path:

{org}/{repo}/{build_number}/{filename}

Another example — Go test reports

version: "1"

steps:
- name: test
image: golang:latest
commands:
- go test -v ./... 2>&1 | tee test-output.txt
- go test -json ./... > test-results.json
artifacts:
paths:
- test-output.txt
- test-results.json

Downloading artifacts

Once a build has completed, artifacts can be downloaded from the Artifacts tab on the build page in the Vela UI. Each artifact is listed by filename with a download link backed by a temporary presigned URL, allowing direct access to the file from object storage without requiring any additional credentials.

File size limits

The worker enforces limits on artifact uploads to prevent runaway storage usage:

  • Per-file limit — files exceeding the configured per-file size limit are skipped.
  • Per-build limit — once the total uploaded bytes for a build reaches the configured build-level limit, remaining files are skipped.

These limits are configured on the worker via the following environment variables:

VariableDescription
VELA_STORAGE_FILE_SIZE_LIMITMaximum size (in MB) for a single artifact file. Set to 0 for no limit.
VELA_STORAGE_BUILD_FILE_SIZE_LIMITMaximum total size (in MB) of all artifacts for a single build. Set to 0 for no limit.

Files that are skipped due to size limits are logged at the worker level. Contact your Vela administrator for the limits configured on your installation.

Server configuration

Artifacts require the Vela server to be configured with an S3-compatible object storage backend (e.g. MinIO). The following environment variables must be set on the server:

VariableDescription
VELA_STORAGE_ENABLESet to true to enable storage (default: false)
VELA_STORAGE_DRIVERObject storage driver (e.g. minio)
VELA_STORAGE_ADDRESSStorage endpoint (e.g. https://minio.example.com)
VELA_STORAGE_ACCESS_KEYStorage access key
VELA_STORAGE_SECRET_KEYStorage secret key
VELA_STORAGE_BUCKETBucket name to store artifacts in
VELA_STORAGE_USE_SSLSet to true to enable SSL (default: false)

If storage is not enabled on the server, any step with artifacts.paths will be skipped silently and the build will continue normally.

Limitations

  • Artifacts are only supported in the Docker runtime. The Kubernetes runtime does not support artifact collection.
  • Glob patterns are evaluated relative to the step's workspace root. Only regular files are collected — directories and symlinks are excluded.
  • Only the filename (basename) is preserved in storage, not the full path. If two different paths resolve to files with the same filename, only one will be stored.
  • Artifacts are not available for download until the step that declares them has completed.
  • The artifacts key is supported on steps only, not on services.