From 1989092cf7f1b25fd4d1961e400ced1ea0a4179c Mon Sep 17 00:00:00 2001 From: Igor Pecovnik Date: Tue, 15 Sep 2026 06:40:58 +0200 Subject: [PATCH 1/2] readme workflow: open PRs as armbianworker, not a person The release digest filters merged PRs by author: if [[ "$author" == "github-actions[bot]" || ... || "$author" == "armbianworker" ]]; then continue so it only skips bots and the worker account. maintenance-update-readme.yml passed secrets.ACCESS_TOKEN to peter-evans/create-pull-request, which is a personal token, so every `Automatic` refresh repository README PR was authored by igorpecovnik and looked like an ordinary human contribution. That is how they reach the release notes. Use ACCESS_TOKEN_ARMBIANWORKER instead. The secret already exists on this repo -- reporting-release-summary.yml uses it for its own create-pull-request -- and armbianworker has write on all fifteen target repos, checked individually. All three uses are switched together: the target-repo checkout, the gh call that collects reviewer feedback, and the PR itself. Leaving the checkout on a different identity than the push would be asking for trouble. Note the fifteen PRs already open keep their original author, so they will still show up in the digest when merged. Signed-off-by: Igor Pecovnik --- .github/workflows/maintenance-update-readme.yml | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/.github/workflows/maintenance-update-readme.yml b/.github/workflows/maintenance-update-readme.yml index 556cb5409a..ed8078ae9f 100644 --- a/.github/workflows/maintenance-update-readme.yml +++ b/.github/workflows/maintenance-update-readme.yml @@ -12,8 +12,12 @@ # # Secrets (already present on this repo): # ANTHROPIC_API_KEY - Claude API key (same one reporting-release-summary uses) -# ACCESS_TOKEN - PAT with `repo` scope on the target repos (the builtin -# GITHUB_TOKEN cannot push branches / open PRs cross-repo) +# ACCESS_TOKEN_ARMBIANWORKER +# - armbianworker PAT with `repo` scope on the target repos +# (the builtin GITHUB_TOKEN cannot push branches / open PRs +# cross-repo). Must be the worker account, not a person: +# reporting-release-summary.yml filters the release digest +# by PR author, and a human author lands these in the notes. name: "Maintenance: Update README (AI)" on: @@ -70,7 +74,7 @@ jobs: uses: actions/checkout@v7 with: repository: ${{ matrix.repo }} - token: ${{ secrets.ACCESS_TOKEN }} + token: ${{ secrets.ACCESS_TOKEN_ARMBIANWORKER }} path: target fetch-depth: 0 @@ -89,7 +93,7 @@ jobs: # closed: any gh/API error aborts the run rather than proceeding feedback-less. - name: Collect reviewer feedback from the open README PR env: - GH_TOKEN: ${{ secrets.ACCESS_TOKEN }} + GH_TOKEN: ${{ secrets.ACCESS_TOKEN_ARMBIANWORKER }} REPO: ${{ matrix.repo }} run: | set -euo pipefail @@ -121,7 +125,7 @@ jobs: - name: Open pull request uses: peter-evans/create-pull-request@v8 with: - token: ${{ secrets.ACCESS_TOKEN }} + token: ${{ secrets.ACCESS_TOKEN_ARMBIANWORKER }} path: target branch: chore/update-readme delete-branch: true From db23c283376a35ac4368264c7e9e5fc485b8d588 Mon Sep 17 00:00:00 2001 From: igorpecovnik <6281704+igorpecovnik@users.noreply.github.com> Date: Tue, 15 Sep 2026 04:43:41 +0000 Subject: [PATCH 2/2] docs: refresh README (AI-assisted) --- README.md | 80 ++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 70 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 35619c84bf..486c7a6bfd 100644 --- a/README.md +++ b/README.md @@ -3,21 +3,81 @@

