Commit Graph
226 Commits
Author SHA1 Message Date
AVB 8719c398fd Update .woodpecker/deploy.yml
ci/woodpecker/push/deploy Pipeline was successful
2026-07-28 08:22:57 -07:00
admin 9a5b028e07 postgresql: document replication + patroni secrets (ADR-0001 Phase 1)
ci/woodpecker/push/deploy Pipeline failed
2026-07-28 07:20:52 -07:00
admin 0f26d31a02 postgresql: add replication + patroni Woodpecker secrets to provision-secrets step (ADR-0001 Phase 1)
ci/woodpecker/push/deploy Pipeline was canceled
2026-07-28 07:20:35 -07:00
AVB efd90dac3e Update ai/ai.yaml
ci/woodpecker/push/deploy Pipeline was successful
ci/woodpecker/cron/renovate Pipeline was successful
2026-07-27 16:14:54 -07:00
admin 6789d2530a vaultwarden: retry #8 -- trigger after fixing pipeline compile error (dollar-brace literal in comments)
ci/woodpecker/push/deploy Pipeline was successful
2026-07-27 13:36:17 -07:00
admin e0a6b7d233 deploy.yml: fix pipeline compile error 'missing closing brace' -- the documentation comment itself contained a literal dollar-brace sequence with invalid contents (dollar-brace CI_...), which Woodpecker's substitution engine parses even inside comments. Rewrote header to describe the rules in words without any literal dollar-brace sequences. Also removed backtick-quoted dollar-brace remnants from the vaultwarden case comment.
ci/woodpecker/push/deploy Pipeline was successful
2026-07-27 13:35:13 -07:00
admin 9b3bba636c vaultwarden: retry #7 -- trigger after fixing Woodpecker compile-time ${VAR} substitution root cause 2026-07-27 12:52:59 -07:00
admin 6757b0dfe1 deploy.yml: THE ACTUAL ROOT CAUSE FIX. Woodpecker substitutes ${VAR} at pipeline-compile time from its CI metadata map, where secrets do not exist -- so every braced reference to a secret-backed env var (SWARM_MANAGER_IP, all provisioning values) was silently blanked before the shell ever ran. Proven by debug output showing eval "val=\$$v" arriving as val=\$v ($$ unescaped to $) and lengths matching var NAMES. Fix: escape all runtime secret refs as $${VAR}; keep ${CI_PIPELINE_FILES} braced (compile-time is correct for CI metadata). Removes flawed debug step; adds header documenting the substitution rules. 2026-07-27 12:50:21 -07:00
admin 7a81bc73bd deploy.yml: add temporary debug-secrets-all step declaring the identical 31-secret environment block as provision-secrets, printing byte length of every var (never values). Runs as its own step so it completes even when provision-secrets fails, telling us in one run whether all secrets are empty, only some, or only swarm_manager_ip.
ci/woodpecker/push/deploy Pipeline failed
2026-07-27 12:39:53 -07:00
admin 1a1068a154 vaultwarden: retry #6 -- re-trigger after fixing invalid 3DPRINT_DB_PASSWORD env var name
ci/woodpecker/push/deploy Pipeline failed
2026-07-27 12:13:05 -07:00
admin 332708ad41 deploy.yml: rename env var alias 3DPRINT_DB_PASSWORD -> PRINT3D_DB_PASSWORD in provision-secrets. Shell/env var identifiers cannot start with a digit (POSIX); this invalid key was likely poisoning the entire environment block for this step, explaining why SWARM_MANAGER_IP read empty specifically in provision-secrets/deploy/verify (which all declare 20-30 secrets) while working fine in the isolated 2-secret debug step. The underlying Woodpecker secret name (3dprint_db_password) is unchanged -- only the YAML alias and its $-reference were renamed.
ci/woodpecker/push/deploy Pipeline failed
2026-07-27 12:12:39 -07:00
admin cfd735f14d vaultwarden: retry #5 -- real end-to-end test now that repo is public and pipeline bugs are fixed
ci/woodpecker/push/deploy Pipeline failed
2026-07-27 11:57:30 -07:00
admin 01333893f1 deploy.yml: remove temporary debug-secrets step. Secret injection confirmed working (SSH_KEY=516 bytes, SWARM_MANAGER_IP=12 bytes) after repo was switched back to public. Root cause of the entire multi-day secret-provisioning saga: (1) CI_COMMIT_CHANGED_FILES renamed to CI_PIPELINE_FILES in Woodpecker 3.16, (2) --no-interpolate flag was misplaced, (3) dotfolders matched as bogus stack names, (4) private-repo flip broke Woodpecker's secret injection entirely. All four now fixed.
ci/woodpecker/push/deploy Pipeline failed
2026-07-27 11:57:02 -07:00
admin d89cfbf055 deploy.yml: add temporary debug-secrets step (prints byte length of SSH_KEY and SWARM_MANAGER_IP only, never values) to determine whether secret injection is failing repo-wide or just for swarm_manager_ip. Repo has been switched back to public.
ci/woodpecker/push/deploy Pipeline failed
2026-07-27 11:54:54 -07:00
admin 6fd3018a8c vaultwarden: retry #4 -- re-trigger after fixing --no-interpolate flag position and dotfolder false-match bugs
ci/woodpecker/push/deploy Pipeline failed
2026-07-27 11:03:58 -07:00
admin c511b2b607 deploy.yml: fix two bugs surfaced now that CI_PIPELINE_FILES parsing actually works: (1) --no-interpolate was placed before the config subcommand instead of after, causing 'unknown flag' on any real folder-stack validate; (2) folder-detection regex matched dotfolders like .woodpecker as bogus stack names, causing SSH/SCP attempts with empty SWARM_MANAGER_IP. Also added explicit empty-var guards for SWARM_MANAGER_IP in provision-secrets/deploy/verify so future secret misconfig fails fast with a clear message instead of a cryptic ssh error.
ci/woodpecker/push/deploy Pipeline failed
2026-07-27 11:03:35 -07:00
admin a9297397c7 vaultwarden: retry #3 -- re-trigger secret provisioning now that CI_PIPELINE_FILES parsing is fixed
ci/woodpecker/push/deploy Pipeline failed
2026-07-27 10:52:01 -07:00
admin 206f6ff103 deploy.yml: fix root cause - CI_COMMIT_CHANGED_FILES does not exist in Woodpecker 3.16; the correct variable is CI_PIPELINE_FILES (JSON array format, e.g. [\"a/b.yaml\",\"c.yaml\"]). Updated all 5 usages (validate, provision-secrets x2, deploy, verify, notify-success) to read CI_PIPELINE_FILES and strip [ ] \" before splitting on comma. Removes temporary debug-env step.
ci/woodpecker/push/deploy Pipeline failed
2026-07-27 10:51:37 -07:00
admin 2b6286a1c9 deploy.yml: add temporary debug-env step to diagnose CI_COMMIT_CHANGED_FILES not populating despite Woodpecker UI showing correct changed files. No logic changes to existing steps -- remove once root cause is found.
ci/woodpecker/push/deploy Pipeline was successful
2026-07-27 10:31:10 -07:00
admin 9447b277a1 vaultwarden: remap DATABASE_URL secret to versioned name (vaultwarden_database_url_v2), same in-container target path. Fixes rotation being silently blocked by Swarm (cannot rm a secret referenced by a running service).
ci/woodpecker/push/deploy Pipeline was successful
2026-07-27 08:50:43 -07:00
admin 6ff6260b2f deploy.yml: fix vaultwarden secret provisioning (was bypassing shared helper, silently failing on rm-while-in-use). Provision under versioned name vaultwarden_database_url_v2; compose-side remap happens in a follow-up commit.
ci/woodpecker/push/deploy Pipeline was successful
2026-07-27 08:50:16 -07:00
admin 71cb6a7e81 vaultwarden: retry secret re-provision trigger (previous run had empty changed-files)
ci/woodpecker/push/deploy Pipeline was successful
2026-07-26 22:27:58 -07:00
admin 4a3eb44a62 vaultwarden: trigger secret re-provision (db -> postgresql alias) 2026-07-26 22:10:46 -07:00
admin 61b1a645bb uptime-kuma: set restart_policy.delay to 30s
Increases the delay before Swarm restarts a failed uptime-kuma task
from the default 5s to 30s. Applied live via `docker service update
--restart-delay 30s` on 2026-07-26; this persists it so it survives
the next stack deploy.

Note: this does not pin the task to a specific node or prevent
cross-node reschedule races against the CephFS-backed SQLite data
dir - it only slows the restart-after-failure loop. See prior
incident notes for the DB corruption root cause discussion.
2026-07-26 17:34:35 -07:00
admin 2b0ef411d1 chore(ai): sync ai.yaml with host (manual litellm v1.93.0 upgrade comment) 2026-07-25 22:20:28 -07:00
admin cc9880e09c chore(traefik): remove flat traefik.env, superseded by traefik/traefik.env 2026-07-25 22:20:27 -07:00
admin 1494224194 chore(traefik): remove flat traefik.yaml, superseded by traefik/traefik.yaml 2026-07-25 22:20:27 -07:00
admin d16203b873 chore(auth): remove flat auth.yaml, superseded by auth/auth.yaml 2026-07-25 22:20:26 -07:00
admin c2069e3e0d feat(traefik): migrate to folder-based stack layout 2026-07-25 22:19:26 -07:00
admin 6caa7f0a33 feat(traefik): migrate to folder-based stack layout 2026-07-25 22:19:25 -07:00
admin 7ccff906fd feat(auth): migrate to folder-based stack layout 2026-07-25 22:19:24 -07:00
admin 68f89ef139 chore(ci): remove root .woodpecker.yml, superseded by .woodpecker/deploy.yml
Woodpecker ignores this file entirely once .woodpecker/ folder exists
(config resolution: .woodpecker/ > .woodpecker.yaml > .woodpecker.yml).
Content preserved verbatim in .woodpecker/deploy.yml.
2026-07-25 22:00:57 -07:00
admin 270489b207 fix(ci): move .woodpecker.yml -> .woodpecker/deploy.yml
Root cause of Woodpecker push pipelines silently no-op'ing since
2026-07-18: Woodpecker's config resolution is
  .woodpecker/*.{yaml,yml} -> .woodpecker.yaml -> .woodpecker.yml
Once .woodpecker/renovate.yml existed, the root .woodpecker.yml was
entirely ignored. Every push webhook hit renovate.yml's `when: event:
cron` filter, matched zero steps, and Woodpecker logged
"ignoring hook: 'when' filters filtered out all steps" instead of
running deploy.

Moving the push pipeline into .woodpecker/deploy.yml restores it as
an independent workflow alongside renovate.yml -- each file's own
`when:` filter now applies correctly (push -> deploy.yml, cron ->
renovate.yml).
2026-07-25 22:00:49 -07:00
admin cc5adc3312 feat(mcpo): sync config.json to Gitea as source of truth
Adds powerautomate entry with Azure app registration credentials.
Auth dir (/volume1/docker/mcpo/powerautomate-auth/) and config stub
already exist on host from prior session.

NOTE: powerautomate-mcp package not yet on npm - npx will fail until
published. Tracked here for GitOps pipeline; will update command when
package is available or we switch to build-from-source approach.
2026-07-25 15:10:07 -07:00
admin 963a52d665 litellm: upgrade v1.92.1 -> v1.93.0 to fix Bedrock parallel tool call truncation bug 2026-07-24 22:16:39 -07:00
admin 2a1feee03e feat(mcpo): sync config.json from host (real PA_MCP_CLIENT_ID + TENANT_ID) 2026-07-24 22:06:24 -07:00
admin 8fde5266ea chore(ai): remove flat ai.yaml, superseded by ai/ai.yaml 2026-07-24 22:02:22 -07:00
admin 92abfe295f feat(ai): migrate to folder-based stack layout 2026-07-24 22:01:45 -07:00
AVB 8ddc35aef4 Update ai.yaml 2026-07-23 17:18:08 -07:00
AVB 29fb096ce8 Update ai.yaml 2026-07-23 17:02:42 -07:00
admin 3da6a89919 feat(woodpecker): add PA_MCP_CLIENT_ID secret provisioning for ai stack 2026-07-19 14:23:22 -07:00
admin 0030d92ca8 chore(mcpo): sync config.json from live disk - adds powerautomate entry 2026-07-19 14:20:27 -07:00
admin 0f7f00404d feat(mcpo): add config.json to source control with powerautomate, ms365 fixes
- Pin ms365 to 0.129.0 with --discovery flag (fixes MCPO schema parse error)
- Add powerautomate entry (PA_MCP_CLIENT_ID placeholder - needs Azure app reg)
- Update authentik token (was expired)
- teams-mcp-auth volume now source of truth for ms365/teams auth cache
- powerautomate-auth volume wired for future PA auth cache

NOTE: config.json was previously managed manually on disk only.
This commit brings it under GitOps control.
2026-07-19 14:16:40 -07:00
admin 815d953cd7 chore(renovate): remove unused TEAMS_WEBHOOK env - notifications via Gitea webhook 2026-07-19 07:00:37 -07:00
admin 310c68376a chore(renovate): revert postUpgradeTasks - notifications via Gitea webhook instead 2026-07-19 07:00:17 -07:00
admin 43f3fdce94 chore(renovate): add postUpgradeTasks Teams notification via Power Automate webhook 2026-07-19 06:59:49 -07:00
admin d9a6d217bc chore(renovate): pass TEAMS_WEBHOOK secret into renovate container 2026-07-19 06:59:28 -07:00
admin 088d884a88 chore(renovate): add Teams webhook notification via Power Automate 2026-07-19 06:59:02 -07:00
admin 96783bce8c chore(renovate): fix config warnings - remove global-only options, disable woodpecker manager 2026-07-18 22:48:22 -07:00
admin 8185fb5842 feat: add woodpecker cron pipeline for renovate (v3 syntax) 2026-07-18 22:05:19 -07:00