11 Commits
Author SHA1 Message Date
fauno ec7c9d8180 feat: customizable domain 2026-10-30 18:09:36 -03:00
fauno 06f7cb1ffd fix: forge configs go to server 2026-10-30 16:35:31 -03:00
fauno 1146a99b7c feat: store agent configuration 2026-10-30 16:14:57 -03:00
fauno bbb77b0fff fix: upgrade the agent too 2026-10-30 16:03:45 -03:00
fauno 03397b5561 fix: missing secret 2026-10-30 16:02:25 -03:00
fauno 092f1a3972 fix: merge compose files 2026-10-30 16:00:31 -03:00
fauno 4eacdac7c3 feat: woodpecker flags 2026-10-30 15:46:12 -03:00
fauno 2df1f0777a feat: agent secret as a file 2026-10-30 15:45:25 -03:00
fauno 9e08a62ea3 fix: gitea client is also a secret 2026-10-30 15:44:54 -03:00
fauno 496c4b4680 feat: split server and agent 2026-10-30 15:41:46 -03:00
fauno 5ffcc0acb0 fix: secrets management 2026-10-30 15:38:53 -03:00
6 changed files with 79 additions and 79 deletions
+26 -17
View File
@@ -1,30 +1,39 @@
TYPE=woodpecker
DOMAIN=woodpecker.example.com
COMPOSE_FILE="compose.yml"
## Domain aliases
#EXTRA_DOMAINS=', `www.woodpecker.example.com`'
LETS_ENCRYPT_ENV=production
# Change if you're only setting the agent on this machine
WOODPECKER_SERVER=server:9000
SECRET_AGENT_SECRET_VERSION=v1 # length=64 charset=hex
# Agent
WOODPECKER_MAX_PROCS=4
# Server
#COMPOSE_FILE="$COMPOSE_FILE:compose.server.yml"
WOODPECKER_HOST=https://${DOMAIN}
WOODPECKER_OPEN=true
WOODPECKER_ADMIN=
WOODPECKER_LOG_LEVEL=info
WOODPECKER_PLUGINS_PRIVILEGED=woodpeckerci/plugin-docker-buildx
WOODPECKER_PLUGINS_TRUSTED_CLONE=woodpeckerci/plugin-docker-buildx
WOODPECKER_AUTHENTICATE_PUBLIC_REPOS=true
#WOODPECKER_DEFAULT_PIPELINE_TIMEOUT=
#WOODPECKER_MAX_PIPELINE_TIMEOUT=
## Gitea
COMPOSE_FILE="compose.yml:compose.gitea.yml"
# Gitea
# https://woodpecker-ci.org/docs/administration/configuration/forges/gitea
COMPOSE_FILE="$COMPOSE_FILE:compose.gitea.yml"
WOODPECKER_GITEA_URL=https://git.example.org
WOODPECKER_GITEA_CLIENT=
# see: https://woodpecker-ci.org/docs/administration/vcs/gitea
SECRET_GITEA_CLIENT_VERSION=v1 # generate=false
SECRET_CLIENT_SECRET_VERSION=v1 # generate=false
## Github
# COMPOSE_FILE="compose.yml:compose.github.yml"
# WOODPECKER_GITHUB_CLIENT=
# WOODPECKER_GITHUB_SECRET=
## SECRETS
SECRET_AGENT_SECRET_VERSION=v1
CLIENT_SECRET_VERSION=v1
## Agent
WOODPECKER_MAX_PROCS=4
# Github
#COMPOSE_FILE="$COMPOSE_FILE:compose.github.yml"
#WOODPECKER_GITHUB_CLIENT=
#SECRET_CLIENT_SECRET_VERSION=v1 # generate=false
+8 -5
View File
@@ -1,16 +1,19 @@
---
version: '3.8'
services:
app:
server:
environment:
- WOODPECKER_GITEA=true
- WOODPECKER_GITEA_URL
- WOODPECKER_GITEA_CLIENT
- WOODPECKER_GITEA_SECRET
- WOODPECKER_GITEA_CLIENT_FILE=/run/secrets/gitea_client
- WOODPECKER_GITEA_SECRET_FILE=/run/secrets/client_secret
secrets:
- client_secret
- gitea_client
secrets:
client_secret:
name: ${STACK_NAME}_client_secret_${SECRET_CLIENT_SECRET_VERSION}
external: true
gitea_client:
name: ${STACK_NAME}_gitea_client_${SECRET_GITEA_CLIENT_VERSION}
external: true
+3 -4
View File
@@ -1,14 +1,13 @@
---
version: '3.8'
services:
app:
server:
environment:
- WOODPECKER_GITHUB=true
- WOODPECKER_GITHUB_CLIENT
- WOODPECKER_GITHUB_SECRET
- WOODPECKER_GITHUB_SECRET_FILE=/run/secrets/client_secret
secrets:
- client_secret
secrets:
client_secret:
name: ${STACK_NAME}_client_secret_${SECRET_CLIENT_SECRET_VERSION}
+34
View File
@@ -0,0 +1,34 @@
---
version: "3.8"
services:
server:
image: woodpeckerci/woodpecker-server:v3.20.1
volumes:
- data:/var/lib/woodpecker/
environment:
- WOODPECKER_OPEN
- WOODPECKER_HOST
- WOODPECKER_ADMIN
- WOODPECKER_AGENT_SECRET_FILE=/run/secrets/agent_secret
- WOODPECKER_LOG_LEVEL
- WOODPECKER_PLUGINS_PRIVILEGED
- WOODPECKER_PLUGINS_TRUSTED_CLONE
- WOODPECKER_AUTHENTICATE_PUBLIC_REPOS
- WOODPECKER_DEFAULT_PIPELINE_TIMEOUT=${WOODPECKER_DEFAULT_PIPELINE_TIMEOUT:-60}
- WOODPECKER_MAX_PIPELINE_TIMEOUT=${WOODPECKER_MAX_PIPELINE_TIMEOUT:-120}
secrets:
- agent_secret
networks:
- proxy
- internal
deploy:
restart_policy:
condition: on-failure
labels:
- "traefik.enable=true"
- "traefik.http.services.${STACK_NAME}.loadbalancer.server.port=8000"
- "traefik.http.routers.${STACK_NAME}.rule=Host(`${DOMAIN}`${EXTRA_DOMAINS})"
- "traefik.http.routers.${STACK_NAME}.entrypoints=web-secure"
- "traefik.http.routers.${STACK_NAME}.tls.certresolver=${LETS_ENCRYPT_ENV}"
volumes:
data:
+8 -46
View File
@@ -1,72 +1,34 @@
---
version: "3.8"
services:
app:
image: woodpeckerci/woodpecker-server:v0.15.6-alpine
volumes:
- data:/var/lib/woodpecker/
configs:
- source: woodpecker_env
target: .env
environment:
- WOODPECKER_OPEN
- WOODPECKER_HOST=https://${DOMAIN}
- WOODPECKER_ADMIN
secrets:
- agent_secret
networks:
- proxy
- internal
deploy:
restart_policy:
condition: on-failure
labels:
- "traefik.enable=true"
- "traefik.http.services.${STACK_NAME}.loadbalancer.server.port=8000"
- "traefik.http.routers.${STACK_NAME}.rule=Host(`${DOMAIN}`${EXTRA_DOMAINS})"
- "traefik.http.routers.${STACK_NAME}.entrypoints=web-secure"
- "traefik.http.routers.${STACK_NAME}.tls.certresolver=${LETS_ENCRYPT_ENV}"
- "coop-cloud.${STACK_NAME}.version=0.1.0+v0.15.6-alpine"
agent:
image: woodpeckerci/woodpecker-agent:v0.15.6-alpine
image: woodpeckerci/woodpecker-agent:v3.20.1
command: agent
depends_on:
- woodpecker-server
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- agent:/etc/woodpecker
environment:
- WOODPECKER_SERVER=app:9000
- WOODPECKER_SERVER
- WOODPECKER_MAX_PROCS
- WOODPECKER_AGENT_SECRET_FILE=/run/secrets/agent_secret
networks:
- internal
configs:
- source: woodpecker_env
target: .env
secrets:
- agent_secret
deploy:
restart_policy:
condition: on-failure
labels:
- "coop-cloud.${STACK_NAME}.version=0.1.0+v0.15.6-alpine"
networks:
proxy:
external: true
internal:
volumes:
data:
configs:
woodpecker_env:
name: ${STACK_NAME}_woodpecker_env_${WOODPECKER_ENV_VERSION}
file: woodpecker.env.tmpl
template_driver: golang
secrets:
agent_secret:
name: ${STACK_NAME}_agent_secret_${SECRET_AGENT_SECRET_VERSION}
external: true
volumes:
agent:
-7
View File
@@ -1,7 +0,0 @@
WOODPECKER_AGENT_SECRET={{ secret "agent_secret" }}
{{ if (env "WOODPECKER_GITEA_CLIENT") }}
WOODPECKER_GITEA_SECRET={{ secret "client_secret" }}
{{ end }}
{{ if (env "WOODPECKER_GITHUB_CLIENT") }}
WOODPECKER_GITHUB_SECRET={{ secret "client_secret" }}
{{ end }}