Shared CI workflow files and conventions for all projects
| .forgejo/workflows | ||
| README.md | ||
ci-workflows
Shared CI workflow files for all projects on forge.jacquin.app.
Convention
Workflows are project-agnostic. All project-specific logic lives in the project's justfile under standard recipe names.
Required justfile recipes
| Recipe | Used by | Purpose |
|---|---|---|
ci-setup |
qa, release | Install toolchain + project deps. Reads ARCH env var (x86_64, aarch64). |
fmt-check |
qa | Check formatting (fail if unformatted). |
lint |
qa | Run all linters. |
test |
qa | Run all tests. |
ci-build |
release | Build release artifacts. Reads ARCH env var. |
ci-package |
release | Package artifacts into dist/. Reads VERSION, ARCH env vars. |
Workflows validate these recipes exist before running. Missing recipe = immediate failure with a clear error.
Usage
QA (on push to main + PRs)
# .forgejo/workflows/qa.yml
name: qa
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
qa:
uses: forge_admin/ci-workflows/.forgejo/workflows/qa.yml@main
# with:
# container: "debian:trixie" # optional, default: debian:trixie
Release (on tag push)
# .forgejo/workflows/release.yml
name: release
on:
push:
tags: ["v*"]
jobs:
release:
uses: forge_admin/ci-workflows/.forgejo/workflows/release.yml@main
with:
release-notes: |
## My Project ${{ github.ref_name }}
### Downloads
...
Inputs
| Workflow | Input | Default | Description |
|---|---|---|---|
| both | container |
debian:trixie |
Container image |
| both | cache-path |
"" |
Paths to cache (skip if empty) |
| both | cache-key |
"" |
Cache key suffix |
| release | release-notes |
"" |
Release notes markdown |