on: push / on: pull_request | push / pull_request triggers | Direct mapping — same semantics |
on: schedule (cron) | No local DSL trigger | Scheduled pipelines are a Harmont Cloud concern, not a local pipeline trigger; omit the schedule or configure it in cloud. |
jobs.<id>.steps | Chain of toolchain calls or sh() | Each meaningful step becomes a Harmont step |
jobs.<id>.needs | .fork() for parallel, sequential chain for dependencies | Harmont DAG is implicit from chain structure |
actions/cache | Not needed — caching is implicit in Harmont | Harmont automatically caches build artifacts, dependency installs, and toolchain outputs between runs. Remove all cache steps. |
actions/setup-* (setup-node, setup-python, etc.) | Harmont toolchains (hm.js, hm.python, etc.) | Toolchains handle installation. Specify version via toolchain config. |
actions/checkout | Not needed — source is always available | Harmont automatically provides the source code to every step. |
runs-on: ubuntu-latest | (default base is ubuntu:24.04; set a per-step image="..." to override) | Harmont runs steps in Docker containers |
services: (e.g., postgres) | Service containers in step config | Check docs for service container syntax |
matrix: | Multiple pipelines or parameterized steps | No direct matrix — may need separate pipeline definitions or .fork() |
env: / secrets.* | env: {} on pipeline or step | Secrets must be passed as environment variables |
actions/upload-artifact / actions/download-artifact | Step outputs and DAG dependencies | Harmont passes outputs between steps via the DAG |
if: conditionals | Pipeline-level logic (Python/TS) | Use the DSL's native control flow |