Commit Graph
17 Commits
Author SHA1 Message Date
Eduard Gert 4779d75306 Move every GitHub Action off the retired Node 20 runtime (#995)
GitHub Actions runners no longer ship Node 20 for JavaScript actions, and the
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION opt-out is gone, so any action whose
own action.yml declares `runs.using: node20` (or older) now fails to start.
Each target tag below was verified by reading its action.yml runtime directly,
not inferred from the version number.

  actions/checkout          v3, v4, v6 -> v7
  actions/setup-node        v4         -> v7
  actions/cache             v4         -> v6
  actions/setup-go          v5, v6     -> v7
  docker/metadata-action    v5         -> v6
  docker/login-action       v3         -> v4
  docker/build-push-action  v6         -> v7

booxmedialtd/ws-action-parse-semver is knowingly left alone. It declares node12
at v1, its newest tag v1.4.7 and master are node16, and the repo has not been
touched since 2023, so there is no version to move to. Replacing it is a real
change, not a version bump: it validates through node-semver and fails the job
on a non-semver tag, and the obvious substitutes are weaker. A plain shell
capture accepts the dispatch input's own placeholder default of refs/tags/vX.Y.Z,
and netbirdio/shared-actions/actions/parse-semver falls back to 0.0.0 rather
than failing. Either would let the job run on past the bad version, 404 the
openapi.yml download, and push a commit deleting all 36 generated API pages,
because the curl has no --fail and the Go expander ignores read and parse
errors. That swap needs those guards and its own PR.

Breaking changes across every major crossed were checked against the actual
workflow lines and none apply: setup-node v5/v6 auto-caching needs a
packageManager field package.json does not have (and every call site already
passes cache: 'npm'); setup-node v7 drops a NODE_AUTH_TOKEN export nothing
here uses, as no step sets registry-url; cache v5/v6 and checkout v5 raise the
runner floor, and every job runs on ubuntu-latest or macos-latest; checkout v6
relocates persisted credentials, which generate_api_pages already proves
harmless by pushing over HTTPS on v6 today; checkout v7 blocks fork PR heads
under pull_request_target and workflow_run, neither of which is a trigger in
this repo; metadata-action v6 changes '#' handling in list inputs, and the one
input is a bare image name; build-push-action v7 removes DOCKER_BUILD_NO_SUMMARY
and DOCKER_BUILD_EXPORT_RETENTION_DAYS, neither set anywhere; setup-go v6
reworks toolchain selection, and the only Go dependency here declares go 1.18
against an installed 1.21.

The two pull_request-triggered checkouts that run PR-authored code and never
touch a remote — pr-build and codespell — also stop persisting a token into
the workspace. build_n_push keeps its credentials: the same checkout feeds the
promote step's `git ls-remote origin`, so hardening it needs a job split.

setup-node's node-version stays at 20. That is a real concern separately, since
Node 20 is EOL, but docker/Dockerfile is FROM node:20-slim and build_n_push
builds the Next standalone bundle on the runner and copies it into that image,
so build-time and runtime Node have to move together and be proven by a real
build. It belongs in its own PR.
2026-09-24 14:50:53 +02:00
Jack CarterandBrandon Hopkins 2a02ce7edd ci: harden the build and API-pages workflows (#843)
* ci: serialise image builds and stop the API-pages workflow clobbering the lockfile

build_n_push: add a per-ref concurrency group so two quick merges to main can't race the :main tag (last push wins regardless of commit order, and the server auto-pulls :main); add permissions: contents: read; validate .dockerignore and package.json changes in the PR path filter.

generate_api_pages: pin Node 20 and switch npm install -> npm ci so the run can never rewrite the now-tracked package-lock.json with a divergent macOS-resolved tree; stage only src/pages/ipa/resources instead of git add -A; drop --force from the push — a force-push from this workflow would silently rewrite main and destroy any PR merged since its checkout.

* chore: warn when per-page dates are skipped; drop dead per-file git lookup

buildGitDateMap now logs a warning when it emits no dates (git missing or shallow clone) instead of silently blanking every page's Updated line and the sitemap lastmod entries; document the squash-merge assumption behind the --name-only walk. Remove the unused getGitLastModified. Note in CLAUDE.md that npm run start warns under output: 'standalone'. Gen output verified byte-identical.

* ci: self-heal the API-pages push when main moves mid-run

Rebase the single generated-files commit onto the moved branch before pushing, so a PR merged during the multi-minute run no longer rejects the push (the failure --force was presumably papering over). A genuine conflict — a concurrent edit of the generated files themselves — still fails the run loudly with main untouched. Also serialise dispatches with a concurrency group: run history shows several same-day dispatches, and overlapping runs regenerate the same files.

Sandbox-tested against a bare repo: plain push rejected on race; rebase+push lands with both commits intact; true conflict exits 1 leaving the branch tip untouched.

* ci: sync to branch tip before regenerating API pages

A run queued behind another checks out the commit pinned at its dispatch time; regenerating against that stale base means the pre-push rebase replays a snapshot diff, and a file the newer spec removed can silently survive from the prior run. Fetch + reset to the branch tip before generating so the diff is computed against reality. Also note the latest-dispatched-vs-newest-tag caveat on the concurrency comment.

Sandbox-proven: with the old order a removed-in-newer-spec file survives the rebase replay; with sync-first it is gone.

* Prevent stale workflows from overwriting newer published content

* Coderabbit Fix

---------

Co-authored-by: Brandon Hopkins <brandon@techhut.tv>
2026-07-22 17:06:58 +02:00
Maycon Santos 27e4500def add force push for docs workflow 2026-03-11 19:55:32 +01:00
Maycon Santos ec76ca2524 Update checkout and setup-go actions (#531) 2025-12-30 10:37:30 +01:00
Pascal Fischer 5232d9442c update openapi source file location (#408) 2025-08-07 14:08:57 +02:00
pascal-fischer e8d741b0bd Extend api gen flow to delete old pages (#191) 2024-05-16 12:43:41 +02:00
pascal-fischer 503696de09 Update api generation workflow (#190) 2024-05-15 21:47:49 +02:00
pascal-fischer a3eb5be0f8 fix the api and disable the automation (#172) 2024-03-19 10:13:43 +01:00
Maycon Santos ceddc4b1fc Use bot token on checkout step (#113) 2023-12-07 18:02:58 +01:00
pascal-fischerandnetbirddev 65d4119e42 Add explicit java version setup (#110)
* add java setup and add some code to test

* Update API pages with v0.24.3

* removing test code

---------

Co-authored-by: netbirddev <dev@netbird.io>
2023-11-24 15:11:11 +01:00
Maycon Santos 36496e81a6 Update generate_api_pages.yml 2023-08-11 14:57:13 +02:00
Maycon Santos ceb5ba0342 Update generate_api_pages.yml 2023-08-10 16:22:15 +02:00
Maycon SantosandDevBot NetBird 734cc3dfb2 Check for diff and force push (#78)
check for diff before trying to commit

force push to protected branch

---------

Co-authored-by: DevBot NetBird <dev@netbird.io>
2023-08-05 00:26:09 +02:00
Maycon Santos f45200a234 Update packages domain (#75)
* Update packages domain

* update committer info

* replace wiretrustee
2023-07-28 15:16:06 +02:00
Pascal Fischer c25f35b422 add missing npm install command to docs flow 2023-06-17 12:37:30 +02:00
Pascal Fischer fcaeda9864 remove ifs from api generation workflow 2023-06-12 17:02:09 +02:00
pascal-fischer d18f5c076f Decouple api generation flow from docker build (#62)
* decouple api generation from docker build

* add different PAT
2023-06-12 14:47:20 +02:00