Files
forgerunner/CHANGELOG.md
T
Jason Stedwell 1ad33c2396
CI Smoke / toolchain (push) Successful in 1s
Make v0.1.0 Unraid-ready: multi-arch image, correct image path, registry-login docs
- Publish v0.1.0/latest as multi-arch (linux/amd64+arm64); amd64 passes 17/17 smoke
- publish-image.sh: add PLATFORMS multi-arch buildx mode (reproducible amd64 build)
- compose + unraid notes: fix image path to include jason/ namespace
- unraid notes: document required docker login (private package) and host label
  for docker build/push jobs

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-29 22:18:38 -05:00

3.6 KiB

Changelog

All notable changes to this project will be documented in this file.

The format follows Keep a Changelog.


[Unreleased]

Added

  • Initial repository scaffold: directory structure, Dockerfile, entrypoint, healthcheck, smoke-test, config examples, compose example, and docs.
  • Phase 0 planning documents: AGENT.md, README.md, ROADMAP.md.
  • First successful local image build: custom-gitea-runner:v0.1.0 (act_runner v0.2.11, Node 20, Docker CLI). Runtime smoke test passes 17/17.
  • First live registration validated against git.alwisp.com (Gitea 1.26.4): instance-level runner registers, comes online, runs healthy, and restart reuses the existing config without creating a duplicate.
  • .gitea/workflows/ci-smoke.yml: Phase 3 CI smoke workflow. Runs on the host label to validate the bundled toolchain (actions/checkout@v4, node/npm/git/docker, mounted Docker socket) directly in the runner container. First run passed.
  • Published registry.alwisp.com/jason/custom-gitea-runner:v0.1.0 (and :latest) — first image release to the Gitea Container Registry.
  • .gitea/workflows/docker-push.yml: Phase 3 docker login/build/push validation workflow (host label). Run 114 logged in, built, and pushed a test image to the registry — completing Phase 3.

Changed

  • test/sample-workflows/docker-login.yml and docker-build-push.yml: now run on the host label instead of ubuntu-latest. Docker build/push need the runner's bundled Docker CLI and mounted socket, which the ubuntu-latest node job container does not provide. Also fixed a doubled image path in the build/push sample (gitea.repository already includes the owner).
  • Published v0.1.0/latest as a multi-arch manifest (linux/amd64 + linux/arm64) so it runs on Unraid (amd64) as well as Apple Silicon. The amd64 variant passes the 17/17 smoke test.
  • Unraid docs and compose example: corrected the image path to include the jason/ owner namespace (registry.alwisp.com/jason/custom-gitea-runner), added a required registry-login step (the package is private), and recommended the host label for Docker build/push jobs (GITEA_RUNNER_LABELS=…,host:host).

Fixed

  • docker/runner/Dockerfile: COPY paths for the entrypoint, healthcheck, and smoke-test scripts now resolve from the repo-root build context used by scripts/build-image.sh (previously assumed the build context was docker/runner/, so the build failed at the COPY steps).
  • scripts/verify-runtime.sh: now runs the smoke test via --entrypoint so it bypasses the tini/bootstrap ENTRYPOINT instead of triggering the registration flow and failing on a missing GITEA_INSTANCE_URL.
  • docker/runner/docker-entrypoint.sh: GITEA_RUNNER_LABELS is now honored. act_runner register ignores its --labels flag when a config already exists, so the bootstrap generated a config with default labels and the env var was silently a no-op. The entrypoint now injects the labels into the generated config before registering.
  • scripts/deregister-runner.sh: rewritten to deregister via the Gitea REST API. The previous version called act_runner daemon --unregister, a flag/command that does not exist in act_runner — deregistration must go through DELETE /api/v1/admin/actions/runners/{id}. Now takes a runner name or id and an admin API token.
  • scripts/publish-image.sh: now supports a REGISTRY_NAMESPACE (default jason) so images push to registry.alwisp.com/<owner>/<image>. The Gitea Container Registry requires an owner namespace; without it the push 404s on blob upload.