This repository hosts a collection of reusable GitHub Actions used across the Armbian project — for building images, provisioning and managing Hetzner Cloud runners, preparing and cleaning self-hosted runners, driving Device-Under-Test (DUT) hardware tests, and generating release metadata and redirector configuration.
Each top-level directory is a self-contained composite GitHub Action (action.yml).
| Action | Description |
|---|---|
build-images/ |
Wraps Armbian's Docker-based image build workflow with a small set of inputs (target, runner size, source/packages repository, board filter). |
collect-data/ |
Runs iperf3, 7z b, kernel/U-Boot and armbianmonitor collection over SSH on a DUT and exports results as environment variables. |
dut-run/ |
Installs kernel/DTB/headers from the selected Armbian APT repository on a DUT, reboots it, invokes collect-data, and emits a JSON result fragment. |
hetzner/ |
Creates or deletes Hetzner Cloud servers preconfigured (via cloud-init) with Docker and self-hosted runners. See hetzner/README.md. |
latest-cache/ |
Checks out armbian/cache and computes the next rootfs cache version number into ROOTFSCACHE_VERSION. |
make-json/ |
Generates JSON and Markdown release listings from a GitHub release's assets, filtered via grep. See make-json/README.md. |
make-list/ |
Builds board/branch/release/desktop target lists by cross-referencing armbian/build board configs against already-released assets in armbian/community. |
make-yaml-redirector/ |
Renders a dlrouter-*.yaml configuration for the Armbian download router, pulling server metadata from NetBox. |
power-on/, power-off/ |
SSH-triggered power control for DUT hardware, using injected SSH keys. |
triggers/ |
Generic SSH trigger action — installs a key, connects, and runs a remote command. |
runner-prepare/ |
Cleans mounts, workspaces and caches on self-hosted runners before a build. |
runner-clean/ |
Post-run cleanup: resolves per-runner proxy/cache settings from github.armbian.com/servers/github-runners.jq, exports env vars (APT proxy, ccache, ghcr mirror, xz memory cap), tidies caches, and ensures tree, mktorrent and gh are present. |
team-check/ |
Cancels the workflow if the actor is not a member of the given armbian GitHub team. |
Other files:
index.htm— the static page deployed via GitHub Pages (see below)..github/workflows/static.yml— deploysindex.htmtogether with JSON data pulled from thedatabranch ofarmbian/armbian.github.ioto GitHub Pages.LICENSE— GNU GPL v3.
- YAML — composite action definitions (
action.yml) and the GitHub Actions workflow. - Bash — the logic inside each action's
run:steps (APT/SSH orchestration, JSON assembly, cache management, NetBox queries viacurl+jq). - Python 3 — the
hetzner/action shipscreate_servers.pyanddeploy_runners.py, driven via thehcloudPython client. - HTML —
index.htm, published through GitHub Pages.
External tools invoked by the actions include gh, jq, json (npm), ssh, curl, iperf3, 7z, datamash, lftp, mktorrent, tree, and git.
Reference an individual action from another workflow by path and ref, for example:
- name: Build images
uses: armbian/actions/build-images@main
with:
choice: "stable"
runner: "ubuntu-latest"
sourcerepo: "nightly"
packagesrepo: "yes"
advanced: "grep -w tinkerboard |"- name: Create Hetzner runner
uses: armbian/actions/hetzner@main
with:
action: create
server-type: cax41
ssh-key: "UPLOAD"
hetzner-token: ${{ secrets.HETZNER_ONE }}
github-token: ${{ secrets.HETZNER_RUNNER }}Per-action inputs and further examples are documented in the individual action.yml files and, where present, the action's own README.md (build-images/, hetzner/, make-json/).
CI status and history for this repository are tracked centrally:
- Armbian project: https://www.armbian.com
- Documentation: https://docs.armbian.com
- Armbian build framework: https://github.com/armbian/build
- Armbian download router: https://github.com/armbian/armbian-router
Released under the GNU General Public License v3.0 — see LICENSE.
