Commit Graph
14682 Commits
Author SHA1 Message Date
kevinveenbirkenbach 03845a8b19 Merge pull request #1023 from infinito-nexus/fix/ci/pin-ubuntu-runner
fix(ci): pin GitHub-hosted runners to ubuntu-24.04
2026-10-19 21:24:13 +02:00
evangelostsak 5c8b6318e6 docs(cheatsheet): mention social posts for i8-release-article 2026-10-19 20:02:50 +02:00
evangelostsak 8211119e47 feat(skills): announce releases on Mastodon and LinkedIn 2026-10-19 20:02:50 +02:00
evangelostsak 989d53c7e6 docs(agents): add social posts to the release article procedure 2026-10-19 20:02:49 +02:00
evangelostsak ebf746a60a Merge remote-tracking branch 'upstream/main' into agent/i8-release-article 2026-10-19 19:56:17 +02:00
kevinveenbirkenbach 95056e8d33 Merge remote-tracking branch 'origin/main' into feature/ci/runner-label-updater 2026-10-19 16:56:52 +02:00
kevinveenbirkenbachandClaude Opus 5.5 a085427236 chore(svc-storage-nfs-server): capture ganesha's NFSv4 verdicts in debug runs
On ubuntu-26.04 runners the swarm deploy fails at svc-storage-nfs-client's
probe-write, right after a successful probe-mount, on every client node:
`Destination directory /run/svc-storage-nfs-client/probe does not exist`.
The rescue bundles cannot say why: ganesha writes to
/var/log/ganesha/ganesha.log, which the swarm diagnostics never collected,
and its NFS_V4 component logged nothing below EVENT.

Debug runs now log NFS_V4 at DEBUG, and the diagnostics append the tail
of ganesha.log to the nfs-boundary section.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-19 16:56:52 +02:00
kevinveenbirkenbachandClaude Opus 5.5 b055eece05 feat(ci): keep GitHub-hosted runner labels current through the updater
The workflows pin `runs-on: ubuntu-NN.NN`, so no job moves to a new Ubuntu
release behind our back, but nothing raised the pin either. A sixth job of
`🔄 Update versions` closes that: `utils/update/runner.py` reads the image
table of actions/runner-images, takes the newest x64 Ubuntu label whose
image carries no preview or beta badge, and raises every older bare
`runs-on: ubuntu-NN.NN` to it; arch-suffixed labels stay untouched. The job
opens the change as one PR over `.github/workflows`, so its CI run tests
the new image before it reaches main.

This commit carries the updater's first result: every job now runs on
ubuntu-26.04 (49 `runs-on`).

