Repository navigation
Releases: dchote/github-runner-addon
Releases · dchote/github-runner-addon
Release list
0.6.1
- Do not persist AWS access keys in
extra_env(AWS_ACCESS_KEY_ID/ secret / session token). Skip those keys if already stored. The manager does not disable IMDS and does not reserveAWS_PROFILE/AWS_CONFIG_FILE. See 0008 - Operator lifecycle logs at info: create/recreate/apply/start/stop/restart/delete and Recreate missing (phases plus done/fail). Image pulls and PAT token minting are logged; list/health polls stay quiet. Use
debugfor inspect/helpers
0.6.0
- Reset-resilient recreate: configure phase no longer uses
DEBUG_ONLY(upstream skipsconfig.shwhen that flag is set and.runneris missing). Configure usesRUNNER_TOKEN+ CMDtrue+restart=no, then a tokenless listener. Recreate works after a Docker wipe with a token/PAT — see 0007 - Do not 409
RUNNER_BUSYwhen the managed container is missing or exited (leftover hoststatus.jsonafter a Docker reset); inspect failures fail closed as 503; a running container with missing/unreadable/unknownstatus.jsonis 409 - Create rollback keeps the store row and data volume when
.runneror a managed container exists; recreate restores.runnerfrom backup if start fails; Save & apply persists only after a successful recreate - Create/recreate rate-limit quota is consumed only after validation (400/404 do not count); extra_env values, CPU/memory caps, and
network_modeare validated - Operator Recreate missing (
POST /api/v1/runners/recreate-missing) restores a Docker-reset fleet; Start/restart/logs on a missing container return 400 - Listen wait timeout while the container is still running fails create/recreate (never 201); leftover configure containers with
RUNNER_TOKENare not adopted as the listener GET /runners/{id}reads.runnerviaCopyFromContainerwhile running and skips volume helpers when missing; configure wait does not alpine-poll on file-not-found;ReadVolumeFiledoes not auto-create missing volumes and shares the helper semaphore- List after a successful
ListManagedmarks absent namesmissingwithoutInspectByName - Clear error when image is missing (
:localtags are not pulled, 400); registry pull failures are 502IMAGE_PULL_ERROR - Health
statusisokordegraded(HTTP stays 200); empty HAgithub_patunsets inheritedGITHUB_PAT; host binaries bind127.0.0.1unlessLISTEN_ADDR/ Docker / Supervisor - WebSocket Origin no longer trusts
X-Ingress-Pathalone; log lines and errors are token-redacted - UI: list poll no longer clears recreate errors; failed mutations refresh the list; Recreate / Recreate missing / Edit apply always offer a token field and show the API error
0.5.3
What's changed
- Same-path build cache: bind mounts always use
host_pathas the container target; injectRUNNER_CACHE/ exposecache_effectivefor workflows and Buildxtype=local(see 0006) - Remove bind
host_path≠targetmismatch warning (coerced instead); named-volume sibling advisory retained - UI: Persistent cache defaults to host path (bind); single host-path field; prefer
$RUNNER_CACHEin help copy EnsureHostDirbinds the path’s top-level directory so any absolute host path works (USB, SSD, custom mounts) — no allowlist- Concurrent API scalability: parallel List enrich, batched
ListManaged, inspect singleflight + generation-gated TTL cache, capped helper concurrency, per-runner lifecycle locks, cheap HealthStatusCounts, List job-status without host helpers, timeout-safe response writer - API rejects recreate / delete / patch-apply while
job_state=busy(409RUNNER_BUSY) - Stop/restart remain available for emergency intervention; UI busy gating unchanged
Install
Home Assistant addon image: ghcr.io/dchote/github-runner-addon:0.5.3
0.5.2
What's Changed
- Soft advisories on runner API/UI as
warnings[](create/patch still succeed):- cache bind with
host_path≠target(sibling Docker / Buildxtype=localmiss) - cache named volume (never visible to sibling host binds of the target path)
- cache bind with
- Docs/UI: same-path cache bind recipe (prefer
host_path= mount path, commonly both/cache) - UI: selecting host-path cache prefills Host path from the mount path when empty; details use warning alerts
Image: ghcr.io/dchote/github-runner-addon:0.5.2
0.5.1
What's Changed
- Register runners with a configure-only (
DEBUG_ONLY) container, then start the long-running listener withoutRUNNER_TOKEN— avoids killing a live GitHub session to scrub the token (fixes “session already exists” races) - Recreate reuses volume credentials without minting a fresh token unless workdir/volume reconfigure is required
- UI: only the action that was clicked shows a loading spinner; other controls are disabled while it runs
- UI: disable Edit / Delete / Recreate while a runner is busy (
job_state=busy); start/stop/restart/logs stay available (UI-only; API unchanged)
Image: ghcr.io/dchote/github-runner-addon:0.5.1
0.5.0
What's Changed
- Show runner idle/busy job activity (and current job fields while busy) from local Actions job hooks — no PAT required; see 0005
- Status column shows idle/busy/unknown when the container is running; details pane lists current job metadata
- After upgrade, Recreate existing runners so
ACTIONS_RUNNER_HOOK_JOB_*env is applied
Image: ghcr.io/dchote/github-runner-addon:0.5.0 (published by CI Builder)
0.4.4
Summary
- Harden Docker lifecycle against client/ingress cancel: detached create/recreate/scrub contexts; fail closed on workdir verify (return error, keep runner for recovery); do not clear
.runneron transient read cancel - List skips live
.runnerreads (cache-only); Get/details fetch live diagnostics; short-lived volume helper; longer PATCH/stop/delete API timeouts - Docs: workdir diagnostics List vs Get; consuming-repo Actions
RUNNER_TOKENnote
Install
ghcr.io/dchote/github-runner-addon:0.4.4
0.4.3
What's fixed
.runnerworkFolder reads no longer go throughcat+ container logs (multiplex framing could corrupt JSON and surface asinvalid character 'ï'…)- Use
CopyFromContainer+ UTF-8 BOM strip so create/verify completes quickly
Home Assistant users: update to ghcr.io/dchote/github-runner-addon:0.4.3, then recreate the runner if create previously failed verification.
See CHANGELOG.
0.4.2
What's fixed
- Stop the runner container before clearing
.runnerfor workdir reconfigure - Fail closed if agent
workFolderdoes not match the host bind after start - Create missing host dirs via the narrowest bind root (
/srv,/mnt, …) instead of always mounting/ - Typed
ErrVolumeFileNotFound(no fragileexit 1string matching); hard read errors are not cached - UI default workdir hint uses the same normalized name as the backend
- Pipeline unit tests via a
workdirHostseam; remove unusedVolumeMountpoint
Home Assistant users: update to ghcr.io/dchote/github-runner-addon:0.4.2.
See CHANGELOG.
0.4.1
What's fixed
- Create missing workdir (and cache bind) host directories before bind-mount so runner create no longer fails when
/srv/gha-work/<name>does not exist yet
Home Assistant users: update to ghcr.io/dchote/github-runner-addon:0.4.1, then create/recreate the runner.
See CHANGELOG.