GitHub Actions Reference
kindling ships two reusable composite actions that replace 15+ lines
of signal-file boilerplate with a single uses: step. These actions
live in the kindling repo under .github/actions/ and are referenced as:
kindling-sh/kindling/.github/actions/kindling-build@main
kindling-sh/kindling/.github/actions/kindling-deploy@main
kindling-build
Build and push a container image via the Kaniko build-agent sidecar.
This action runs the Dockerfile found in the build context directory as-is using Kaniko. It does not generate or modify Dockerfiles. Each service must have a working Dockerfile that builds successfully on its own (e.g. docker build .). If it doesn't build locally, it won't build in kindling.
Inputs
| Input | Required | Default | Description |
|---|---|---|---|
name | ✅ | — | Unique build name (used for signal files: /builds/<name>.*) |
context | ✅ | — | Path to the build context directory |
image | ✅ | — | Full image reference (registry/name:tag) |
exclude | ❌ | "" | tar --exclude patterns (space-separated, e.g. "./ui ./.git") |
dockerfile | ❌ | "" | Path to Dockerfile relative to build context (e.g. api/Dockerfile). If omitted, Kaniko uses the default Dockerfile in the context root. |
timeout | ❌ | 300 | Max seconds to wait for the build to complete |
What it does
- Creates a tarball of the build context at
/builds/<name>.tar.gz(with optional--excludepatterns) - Writes the target image to
/builds/<name>.dest - If
dockerfileis specified, writes the path to/builds/<name>.dockerfile - Touches
/builds/<name>.requestto trigger the Kaniko sidecar - Polls for
/builds/<name>.done(up totimeoutseconds) - Checks
/builds/<name>.exitcode— exits non-zero on failure
Usage
- name: Build my-app
uses: kindling-sh/kindling/.github/actions/kindling-build@main
with:
name: my-app
context: ${{ github.workspace }}
image: "registry:5000/my-app:${{ github.sha }}"
With exclusions
- name: Build API (exclude UI directory)
uses: kindling-sh/kindling/.github/actions/kindling-build@main
with:
name: my-api
context: ${{ github.workspace }}
image: "registry:5000/my-api:${{ github.sha }}"
exclude: "./ui ./.git ./node_modules"
With custom Dockerfile path
When the Dockerfile is not at the context root (common in monorepos or
projects using docker-compose with context: . and dockerfile: api/Dockerfile):
- name: Build API (Dockerfile in subdirectory)
uses: kindling-sh/kindling/.github/actions/kindling-build@main
with:
name: my-api
context: ${{ github.workspace }}
image: "registry:5000/my-api:${{ github.sha }}"
dockerfile: "api/Dockerfile"
kindling-deploy
Deploy a DevStagingEnvironment CR via the build-agent sidecar.
Inputs
| Input | Required | Default | Description |
|---|---|---|---|
name | ✅ | — | DSE metadata.name (typically <actor>-<service>) |
image | ✅ | — | Container image reference |
port | ✅ | — | Container port (string) |
labels | ❌ | "" | Extra labels as YAML block |
env | ❌ | "" | Extra env vars as YAML block |
dependencies | ❌ | "" | Dependencies as YAML block |
ingress-host | ❌ | "" | Ingress hostname (omit to skip ingress) |
ingress-class | ❌ | traefik | Ingress class name |
routes | ❌ | "" | Extra path → service routes merged onto this DSE's Ingress, as a YAML block (requires ingress-host) |
health-check-path | ❌ | /healthz | HTTP health check path |
replicas | ❌ | 1 | Number of replicas |
service-type |