actionlint 1.7.12, the newest release, does not know `ubuntu-26.04` yet
(rhysd/actionlint#682, fix proposed in rhysd/actionlint#743), so
`.github/actionlint.yaml` declares the label until a release knows it.

act maps each `ubuntu-NN.NN` label the workflows use to the local platform
image, derived from `.github/workflows`, instead of a fixed list that did
not know ubuntu-26.04.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-19 16:56:52 +02:00
kevinveenbirkenbach e1d7e32889 Release version 16.1.0 v16.1.0 2026-10-19 16:20:32 +02:00
kevinveenbirkenbachandClaude Opus 5.5 52ad8549e0 fix(ci): pin GitHub-hosted runners to ubuntu-24.04
`ubuntu-latest` moved from ubuntu-24.04 to ubuntu-26.04 on its own
schedule, in the middle of run 39166850273, and every job that landed on
the new image met a different OS: sudo-rs instead of sudo, no ip_tables
loaded, and now the NFS probe-write of svc-storage-nfs-client failing on
26.04 swarm nodes. The same branch went red without a code change.

Every `runs-on` now names `ubuntu-24.04`. GitHub still rebuilds that image
weekly, so patches and tool updates keep arriving; only the release jump
becomes a deliberate change of the label. The CodeQL job drops its dead
swift/macos-latest branch, since no swift language is in its matrix. act
already maps ubuntu-24.04 to the local platform image.

A lint rejects any job whose `runs-on` contains a `*-latest` label.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-19 15:57:12 +02:00
kevinveenbirkenbachandClaude Opus 5.5 155ca9a8a9 fix(web-app-wazuh): declare the empty mesh membership
#414 merged web-app-wazuh with a meta/networks.yml that carries only
`local`, and test_mesh_subnet_pool.py requires every stack role to ship
`meshes: []` so a compose host can join meshes through it. main's
test-lint has been red since d0698daa5e:

    AssertionError: 'meshes' not found in {'local': {'subnet': '192.168.81.0/24'}}

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-19 15:57:12 +02:00
evangelostsak 072336e0ed docs(cheatsheet): list i8-release-article 2026-10-19 15:45:16 +02:00
evangelostsak d07f1f22d9 feat(skills): add the i8-release-article skill 2026-10-19 15:45:16 +02:00
evangelostsak 88c535db4c feat(skills): add the release banner template 2026-10-19 15:45:16 +02:00
evangelostsak da8b4e279f feat(skills): add the release article template 2026-10-19 15:45:16 +02:00
evangelostsak b750d361c8 docs(agents): add the release article procedure 2026-10-19 15:45:15 +02:00
kevinveenbirkenbach bfd7febe5c Merge pull request #1020 from infinito-nexus/update/docker-image-versions-web-app-pixelfed-20261019-c89532b
update(images): update Docker image versions (web-app-pixelfed)
2026-10-19 15:20:51 +02:00
infinito-nexus-updater[bot] faa8967944 update(images): update Docker image versions (web-app-wazuh) 2026-10-19 13:17:58 +00:00
kevinveenbirkenbach 2520efa3f8 Merge pull request #1019 from infinito-nexus/fix/svc-storage-nfs-client/node-local-backups
fix(svc-storage-nfs-client): keep swarm backups node-local
2026-10-19 15:17:04 +02:00
kevinveenbirkenbach 1e860d1820 Merge branch 'main' into update/version-sources-web-app-xwiki-20261019-45ce307 2026-10-19 15:16:20 +02:00
kevinveenbirkenbach 6cf1c8f95b Merge remote-tracking branch 'origin/main' into fix/svc-storage-nfs-client/node-local-backups 2026-10-19 15:16:06 +02:00
kevinveenbirkenbachandClaude Opus 5.5 13c482cd70 docs(svc-storage-nfs-client): note generations stranded on the share
Generations a swarm node wrote to the NFS share before the node-local
bind stay under the export's backup/ directory, hidden from the nodes,
outside every cleanup and pull. No production swarm install carries any,
so the README states the manual removal instead of migrating.

Refs #1012

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-19 15:16:06 +02:00
kevinveenbirkenbachandClaude Opus 5.5 c73079613b fix(svc-storage-nfs-client): keep the backup user's access and the state remount
Two holes in the node-local backup bind, both reproduced with the role's
own tasks against a ganesha NFSv4.2 mount:

- The store was created with mode 0700. The role runs twice per deploy
  (constructor svc-storage group, then 02_server), and between the runs
  user-backup and the two cleanup roles converge the same inode to
  root:root 0755. The second run then chmodded it to root:root 0700, the
  backup user lost access (`ls` rc=2), and the backup host's pull would
  list no repositories and exit 0. The store now uses 0755, the mode the
  cleanup roles converge it to, so the second run changes nothing.

- A changed NFS mount line (options, version, server) makes
  ansible.posix.mount fall back from `mount -o remount` to a plain
  `umount`, which the child bind now blocks: `umount.nfs4: device is
  busy`. A check-mode pass detects the pending change and unmounts the
  bind first; the bind task mounts it again afterwards.

Refs #1012

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-19 15:16:06 +02:00
kevinveenbirkenbach d0698daa5e Merge pull request #414 from pragepani/feature/web-app-wazuh/add-role
feat(web-app-wazuh): add Wazuh SIEM role with OIDC/LDAP RBAC
2026-10-19 14:35:24 +02:00
infinito-nexus-updater[bot] 628f835d86 update(images): update Docker image versions (web-app-pixelfed) 2026-10-19 11:36:40 +00:00
kevinveenbirkenbach 32216cc199 Merge pull request #999 from infinito-nexus/fix/compose/primary-net-ip-range
fix(compose): keep dynamic addresses off the stack's static IPs
2026-10-19 13:34:52 +02:00
kevinveenbirkenbachandClaude Opus 5.5 ad70e3de1e fix(svc-storage-nfs-client): keep swarm backups node-local
On swarm nodes /var/lib/infinito is the ganesha NFSv4.2 state share, so
every backup repository landed on it. ganesha 6.5 refuses user.* extended
attributes, and baudolo 7.1.x copies volumes with `rsync -aHAX`, so the
volume backup of OpenCloud (user.oc.* metadata) failed with
`fsetxattr(... "user.oc.id") failed: Operation not supported (95)`.

After the state mount the client role now binds the node's own
/var/lib/infinito-backup over /var/lib/infinito/backup. Every consumer
keeps its path; the data stays on local disk with its attributes, and the
backup host pulls each provider over ssh as before. The bind carries
_netdev: without it, systemd-fstab-generator puts the bind into
local-fs.target below its NFS parent in remote-fs.target, and the boot
transaction cycles. The DR drill remounts the bind after its lazy remount
of the state share, because `umount -l` on the parent detaches it.

Closes #1012

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-19 13:28:45 +02:00
kevinveenbirkenbach d014c8dab1 Merge pull request #1018 from infinito-nexus/fix/ci/sudo-rs-preserve-env
fix(ci): keep main green on ubuntu-26.04 runners (sudo-rs env, fedora iptables-nft)
2026-10-19 13:16:44 +02:00
kevinveenbirkenbach 97a03a1194 Merge remote-tracking branch 'origin/main' into fix/compose/primary-net-ip-range 2026-10-19 13:07:26 +02:00
kevinveenbirkenbachandClaude Opus 5.5 c4f340d7b4 fix(sys-svc-container): install iptables-nft with docker on RedHat
On Fedora 44, dnf satisfies docker-ce's `(iptables-nft or iptables)`
requirement with iptables-legacy. The legacy backend needs the ip_tables
module, which ubuntu-26.04 runners no longer have loaded, and the compose
container cannot load it because it mounts no /lib/modules. The MSS clamp
task then failed with `modprobe: FATAL: Module ip_tables not found` and
`can't initialize iptables table 'mangle'` (Nextcloud#10, Gitea#0,
Jellyfin#0 on fedora). CentOS 10 already resolves to iptables-nft from the
same plan and deploys green on the same image.

Naming iptables-nft in the docker transaction makes Fedora use the
nf_tables backend as well.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-19 13:07:18 +02:00
kevinveenbirkenbachandClaude Opus 5.5 281a9cce9b fix(ci): name the preserved environment for sudo-rs runners
ubuntu-latest is rolling over to ubuntu-26.04, whose sudo is sudo-rs. It
ignores `-E` ("preserving the entire environment is not supported") and
hands the child only the explicit `env` assignments, so the swarm matrix
died at import with `KeyError: 'INFINITO_SRC_DIR'` before any inventory
existed (PR #1009, Nextcloud#0). Jobs that landed on ubuntu-24.04 kept
passing.

Every `sudo -E` now passes the caller's exported names through
`--preserve-env="$(compgen -e | paste -sd, -)"`, which both classic sudo
and sudo-rs honour. A lint rejects `sudo -E` and bare `--preserve-env`.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-19 13:07:18 +02:00
infinito-nexus-updater[bot] 1d6bcdc907 update(versions): update pins with a declared source (web-app-xwiki) 2026-10-19 10:26:53 +00:00
kevinveenbirkenbach 4018a2114c Merge pull request #1016 from infinito-nexus/update/docker-image-versions-web-app-stalwart-20261019-4598c08
update(images): update Docker image versions (web-app-stalwart)
2026-10-19 12:15:37 +02:00
infinito-nexus-updater[bot] 1d98616895 update(images): update Docker image versions (web-app-stalwart) 2026-10-19 09:11:08 +00:00
kevinveenbirkenbach 3705615000 Merge pull request #1014 from infinito-nexus/update/repository-refs-pkgmgr-20261019-3a9100b
update(repos): bump git refs to latest semver tags (pkgmgr)
2026-10-19 10:33:54 +02:00
kevinveenbirkenbach 847054928e Merge pull request #1015 from infinito-nexus/update/docker-image-versions-web-app-semaphore-20261019-393ca71
update(images): update Docker image versions (web-app-semaphore)
2026-10-19 10:33:13 +02:00
infinito-nexus-updater[bot] 3647788374 update(images): update Docker image versions (web-app-semaphore) 2026-10-19 08:15:51 +00:00
infinito-nexus-updater[bot] d26a4afa5c update(repos): bump git refs to latest semver tags (pkgmgr) 2026-10-19 08:12:04 +00:00
kevinveenbirkenbach 7075aad420 Merge pull request #1003 from evangelostsak/fix/svc-net-wireguard/split-cli-test
refactor(svc-net-wireguard): split the CLI test into files
2026-10-19 10:10:43 +02:00
kevinveenbirkenbach 19914777c4 Merge remote-tracking branch 'origin/main' into fix/compose/primary-net-ip-range 2026-10-19 09:46:19 +02:00
kevinveenbirkenbachandClaude Opus 5.5 caec064e6b fix(env): reach ip_range through the handler registry
builder.py imported utils.env.handlers.infinito.ip_range directly, while
ip_range imports EnvBuilder from builder for its annotations. CodeQL
reported that as py/unsafe-cyclic-import on PR #999. The import only
runs under TYPE_CHECKING, so nothing breaks at runtime, but builder now
takes ip_range from utils.env.handlers like ORDERED_HANDLERS, the path
every other handler module already uses.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-19 09:46:18 +02:00
kevinveenbirkenbach fae77f0a60 Merge pull request #1013 from infinito-nexus/update/version-sources-web-app-n8n-20261019-f27d3cc
update(versions): update pins with a declared source (web-app-n8n)
2026-10-19 09:44:52 +02:00
infinito-nexus-updater[bot] 01f4f51420 update(versions): update pins with a declared source (web-app-n8n) 2026-10-19 07:42:43 +00:00
kevinveenbirkenbach 106dd1d762 Merge pull request #1011 from infinito-nexus/dependabot/pip/ruff-0.17.1
chore(deps-dev): bump ruff from 0.17.0 to 0.17.1
2026-10-19 09:33:31 +02:00
kevinveenbirkenbach 928a290655 Merge pull request #1010 from infinito-nexus/dependabot/npm_and_yarn/playwright/test-1.64.1
chore(deps-dev): bump @playwright/test from 1.64.0 to 1.64.1
2026-10-19 09:31:02 +02:00
dependabot[bot] 3688890959 chore(deps-dev): bump ruff from 0.17.0 to 0.17.1
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.17.0 to 0.17.1.
- [Release notes](https://github.com/astral-sh/ruff/releases)
- [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md)
- [Commits](https://github.com/astral-sh/ruff/compare/0.17.0...0.17.1)

---
updated-dependencies:
- dependency-name: ruff
  dependency-version: 0.17.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-10-19 01:19:49 +00:00
dependabot[bot] 8b4823b7f7 chore(deps-dev): bump @playwright/test from 1.64.0 to 1.64.1
Bumps [@playwright/test](https://github.com/microsoft/playwright) from 1.64.0 to 1.64.1.
- [Release notes](https://github.com/microsoft/playwright/releases)
- [Commits](https://github.com/microsoft/playwright/compare/v1.64.0...v1.64.1)

---
updated-dependencies:
- dependency-name: "@playwright/test"
  dependency-version: 1.64.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-10-19 01:18:14 +00:00
kevinveenbirkenbach d662de599d Merge pull request #1000 from infinito-nexus/fix/svc-bkp-volume-2-local/baudolo-pin-spot
fix(svc-bkp-volume-2-local): read the baudolo version from pyproject.toml
2026-10-19 03:10:34 +02:00
kevinveenbirkenbach 564abaae71 Merge pull request #1008 from infinito-nexus/update/version-sources-web-app-gitea-20261018-17740b1
update(versions): update pins with a declared source (web-app-gitea)
2026-10-18 23:24:23 +02:00
kevinveenbirkenbach 6b279f5b4d Merge pull request #1002 from infinito-nexus/update/version-sources-web-app-gitea-20261018-352b5fa
update(versions): update pins with a declared source (web-app-gitea)
2026-10-18 23:23:39 +02:00