diff --git a/.gitignore b/.gitignore index e03db0a..25e1cd3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ .idea .DS_Store .env + +/woodpecker/agent-data/ +/woodpecker/server-data/ diff --git a/README.md b/README.md index abe7f2f..aacca2e 100644 --- a/README.md +++ b/README.md @@ -4,3 +4,5 @@ ```text docker:docker://data.forgejo.org/oci/alpine:3.20 ``` + +https://development-operations.logiq.one/ diff --git a/caddy/Caddyfile b/caddy/Caddyfile new file mode 100644 index 0000000..e179da5 --- /dev/null +++ b/caddy/Caddyfile @@ -0,0 +1,9 @@ +# expose WebUI and API +development-operations.logiq.one { + reverse_proxy woodpecker-server:8000 +} + +# expose gRPC +woodpecker-agent.logiq.com { + reverse_proxy h2c://woodpecker-server:9000 +} diff --git a/docker-compose.yaml b/docker-compose.yaml index 5dffcd1..421cecc 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -1,28 +1,53 @@ services: - dind: - image: "docker:dind" - container_name: "dind" - hostname: "dind" - privileged: "true" - command: [ "dockerd", "-H", "tcp://0.0.0.0:2375", "--tls=false" ] - restart: "unless-stopped" - - runner: - image: "data.forgejo.org/forgejo/runner:6.3.1" - container_name: "runner" - hostname: "runner" - links: - - dind - depends_on: - dind: - condition: service_started - environment: - DOCKER_HOST: tcp://dind:2375 - # User without root privileges, but with access to `./data`. - user: 1001:1001 + caddy: + image: caddy:latest + container_name: caddy + hostname: caddy + restart: always + # labels: + # logging: promtail + # logging_jobname: caddy + cap_add: + - NET_ADMIN + ports: + - 80:80 + - 443:443 + - 443:443/udp + extra_hosts: + - host.docker.internal:host-gateway volumes: - - ./runner/data:/data - restart: unless-stopped - command: "/bin/sh -c 'sleep 5; forgejo-runner daemon'" -# command: "/bin/sh -c 'while : ; do sleep 1 ; done ;'" + - ./caddy/Caddyfile:/etc/caddy/Caddyfile + - ./caddy/data:/data + - ./caddy/certificates:/data/caddy/certificates + - ./caddy/config:/config + + woodpecker-server: + image: woodpeckerci/woodpecker-server:v3 + env_file: + - path: ./woodpecker/.default.env + required: true + - path: ./woodpecker/.env + required: false + ports: + - 8000:8000 + volumes: + - ./woodpecker/server-data:/var/lib/woodpecker/ + + woodpecker-agent: + image: woodpeckerci/woodpecker-agent:v3 + command: agent + restart: always + env_file: + - path: ./woodpecker/.default.env + required: true + - path: ./woodpecker/.env + required: false + ports: + - 9000:9000 + depends_on: + - woodpecker-server + volumes: + - ./woodpecker/agent-data:/etc/woodpecker + - /var/run/docker.sock:/var/run/docker.sock + diff --git a/runner/.env.default b/runner/.env.default deleted file mode 100644 index b9b22af..0000000 --- a/runner/.env.default +++ /dev/null @@ -1,2 +0,0 @@ -USER_UID=1000 -USER_GID=1000 diff --git a/woodpecker/.default.env b/woodpecker/.default.env new file mode 100644 index 0000000..cd40053 --- /dev/null +++ b/woodpecker/.default.env @@ -0,0 +1,8 @@ +WOODPECKER_HOST=http://localhost:9000 +WOODPECKER_SERVER=localhost:9000 +WOODPECKER_AGENT_SECRET=3ea61e925022bd4c4a4154ea800d7b0e07d2450fcc6494cea2f4e76aea6a6cb2 +WOODPECKER_ADMIN=kaiju +WOODPECKER_FORGEJO=true +WOODPECKER_FORGEJO_URL=https://hub.logiq.one +WOODPECKER_FORGEJO_CLIENT=ca3e8649-52eb-4863-a31a-443d52366afd +WOODPECKER_FORGEJO_SECRET=gto_47m2tnvododmxypoaoq3pd6wn5oasvwux5xr5347izewdf3t5lka