Files
forgerunner/CHANGELOG.md
T
Jason Stedwell ffc75cc25f
CI Smoke / toolchain (push) Successful in 1s
Phase 3 complete: docker login/build/push validated on live runner
Run 114 logged in to registry.alwisp.com, built, and pushed a test image
via the host label. Mark Phase 3 done in ROADMAP and CHANGELOG.

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

3.1 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).

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.