-### Purpose of This Repository +# armbian.github.io -This repository acts as a central **automation and orchestration hub** for the Armbian project. It coordinates CI workflows, maintains metadata, syncs external data, and generates machine-readable output to power [armbian.com](https://www.armbian.com), [docs.armbian.com](https://docs.armbian.com), and related services. +## Purpose of This Repository -It also produces [data exchange files](https://github.armbian.com/) used for automation, reporting, and content delivery across the Armbian infrastructure. +This repository is the **automation and data hub** for the Armbian project. It hosts the CI workflows, Python and shell scripts, board/vendor artwork, and release-target configuration that together generate the metadata powering [armbian.com](https://www.armbian.com), [docs.armbian.com](https://docs.armbian.com), and Armbian's download and mirror infrastructure. +Generated data (image indices, partner lists, torrent trackers, release-target YAML, keyrings, MOTD, etc.) is published to the repository's `data` branch and served from [github.armbian.com](https://github.armbian.com/). -### Workflow Status & Monitoring +## Repository Layout -**[GitHub actions dashboard](https://actions.armbian.com/?repo=armbian.github.io)** +``` +board-images/ Per-board product photos (PNG), thumbnailed by CI +board-vendor-logos/ Per-vendor logo files, thumbnailed by CI +release-targets/ Inputs & config for the build-target YAML generator +scripts/ Python, Bash and Node scripts run by the workflows +templates/ Templates used by generation scripts +.github/workflows/ Scheduled and event-driven automation +``` -Monitor all automation workflows with real-time status tracking: +The `release-targets/` directory has its own [README](release-targets/README.md) covering the target-YAML generator, its inputs (`targets-extensions.map`, `exposed.map.overrides.yaml`, `reusable.yml`, `targets-release-.blacklist`, `targets-release-.manual`) and outputs (`targets-release-*.yaml`, `exposed.map`). -- **Execution history** — Complete log of past workflow runs with timestamps and outcomes -- **Performance metrics** — Runtime duration, resource usage, and success/failure rates -- **Live status** — Current state of running CI/CD pipelines and scheduled tasks -- **Debugging tools** — Detailed logs and error traces for failed workflows +## What This Repository Produces +The workflows here maintain — on the `data` branch — a set of machine-readable files consumed by the Armbian website, the build framework, and third-party tools. Highlights: + +| File / path (on `data` branch) | Description | +|---|---| +| `data/image-info.json` | Inventory of all boards known to `armbian/build`. | +| `data/armbian-images.json` | Full download index cross-referenced with the mirror source of truth. | +| `data/release-targets/targets-release-*.yaml` | Build-matrix definitions for standard-support, nightly, community and apps images. | +| `data/release-targets/exposed.map` | Regex patterns the website uses to pick each board's "recommended image". | +| `data/release-targets/kernel-description.json` | Human-readable kernel branch descriptions. | +| `data/partners.json`, `data/maintainers_with_avatars.json` | Partner and maintainer data enriched from Zoho Bigin and GitHub. | +| `data/rpi-imager.json` | Armbian catalog for the Raspberry Pi Imager tool. | +| `data/base-files.json` | Index of the Armbian `base-files` package versions. | +| `data/keyrings/` | Latest Debian and Ubuntu archive-keyring `.deb` packages. | +| `data/servers/{download,cache,upload,github-runners}.jq` | Live server inventory pulled from NetBox. | +| `data/servers/best-torrent-servers.txt` | Curated BitTorrent tracker list for image torrents. | +| `data/actions-report/` | CI status snapshots for the Armbian repositories. | +| `data/quotes.txt` | MOTD messages for installed Armbian systems. | +| `data/jira-current.html`, `data/jira-next.html` | Rendered Jira excerpts of current and next release scope. | + +## Built With + +- **Python 3** — data generators under `scripts/` (e.g. `generate_targets.py`, `generate_kernel_descriptions.py`, `generate-base-files-info-json.py`, `generate-rpi-imager-json.py`, `days_since_last_commit.py`). +- **Bash** — glue and mirror-side shell scripts (e.g. `generate-armbian-images-json.sh`) plus the `run:` steps embedded in the workflows. +- **Node.js** — `scripts/generate-actions-report.mjs` for the CI status reports. +- **GitHub Actions (YAML)** — orchestration of scheduled, dispatched and event-driven jobs. +- **jq**, **curl**, **rsync**, **GraphicsMagick + pngquant** — invoked from the workflows for JSON shaping, HTTP/rsync transfers and image thumbnailing. + +## Branches + +- **`master`** — source of truth: workflows, scripts, board & vendor artwork, release-target configuration. +- **`data`** — machine-generated outputs, committed by CI and served from [github.armbian.com](https://github.armbian.com/). Do not edit by hand. + +## Workflow Status & Monitoring + +**[GitHub Actions dashboard for this repository](https://actions.armbian.com/?repo=armbian.github.io)** + +Rather than enumerating every workflow here, the Armbian Actions dashboard provides: + +- **Execution history** — every past workflow run with timestamps and outcomes +- **Performance metrics** — runtime duration, success/failure rates +- **Live status** — current state of scheduled and dispatched jobs +- **Debugging tools** — logs and error traces for failed runs + +## Contributing + +See [CONTRIBUTING.md](CONTRIBUTING.md) for how to propose changes, and [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) for community expectations. Additional ways to help: + +- [Become a board maintainer](https://docs.armbian.com/Board_Maintainers_Procedures_and_Guidelines/) +- [Apply for a project position](https://forum.armbian.com/staffapplications/) +- [Help cover costs](https://forum.armbian.com/subscriptions/) +- [Answer questions on the forum](https://forum.armbian.com/) + +## License + +Distributed under the terms of the GNU General Public License v2. See [LICENSE](LICENSE) for the full text.