Pipelines

How to define a pipeline fileDownload template

Add .hearthforge-ci.toml to your repository root. Each [[steps]] entry is a step, executed in file order, and needs a name. Other tables: [on] (triggers), [variables] (user-overridable inputs) and [[copy]] (files taken from another image, like COPY --from).

Predefined variables

CI
always true
CI_PIPELINE_ID
numeric run ID
CI_COMMIT_SHA
full commit hash
CI_COMMIT_SHORT_SHA
first 8 chars
CI_COMMIT_BRANCH
branch name (empty for tags)
CI_COMMIT_TAG
tag name (empty for branches)
CI_COMMIT_REF_NAME
branch or tag name
CI_TRIGGER_SOURCE
push · tag · manual
CI_REPO_NAME
repository name
CI_SERVER_URL
HearthForge base URL

Status badge

Embed in your README:

![pipeline](/hearthforge/ci/badge.svg)

Step options

run_sh
shell command to run
run_if
skip the step unless this exits 0
always
run even after an earlier step failed
warn_on_fail
step warns instead of failing; the run reports warning
clear
re-extract a clean checkout before the step
build_image
build a Containerfile in a VM and push it to this repository's registry
timeout
per-step timeout in seconds

Artifact types

publish_file
copy file as-is
publish_tar
.tar archive
publish_gzip
.tar.gz archive
publish_zstd
.tar.zst archive
publish_zip
.zip archive