ci: add Forgejo Actions lint + parse workflow #1
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "ci/forgejo-actions"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
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_requestandpushtomain)bash -n deploy.sh(syntax)shellcheck deploy.shyqparse ofaction.yml: valid YAML,runs.using == composite, all five expected inputs present (site-id,deploy-token,output-dir,build-command,ingest-url), andsite-id+deploy-tokenmarkedrequired: truedeploy.shmust exit non-zero at its required-input guard (before any curl)No deploy dry-run
deploy.shtalks 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 pinnedalpine:3.20container sobash,shellcheck, andyq(mikefarah) are present deterministically rather than depending on host tooling. The bare image has no Node, so checkout is plaingit(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]withactions/checkoutand rely on hostnpm/docker); a container gives reproducible lint tooling for a shell/YAML action.Verification (before pushing)
Ran the exact CI steps in
alpine:3.20via Docker: installed bash + git + shellcheck + yq, thenbash -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.