infra/compose/forgejo.runner.yml

59 lines
1.8 KiB
YAML
Raw Normal View History

2024-08-12 15:30:20 -06:00
# SAMPLE ENV
# SHARED_SECRET=super-secret-string
# ROOT_PASSWORD=super-secret-password
2024-08-12 15:10:12 -06:00
volumes:
docker_certs:
services:
docker-in-docker:
image: docker:dind
hostname: docker
2024-09-02 01:33:50 -06:00
privileged: true
2024-08-12 15:10:12 -06:00
environment:
DOCKER_TLS_CERTDIR: /certs
DOCKER_HOST: docker-in-docker
volumes:
- docker_certs:/certs
runner-register:
image: code.forgejo.org/forgejo/runner:3.4.1
links:
- docker-in-docker
environment:
DOCKER_HOST: tcp://docker-in-docker:2376
SHARED_SECRET: $SHARED_SECRET
volumes:
- /srv/runner-data:/data
user: 0:0
command: >-
bash -ec '
while : ; do
2024-09-02 01:33:50 -06:00
forgejo-runner create-runner-file --connect --instance http://codeberg.org --name runner --secret ${SHARED_SECRET} && break ;
2024-08-12 15:10:12 -06:00
sleep 1 ;
done ;
sed -i -e "s|\"labels\": null|\"labels\": [\"docker:docker://node:20-bookworm\", \"ubuntu-22.04:docker://catthehacker/ubuntu:act-22.04\"]|" .runner ;
forgejo-runner generate-config > config.yml ;
sed -i -e "s|network: .*|network: host|" config.yml ;
sed -i -e "s|^ envs:$$| envs:\n DOCKER_HOST: tcp://docker:2376\n DOCKER_TLS_VERIFY: 1\n DOCKER_CERT_PATH: /certs/client|" config.yml ;
sed -i -e "s|^ options:| options: -v /certs/client:/certs/client|" config.yml ;
sed -i -e "s| valid_volumes: \[\]$$| valid_volumes:\n - /certs/client|" config.yml ;
chown -R 1000:1000 /data
2024-09-02 01:33:50 -06:00
'
2024-08-12 15:10:12 -06:00
runner-daemon:
image: code.forgejo.org/forgejo/runner:3.4.1
links:
- docker-in-docker
environment:
DOCKER_HOST: tcp://docker:2376
DOCKER_CERT_PATH: /certs/client
DOCKER_TLS_VERIFY: "1"
volumes:
- /srv/runner-data:/data
- docker_certs:/certs
command: >-
bash -c '
while : ; do test -w .runner && forgejo-runner --config config.yml daemon ; sleep 1 ; done
2024-09-02 01:33:50 -06:00
'