Clear available_* only when the deployed ref equals it, drop the unused poll source, stop leaking internal errors to CI, use the request-scoped logger, validate X-Request-ID, re-read jobs once after the timeout, report refused when no target ref exists, and tidy UI, deploy and docs.
50 lines
2.0 KiB
YAML
50 lines
2.0 KiB
YAML
# Example Swarm stack for the package-updater master (inventory, updates and the CI webhook).
|
|
# Deploy on the manager: docker stack deploy -c master.stack.yml package-updater-master
|
|
#
|
|
# Before deploying:
|
|
# 1. In Postgres: CREATE USER package_updater ...; CREATE DATABASE package_updater OWNER package_updater;
|
|
# 2. In Authentik: create an OAuth2/OpenID provider + application with redirect URI
|
|
# https://updater.example.com/auth/callback, and a group "updater-admins".
|
|
# 3. docker secret create pu_oidc_client_secret - ; docker secret create pu_database_url -
|
|
# 4. docker secret create pu_updater_api_key - (required by this example; it enables POST /update)
|
|
# To run without the webhook, remove the pu_updater_api_key lines (the UPDATER_API_KEY
|
|
# part of the entrypoint, the service secret and the secrets entry); the endpoint then answers 503.
|
|
# The reverse proxy must allow a read timeout longer than UPDATE_TIMEOUT (default 5m).
|
|
services:
|
|
master:
|
|
image: gitea.shcizo.se/shcizo/package-updater:latest
|
|
entrypoint: ["/bin/sh", "-c", "DATABASE_URL=$$(cat /run/secrets/pu_database_url) OIDC_CLIENT_SECRET=$$(cat /run/secrets/pu_oidc_client_secret) UPDATER_API_KEY=$$(cat /run/secrets/pu_updater_api_key) exec /usr/local/bin/updater-master"]
|
|
environment:
|
|
PUBLIC_URL: https://updater.example.com
|
|
AGENT_URL: wss://10.0.0.5:8090/agent
|
|
OIDC_ISSUER: https://auth.example.com/application/o/package-updater/
|
|
OIDC_CLIENT_ID: package-updater
|
|
ALLOWED_GROUP: updater-admins
|
|
# UPDATE_TIMEOUT: 5m
|
|
secrets:
|
|
- pu_database_url
|
|
- pu_oidc_client_secret
|
|
- pu_updater_api_key
|
|
ports:
|
|
# Agents connect here directly over the internal network, not via the proxy.
|
|
- target: 8090
|
|
published: 8090
|
|
mode: host
|
|
networks:
|
|
- proxy
|
|
deploy:
|
|
placement:
|
|
constraints: [node.role == manager]
|
|
|
|
secrets:
|
|
pu_database_url:
|
|
external: true
|
|
pu_oidc_client_secret:
|
|
external: true
|
|
pu_updater_api_key:
|
|
external: true
|
|
|
|
networks:
|
|
proxy:
|
|
external: true
|