hearthforge-ci-template.toml
Raw
1# HearthForge CI Pipeline Template
2# Place this file at .hearthforge-ci.toml in your repository root.
3
4image = "docker.io/debian:stable"
5work_dir = "/ci/build"
6clone_project_to = "/ci/build/project"
7# shell = ["/bin/sh", "-c"]
8shell_setup = "set -euo pipefail"
9# timeout = 3600 # overall run timeout in seconds
10# cpu_limit = 2.0 # CPU cores limit
11# memory_limit = "2g" # memory limit (k/m/g suffix)
12# cache = ["/root/.cargo", "/root/.npm"] # persist between runs
13
14[on]
15push = ["main"] # trigger on push to these branches; use ["*"] for all
16tag = false # trigger on tag push
17manual = true # allow manual trigger from the UI
18
19[variables]
20 # [variables.MY_VAR]
21 # default = "hello"
22 # description = "A custom variable, overridable from the UI"
23
24# Steps are executed in file order. Each [section] is one step.
25# Reserved section names: [on], [variables]
26
27[setup]
28run_sh = "apt-get update -qq && apt-get install -y --no-install-recommends build-essential"
29timeout = 180
30
31[build]
32run_sh = "make -C project all"
33
34[test]
35# run_if is a shell expression; the step is skipped if it returns non-zero
36# run_if = 'test -n "${CI_COMMIT_TAG}"'
37run_sh = "make -C project test"
38
39[package]
40run_sh = "make -C project dist"
41# Publish artifacts — these can appear in any step
42# publish_file: copy a single file directly
43# publish_file = ["/ci/build/project/dist/my-binary"]
44# publish_gzip: create a .tar.gz archive (requires tar in image)
45# publish_gzip = ["/ci/build/project/dist/"]
46# publish_tar: create a plain .tar archive
47# publish_tar = ["/ci/build/project/dist/"]
48# publish_zip: create a .zip archive (requires zip in image)
49# publish_zip = ["/ci/build/project/dist/"]
50# publish_zstd: create a .tar.zst archive (requires tar + zstd in image)
51# publish_zstd = ["/ci/build/project/dist/"]
52