Commit graph

13 commits

Author SHA1 Message Date
Viktor Barzin
065b634b99 feat(trade-executor): Slack bot-token transport + semver image tags
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Two changes that ship together so a single CI run lands both:

1) SlackNotifier — support bot-token + channel transport
   - Previous version only supported a pinned webhook URL.
   - New mode uses chat.postMessage with bot_token + channel.
   - Channel can be changed via env var without rotating webhooks.
   - bot-token transport wins when both are set.
   - Fail-soft: ok=false (e.g. channel_not_found if the user
     hasn't created #trading-bot yet) is logged + skipped, not
     raised.
   - 5 new tests (10 total): bot-token wins, channel_not_found
     swallowed, headers/payload shape verified.

2) Image tags — switch from :${CI_PIPELINE_NUMBER} → :0.1.${N}
   - 3-part semver so Keel patch policy (cluster-wide default
     in inject-keel-annotations) is bounded to patch bumps
     within 0.1.x. Prior 1-part tags (:53) were technically
     parseable as major-only, which Keel patch wouldn't bump
     but could still resolve oddly under digest tracking.
   - Memory id=1935 documents Keel patch ≠ bulletproof for
     non-semver; semver tags are the safer mode.
   - update-deployment + verify-deploy steps updated to match.
   - :latest still pushed for cache-from + bootstrap.
2026-05-27 10:06:49 +00:00
Viktor Barzin
1a95bfc06a ci: add trade-executor to workers patch list (Phase 2)
Some checks failed
ci/woodpecker/push/woodpecker Pipeline was canceled
2026-05-26 21:07:35 +00:00
Viktor Barzin
fdc2a60257 ci: fix worker container list — match current infra (5 containers)
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Pipeline #47 was the first green build since the infra was simplified
on 2026-05-22 (commit 66ca8b9e in infra), which removed news-fetcher,
sentiment-analyzer, trade-executor and added meet-kevin-watcher; a
later commit added kevin-signal-bridge for Phase 1. The .woodpecker.yml
patch list was never updated, so update-deployment added 3 stale
containers to the running pod (news-fetcher, sentiment-analyzer,
trade-executor) — sentiment + trade-executor crash on port 8000 since
news-fetcher binds it first.

Update the strategic-merge patch to match infra exactly:
  - signal-generator
  - learning-engine
  - market-data
  - meet-kevin-watcher    (was unmanaged → image stuck on :latest)
  - kevin-signal-bridge   (was unmanaged → image stuck on :latest)

Strategic merge doesn't remove containers not in the patch, so the 3
stale containers in the live deployment will be cleaned up by a
follow-up terragrunt apply on infra/stacks/trading-bot.
2026-05-26 20:13:55 +00:00
31047e6fd2 ci: include meet_kevin extras in test step (yt-dlp, feedparser, anthropic, httpx) 2026-05-22 20:00:59 +00:00
Viktor Barzin
4f60ef453f
fix: hardcode nginx-k8s.conf in dashboard Dockerfile
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
The buildx plugin was not passing NGINX_CONF build arg correctly,
causing the docker-compose nginx config (with hostname api-gateway)
to be used instead of the K8s one (with localhost).
2026-02-25 23:46:47 +00:00
Viktor Barzin
0a017f52cb
perf: switch to uv for faster dependency installation
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
- Replace pip with uv in Dockerfile.service builder stage (~5-10x faster)
- Replace pip with uv in CI test step
- Separate pyproject.toml copy from source copy in Dockerfile for better
  Docker layer caching (deps only reinstalled when pyproject.toml changes)
- Add cache_from for buildx to reuse layers from previous builds
- Remove pip cache workaround from test step (not persisted in K8s)
2026-02-25 22:55:58 +00:00
Viktor Barzin
5955a5a86d
fix: hardcode pip extras in Dockerfile to avoid buildx arg parsing issues
Some checks are pending
ci/woodpecker/push/woodpecker Pipeline is running
The woodpeckerci/plugin-docker-buildx was not passing the EXTRAS build
arg correctly (commas in the value were likely being parsed as list
separators), causing the image to only install dev dependencies instead
of all service extras (api, news, sentiment, trading, backtester).

Hardcode the pip install extras directly in the Dockerfile rather than
relying on the build arg.
2026-02-25 22:27:15 +00:00
Viktor Barzin
4094e4b10f
fix: push final tags directly from buildx, remove publish-images step
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
The publish-images step used an alpine container to run skopeo for
re-tagging, but intermittent DNS failures prevent apk from installing
packages. Instead, have the buildx plugin push with both the pipeline
number tag and latest tag directly, eliminating the extra step.
2026-02-25 21:25:27 +00:00
Viktor Barzin
1dd0c25cbc
fix: escape shell variables from Woodpecker CI substitution
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
Woodpecker pre-processes ${VAR} syntax as CI variables, replacing
undefined ones with empty strings. Use $$ escaping for shell variables
to prevent Woodpecker from consuming them. The ${REPO} variable in
the skopeo publish step was being replaced with empty string.
2026-02-25 00:43:01 +00:00
Viktor Barzin
792776bfe0
fix: use woodpeckerci/plugin-docker-buildx for privileged builds
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
plugins/docker does not get privileged: true in K8s pods despite being
in WOODPECKER_PLUGINS_PRIVILEGED. woodpeckerci/plugin-docker-buildx
correctly receives privileged mode. Previous build failure with buildx
was a transient network timeout reaching registry-1.docker.io.
2026-02-25 00:25:56 +00:00
Viktor Barzin
61f1efbf27
fix: switch back to plugins/docker for image builds
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
The woodpeckerci/plugin-docker-buildx plugin started dockerd correctly
(privileged mode works) but failed DockerHub authentication. Switch back
to plugins/docker which is proven working in realestate-crawler pipeline.
2026-02-24 23:42:53 +00:00
Viktor Barzin
1f065f4b4d
fix: switch to buildx plugin and add pip caching for CI
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
- Use woodpeckerci/plugin-docker-buildx instead of plugins/docker to fix
  Docker daemon connection failures (privileged mode not applied)
- Add pip dependency caching between builds via /woodpecker/pip-cache
- Fix slack plugin image (plugins/slack, not woodpeckerci/plugin-slack)
- Use proper buildx cache_from syntax (type=registry,ref=...)
2026-02-24 23:27:33 +00:00
Viktor Barzin
ed3bf57566
add Woodpecker CI pipeline 2026-02-23 22:26:49 +00:00