Commit graph

5 commits

Author SHA1 Message Date
38a96497ca
ci: quote the deploy run-name
All checks were successful
deploy / ansible (push) Successful in 4m25s
The unquoted value contains ": ", which YAML reads as a nested mapping,
so Forgejo rejected the whole workflow and the last two pushes ran
nothing. Quote it.

Assisted-by: Claude:opus-5-5
2026-11-12 23:24:54 +04:00
ba2e3cbde8
ci: name deploy runs "dry run" or "apply"
Some checks failed
deploy.yaml / ci: name deploy runs "dry run" or "apply" (push) Failing after 0s
Every run was listed as "deploy", so dry runs on Renovate branches
looked like deployments. Name each run after what it does and the
branch it ran on.

Assisted-by: Claude:opus-5-5
2026-11-12 23:23:57 +04:00
c4462b3e33 ci: point Renovate at asxpi/iac
The repository was renamed from infrastructure to iac. Renovate looks
repositories up by name, and with push-to-create on, the old name now
belongs to a different, empty repository.

Assisted-by: Claude:opus-5-5
2026-11-12 22:54:11 +04:00
2aca0d7669 ci: Renovate opens version bump PRs with release notes
Versions are pinned across the Ansible vars, compose files, Terraform
providers and workflows, and nothing says when one is behind. Run
Renovate daily from Forgejo Actions: one PR per available bump, with
the upstream changelog in the body, which the deploy pipeline then
dry-runs like any other branch.

Variables are tracked through a "# renovate: datasource=... depName=..."
comment above them; Forgejo, Traefik, the runner and its nix image get
one here. The Paper JRE tag is left alone, the runner and nix bumps
carry their manual follow-up steps in the PR, and Renovate's own image
is bumped monthly.

Needs the repository secrets RENOVATE_TOKEN (bot user with write
access) and GH_COM_TOKEN (read-only github.com token for release
notes).

Assisted-by: Claude:opus-5-5
2026-11-12 21:20:47 +04:00
63bd67a86d ci: deploy site.yaml from Forgejo Actions
Service changes were made by hand on the servers, which is how the
repository drifted. Apply site.yaml from a workflow instead: every
push dry-runs it against production, and a push to main applies it.

Jobs run in containers on asxpio-services. asxpio-ops is reached over
the private network; the services host is reached through asxpio-ops,
because a container connecting to its own host arrives from a Docker
bridge address that sshd and the firewall refuse. Host keys are pinned
in known_hosts.

Ansible comes from a pinned nixpkgs revision so every run uses the
same version.

Assisted-by: Claude:fable-5-2
2026-11-12 06:47:09 +04:00