ci: add Forgejo Actions lint + parse workflow #1

Merged
stephen merged 1 commit from ci/forgejo-actions into main 2026-07-01 12:23:49 +00:00
Owner

Adds Forgejo Actions CI to pages-deploy-action, which had no workflows (P0 in codex-1's audit). This is a composite Forgejo Action (action.yml + deploy.sh) with no test harness, so CI lints the shell entrypoint and validates the action metadata.

What runs (on pull_request and push to main)

  • bash -n deploy.sh (syntax)
  • shellcheck deploy.sh
  • yq parse of action.yml: valid YAML, runs.using == composite, all five expected inputs present (site-id, deploy-token, output-dir, build-command, ingest-url), and site-id + deploy-token marked required: true
  • a network-free entrypoint smoke: with no env set, deploy.sh must exit non-zero at its required-input guard (before any curl)

No deploy dry-run

deploy.sh talks to the live Fjord Pages ingest endpoint (begin -> files -> commit over curl) and has no built-in dry-run/offline mode, so there's no cheap network-free deploy smoke to add. A full dry-run would need a stub ingest server, which is out of scope here. CI stays at lint + parse + the input-guard smoke, as the brief allows.

Runner

runs-on: ubuntu-latest (the fleet Linux label) with a pinned alpine:3.20 container so bash, shellcheck, and yq (mikefarah) are present deterministically rather than depending on host tooling. The bare image has no Node, so checkout is plain git (same pattern as fjord-ios's Linux job). This is a small, deliberate divergence from the sibling action repos (cache-action / docker-build-action run directly on [self-hosted, Linux] with actions/checkout and rely on host npm/docker); a container gives reproducible lint tooling for a shell/YAML action.

Verification (before pushing)

Ran the exact CI steps in alpine:3.20 via Docker: installed bash + git + shellcheck + yq, then bash -n (OK), shellcheck deploy.sh (clean, no findings), the yq checks (all pass), and the entrypoint smoke (correctly refused without inputs). Also verified the same checks with local shellcheck 0.11 + yq v4.53.

Adds Forgejo Actions CI to pages-deploy-action, which had no workflows (P0 in codex-1's audit). This is a composite Forgejo Action (`action.yml` + `deploy.sh`) with no test harness, so CI lints the shell entrypoint and validates the action metadata. ## What runs (on `pull_request` and `push` to `main`) - `bash -n deploy.sh` (syntax) - `shellcheck deploy.sh` - `yq` parse of `action.yml`: valid YAML, `runs.using == composite`, all five expected inputs present (`site-id`, `deploy-token`, `output-dir`, `build-command`, `ingest-url`), and `site-id` + `deploy-token` marked `required: true` - a network-free entrypoint smoke: with no env set, `deploy.sh` must exit non-zero at its required-input guard (before any curl) ## No deploy dry-run `deploy.sh` talks to the live Fjord Pages ingest endpoint (begin -> files -> commit over curl) and has no built-in dry-run/offline mode, so there's no cheap network-free deploy smoke to add. A full dry-run would need a stub ingest server, which is out of scope here. CI stays at lint + parse + the input-guard smoke, as the brief allows. ## Runner `runs-on: ubuntu-latest` (the fleet Linux label) with a pinned `alpine:3.20` container so `bash`, `shellcheck`, and `yq` (mikefarah) are present deterministically rather than depending on host tooling. The bare image has no Node, so checkout is plain `git` (same pattern as fjord-ios's Linux job). This is a small, deliberate divergence from the sibling action repos (cache-action / docker-build-action run directly on `[self-hosted, Linux]` with `actions/checkout` and rely on host `npm`/`docker`); a container gives reproducible lint tooling for a shell/YAML action. ## Verification (before pushing) Ran the exact CI steps in `alpine:3.20` via Docker: installed bash + git + shellcheck + yq, then `bash -n` (OK), `shellcheck deploy.sh` (clean, no findings), the yq checks (all pass), and the entrypoint smoke (correctly refused without inputs). Also verified the same checks with local shellcheck 0.11 + yq v4.53.
ci: add Forgejo Actions lint + parse workflow
All checks were successful
CI / Lint + parse (pull_request) Successful in 8s
2176a439b9
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
rasterstate/pages-deploy-action!1
No description provided.