From e0391bc8613439c552467d94a15f9e49c0d1c8ea Mon Sep 17 00:00:00 2001 From: Jef Roosens Date: Tue, 20 Apr 2021 15:52:30 +0200 Subject: [PATCH 1/8] Added woodpecker compose file --- woodpecker/docker-compose.yml | 83 +++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 woodpecker/docker-compose.yml diff --git a/woodpecker/docker-compose.yml b/woodpecker/docker-compose.yml new file mode 100644 index 0000000..b7f2211 --- /dev/null +++ b/woodpecker/docker-compose.yml @@ -0,0 +1,83 @@ +version: '2.4' + +services: + # The main drone instance + app: + # Latest version as of writing this document + image: 'laszlocloud/woodpecker-server:v0.12.0' + restart: 'always' + + depends_on: + db: + condition: 'service_healthy' + healthcheck: + test: 'curl -f http://localhost:8000/ || exit 1' + interval: '30s' + retries: 3 + timeout: '5s' + start_period: '10s' + + environment: + # Allow all Gitea users to use it + - 'DRONE_OPEN=true' + # Drone needs to know its own location + - 'DRONE_HOST=${DRONE_HOST}' + # Shared secret to communicate with agents + - 'DRONE_SECRET=${DRONE_SECRET}' + # Tell Drone to use postgres + - 'DRONE_DATABASE_DRIVER=postgres' + - 'DRONE_DATABASE_DATASOURCE=postgres://woodpecker:woodpecker@db:5432/woodpecker?sslmode=disable' + + # These are just a guess based on the documentation + - 'DRONE_GITEA=true' + - 'DRONE_GITEA_CLIENT=${GITEA_CLIENT}' + - 'DRONE_GITEA_SECRET=${GITEA_SECRET}' + networks: + - 'default' + - 'nginx' + ports: + # Used to communicate with the agents (I think) + - '9000:9000' + # Also needs port 8000 for web UI (so proxy_pass to 8000) + volumes: + - 'server-data:/var/lib/drone' + + # Database for the server + db: + image: 'postgres:13.2-alpine' + restart: 'always' + + healthcheck: + test: 'pg_isready -U woodpecker' + interval: '30s' + timeout: '5s' + retries: 3 + start_period: '0s' + + environment: + - 'POSTGRES_DB=woodpecker' + - 'POSTGRES_USER=woodpecker' + - 'POSTGRES_PASSWORD=woodpecker' + + volumes: + - 'db-data:/var/lib/postgresql/data' + + # We can deploy more agents by using the scale command + # Each agent can do one parallel build by default + agent: + image: 'laszlocloud/woodpecker-server:v0.12.0' + restart: 'always' + command: 'agent' + + depends_on: + - 'app' + + environment: + - 'DRONE_SERVER=${DRONE_HOST}' + - 'DRONE_SECRET=${DRONE_SECRET}' + volumes: + - '/var/run/docker.sock:/var/run/docker.sock' + +volumes: + db-data: + server-data: From 2e27fb0239e41fcc4a2333430764a8f84d9c3295 Mon Sep 17 00:00:00 2001 From: Jef Roosens Date: Fri, 23 Apr 2021 23:31:10 +0200 Subject: [PATCH 2/8] Added woodpecker nginx conf --- nginx/.env.example | 6 +++++ .../sites-available/woodpecker.conf.template | 22 +++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 nginx/sites-available/woodpecker.conf.template diff --git a/nginx/.env.example b/nginx/.env.example index d63211e..81e3e0d 100644 --- a/nginx/.env.example +++ b/nginx/.env.example @@ -63,3 +63,9 @@ GITEA_HOST=gitea_app_1 PODGRAB_DOMAIN= ### Hostname PODGRAB_HOST=podgrab_app_1 + +## Woodpecker +### Domain name +WOODPECKER_DOMAIN= +### Hostname +WOODPECKER_HOST=woodpecker_app_1 diff --git a/nginx/sites-available/woodpecker.conf.template b/nginx/sites-available/woodpecker.conf.template new file mode 100644 index 0000000..af0f386 --- /dev/null +++ b/nginx/sites-available/woodpecker.conf.template @@ -0,0 +1,22 @@ +server { + # SSL Key locations + ssl_certificate /etc/letsencrypt/live/${WOODPECKER_DOMAIN}/fullchain.pem; + ssl_certificate_key /etc/letsencrypt/live/${WOODPECKER_DOMAIN}/privkey.pem; + + listen ${HTTPS_PORT} ssl; + listen [::]:${HTTPS_PORT} ssl; + server_name ${WOODPECKER_DOMAIN}; + + location / { + proxy_set_header X-Forwarded-For $remote_addr; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header Host $http_host; + + proxy_pass http://${WOODPECKER_HOST}:8000; + proxy_redirect off; + proxy_http_version 1.1; + proxy_buffering off; + + chunked_transfer_encoding off; + } +} From 290fa36051f25bbe44f40a6cacfcb6d12f613e5c Mon Sep 17 00:00:00 2001 From: Jef Roosens Date: Fri, 23 Apr 2021 23:35:30 +0200 Subject: [PATCH 3/8] Added .env file --- woodpecker/.env.example | 15 +++++++++++++++ woodpecker/docker-compose.yml | 22 ++++------------------ 2 files changed, 19 insertions(+), 18 deletions(-) create mode 100644 woodpecker/.env.example diff --git a/woodpecker/.env.example b/woodpecker/.env.example new file mode 100644 index 0000000..b59047f --- /dev/null +++ b/woodpecker/.env.example @@ -0,0 +1,15 @@ +# Allow all users to use it +DRONE_OPEN=true +# Drone needs to know its own location +DRONE_HOST= +# Shared secret to communicate with agents +DRONE_SECRET= + +# Tell Drone to use postgres +DRONE_DATABASE_DRIVER=postgres +DRONE_DATABASE_DATASOURCE=postgres://woodpecker:woodpecker@db:5432/woodpecker?sslmode=disable + +# These are just a guess based on the documentation +DRONE_GITEA=true +DRONE_GITEA_CLIENT= +DRONE_GITEA_SECRET= diff --git a/woodpecker/docker-compose.yml b/woodpecker/docker-compose.yml index b7f2211..41cdf12 100644 --- a/woodpecker/docker-compose.yml +++ b/woodpecker/docker-compose.yml @@ -17,28 +17,14 @@ services: timeout: '5s' start_period: '10s' - environment: - # Allow all Gitea users to use it - - 'DRONE_OPEN=true' - # Drone needs to know its own location - - 'DRONE_HOST=${DRONE_HOST}' - # Shared secret to communicate with agents - - 'DRONE_SECRET=${DRONE_SECRET}' - # Tell Drone to use postgres - - 'DRONE_DATABASE_DRIVER=postgres' - - 'DRONE_DATABASE_DATASOURCE=postgres://woodpecker:woodpecker@db:5432/woodpecker?sslmode=disable' - - # These are just a guess based on the documentation - - 'DRONE_GITEA=true' - - 'DRONE_GITEA_CLIENT=${GITEA_CLIENT}' - - 'DRONE_GITEA_SECRET=${GITEA_SECRET}' + env_file: + - '.env' networks: - 'default' - 'nginx' ports: # Used to communicate with the agents (I think) - '9000:9000' - # Also needs port 8000 for web UI (so proxy_pass to 8000) volumes: - 'server-data:/var/lib/drone' @@ -58,7 +44,6 @@ services: - 'POSTGRES_DB=woodpecker' - 'POSTGRES_USER=woodpecker' - 'POSTGRES_PASSWORD=woodpecker' - volumes: - 'db-data:/var/lib/postgresql/data' @@ -70,7 +55,8 @@ services: command: 'agent' depends_on: - - 'app' + app: + condition: 'service_healthy' environment: - 'DRONE_SERVER=${DRONE_HOST}' From 02983c665dd38a570944733bb9daac3622e2d25d Mon Sep 17 00:00:00 2001 From: Jef Roosens Date: Fri, 23 Apr 2021 23:49:03 +0200 Subject: [PATCH 4/8] Fixed Woodpecker Gitea config --- woodpecker/.env.example | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/woodpecker/.env.example b/woodpecker/.env.example index b59047f..d87b716 100644 --- a/woodpecker/.env.example +++ b/woodpecker/.env.example @@ -11,5 +11,4 @@ DRONE_DATABASE_DATASOURCE=postgres://woodpecker:woodpecker@db:5432/woodpecker?ss # These are just a guess based on the documentation DRONE_GITEA=true -DRONE_GITEA_CLIENT= -DRONE_GITEA_SECRET= +DRONE_GITEA_URL= From d554373c5ddfe60d9fe242c1c1bf3e545fafd320 Mon Sep 17 00:00:00 2001 From: Jef Roosens Date: Fri, 23 Apr 2021 23:53:01 +0200 Subject: [PATCH 5/8] Defined network as external --- woodpecker/docker-compose.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/woodpecker/docker-compose.yml b/woodpecker/docker-compose.yml index 41cdf12..ae9c317 100644 --- a/woodpecker/docker-compose.yml +++ b/woodpecker/docker-compose.yml @@ -64,6 +64,10 @@ services: volumes: - '/var/run/docker.sock:/var/run/docker.sock' +networks: + nginx: + external: true + volumes: db-data: server-data: From 0d8408f446a481386e741cf9461d6ca1c6d4a600 Mon Sep 17 00:00:00 2001 From: Jef Roosens Date: Sat, 24 Apr 2021 00:45:09 +0200 Subject: [PATCH 6/8] Updated woodpecker config --- woodpecker/.env.example | 2 ++ woodpecker/docker-compose.yml | 10 ++-------- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/woodpecker/.env.example b/woodpecker/.env.example index d87b716..0bc284b 100644 --- a/woodpecker/.env.example +++ b/woodpecker/.env.example @@ -2,6 +2,8 @@ DRONE_OPEN=true # Drone needs to know its own location DRONE_HOST= +# The same, but without the https in front of it +DRONE_SERVER= # Shared secret to communicate with agents DRONE_SECRET= diff --git a/woodpecker/docker-compose.yml b/woodpecker/docker-compose.yml index ae9c317..22010ca 100644 --- a/woodpecker/docker-compose.yml +++ b/woodpecker/docker-compose.yml @@ -10,12 +10,6 @@ services: depends_on: db: condition: 'service_healthy' - healthcheck: - test: 'curl -f http://localhost:8000/ || exit 1' - interval: '30s' - retries: 3 - timeout: '5s' - start_period: '10s' env_file: - '.env' @@ -50,7 +44,7 @@ services: # We can deploy more agents by using the scale command # Each agent can do one parallel build by default agent: - image: 'laszlocloud/woodpecker-server:v0.12.0' + image: 'laszlocloud/woodpecker-agent:v0.12.0' restart: 'always' command: 'agent' @@ -59,7 +53,7 @@ services: condition: 'service_healthy' environment: - - 'DRONE_SERVER=${DRONE_HOST}' + - 'DRONE_SERVER=${DRONE_SERVER}' - 'DRONE_SECRET=${DRONE_SECRET}' volumes: - '/var/run/docker.sock:/var/run/docker.sock' From c3ea9a0b2525e421a05e9402ee5090b195dd4b68 Mon Sep 17 00:00:00 2001 From: Chewing_Bever Date: Mon, 10 May 2021 18:15:33 +0200 Subject: [PATCH 7/8] Updated woodpecker version --- woodpecker/docker-compose.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/woodpecker/docker-compose.yml b/woodpecker/docker-compose.yml index 22010ca..9646531 100644 --- a/woodpecker/docker-compose.yml +++ b/woodpecker/docker-compose.yml @@ -4,7 +4,7 @@ services: # The main drone instance app: # Latest version as of writing this document - image: 'laszlocloud/woodpecker-server:v0.12.0' + image: 'laszlocloud/woodpecker-server:v0.13.0' restart: 'always' depends_on: @@ -44,7 +44,7 @@ services: # We can deploy more agents by using the scale command # Each agent can do one parallel build by default agent: - image: 'laszlocloud/woodpecker-agent:v0.12.0' + image: 'laszlocloud/woodpecker-agent:v0.13.0' restart: 'always' command: 'agent' From 12c1aad4f4f3cf2111afd3a0ffe97966f0ea366e Mon Sep 17 00:00:00 2001 From: Chewing_Bever Date: Mon, 10 May 2021 18:25:54 +0200 Subject: [PATCH 8/8] Server image doesn't have healthcheck --- woodpecker/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/woodpecker/docker-compose.yml b/woodpecker/docker-compose.yml index 9646531..a0d3405 100644 --- a/woodpecker/docker-compose.yml +++ b/woodpecker/docker-compose.yml @@ -50,7 +50,7 @@ services: depends_on: app: - condition: 'service_healthy' + condition: 'service_started' environment: - 'DRONE_SERVER=${DRONE_SERVER}'