Skip to content

Releases: armbian/configng

26.8.0-trunk.162.0612.130428

12 Jun 13:04

Choose a tag to compare

runner-cleanup: give job-completed hook a .sh extension

The GitHub runner validates ACTIONS_RUNNER_HOOK_JOB_COMPLETED and rejects
it in the 'Complete runner' step unless the path ends in .sh/.ps1/.js:

  Error: /usr/local/sbin/runner-job-completed is not a valid path to a
  script. Make sure it ends in '.sh', '.ps1' or '.js'.

Rename runner-job-completed -> runner-job-completed.sh, install it under
that name, point the per-runner .env at it, and remove the old
extensionless copy from earlier installs. The .env wiring is an idempotent
sed, so re-running install migrates existing runners to the new path.

Signed-off-by: Igor Pecovnik <igor@armbian.com>

26.8.0-trunk.160.0612.072900

12 Jun 07:29

Choose a tag to compare

runner-cleanup: chown workspace after each job via JOB_COMPLETED hook

Armbian builds run in Docker as root and bind-mount the runner workspace,
leaving root-owned files under _work (cache/sources, cache/aptcache, ...).
The next job's actions/checkout runs as the runner user and fails to clean
the workspace: 'EACCES: permission denied, rmdir .../cache/aptcache/lists'.

The runner process runs continuously and doesn't restart between jobs, so
systemd start/stop hooks can't fire per-job. GitHub's
ACTIONS_RUNNER_HOOK_JOB_COMPLETED does — it runs after every job as the
runner user (which has passwordless sudo). Add a runner-job-completed hook
that selectively chowns the runner's _work tree back to the runner user
(only files not already owned by it), and wire it into every runner's .env
during module_armbian_runners install (idempotent; covers existing runners,
takes effect on each runner's next restart).

Complements the start-of-job selective chown in armbian/actions#23 and is
workspace-agnostic (covers any job on the runner, not just those using the
runner-clean action).

Signed-off-by: Igor Pecovnik <igor@armbian.com>

26.8.0-trunk.160.0612.072848

12 Jun 07:29

Choose a tag to compare

runner-cleanup: chown workspace after each job via JOB_COMPLETED hook

Armbian builds run in Docker as root and bind-mount the runner workspace,
leaving root-owned files under _work (cache/sources, cache/aptcache, ...).
The next job's actions/checkout runs as the runner user and fails to clean
the workspace: 'EACCES: permission denied, rmdir .../cache/aptcache/lists'.

The runner process runs continuously and doesn't restart between jobs, so
systemd start/stop hooks can't fire per-job. GitHub's
ACTIONS_RUNNER_HOOK_JOB_COMPLETED does — it runs after every job as the
runner user (which has passwordless sudo). Add a runner-job-completed hook
that selectively chowns the runner's _work tree back to the runner user
(only files not already owned by it), and wire it into every runner's .env
during module_armbian_runners install (idempotent; covers existing runners,
takes effect on each runner's next restart).

Complements the start-of-job selective chown in armbian/actions#23 and is
workspace-agnostic (covers any job on the runner, not just those using the
runner-clean action).

Signed-off-by: Igor Pecovnik <igor@armbian.com>

26.8.0-trunk.155.0611.205643

11 Jun 20:57

Choose a tag to compare

runners: make remove work via --api with named params and a range

remove was an internal positional helper (remove <name> <index>) and
ignored the named gh_token/runner_name/start/stop params, so an --api
call like `remove runner_name=ampere-1 start=76 stop=80` operated on a
literal runner named "runner_name=ampere-1" and removed nothing.

Worse, prefix/registration_url were derived only inside the install
branch, so remove/remove_online/purge built a malformed
'//actions/runners' URL that matched no runners.

- Derive prefix/registration_url before the case so every subcommand
  reaches the GitHub API.
- remove now accepts both the internal positional form and an --api
  named call with a start..stop range, removing <name>-<index> on GitHub
  and the matching actions-runner-<index> locally; returns non-zero if
  any GitHub delete failed (preserves install's skip-if-busy behavior).
- purge: pass the index to remove (was dropping it).

26.8.0-trunk.143.0610.201303

10 Jun 20:13

Choose a tag to compare

`Automatic` documentation update

26.8.0-trunk.142.0610.185504

10 Jun 18:55

Choose a tag to compare

docs(git_cdn): add GCDN001 help header/footer markdown

module_git_cdn (id GCDN001) had a config.software.json entry but no
help header/footer markdown. Add them in the APT001 (apt-cacher-ng)
style: overview + key features in the header, tabbed access / client
config / directories / logs in the footer.

Signed-off-by: Igor Pecovnik <igor@armbian.com>

26.8.0-trunk.140.0610.174518

10 Jun 17:45

Choose a tag to compare

software: tune git_cdn runtime envs (cache size, workers, depth, bundle)

Pass the proven git_cdn env vars on container run:
- PACK_CACHE_SIZE_GB=500 and GUNICORN_WORKER=12 (exposed as module options;
  workers otherwise defaults to host cpu_count())
- PACK_CACHE_DEPTH=true to cache shallow clones
- CDN_BUNDLE_URL="" to disable the upstream Android/AOSP clone-bundle
  default, irrelevant for a GitHub proxy

Verified every name/value against git_cdn source.

26.8.0-trunk.138.0610.114924

10 Jun 11:49

Choose a tag to compare

module_aptcacherng: use current ghcr.io/armbian image

Replace the abandoned sameersbn/apt-cacher-ng:3.3-20200524 (2020) image
with ghcr.io/armbian/apt-cacher-ng:latest, built from debian trixie
(apt-cacher-ng 3.7.x) by armbian/docker-armbian-build. This fixes the
reliability problems (stale/corrupt indexes, 503s under concurrent load,
broken HTTPS repos) that came from the dead 3.3 image.

Cache path and foreground run are unchanged, so install/remove/purge/
status all work as before. Author updated to @igorpecovnik since we now
build the image.

Signed-off-by: Igor Pecovnik <igor@armbian.com>

26.8.0-trunk.125.0608.214111

08 Jun 21:41

Choose a tag to compare

Add module_aptcacherng: apt-cacher-ng caching proxy

Single-container module wrapping sameersbn/apt-cacher-ng:3.3-20200524.
Caches Debian / Ubuntu .deb downloads on the LAN so each apt fetch from
upstream mirrors only happens once.

Wiring:

- tools/modules/software/module_aptcacherng.sh — install / remove /
  purge / status / help, same shape as module_qbittorrent /
  module_netbox. Cache lives at ${SOFTWARE_FOLDER}/apt-cacher-ng/cache
  so the purge action cleans it up correctly.

- tools/json/config.software.json — APT001 / APT002 / APT003 entries
  under Software → Management (next to NetBox), with the standard
  install / remove / purge triplet and a container_type=docker hint.

- tools/modules/runtime/config.runtime.sh — runtime URL hook so the
  Management menu links straight to the acng-report.html hit-rate page
  once the container is installed.

- tools/include/markdown/APT001-header.md + APT001-footer.md — the
  per-menu-ID header/footer pair the docs system splices into the
  rendered page (same convention as NBOX01 / FIL001).

26.8.0-trunk.121.0608.111447

08 Jun 11:15

Choose a tag to compare

fix(runners): use valid curl --create-dirs flag

curl has no --create-dir option; the correct long form is
--create-dirs. Newer curl (Debian trixie, 8.x) rejects the unknown
option outright and aborts the runner tarball download, leaving the
install with no tarball to unpack. Older curl builds tolerated it.

Signed-off-by: Igor Pecovnik <igor@armbian.com>