feat: Add runners

Signed-off-by: Julien Riou <julien@riou.xyz>
This commit is contained in:
Julien Riou 2025-08-25 15:21:07 +02:00
parent dc191e4b4d
commit 6c7280b213
Signed by: jriou
GPG key ID: 9A099EDA51316854
7 changed files with 159 additions and 0 deletions

20
tasks/deploy-runners.yml Normal file
View file

@ -0,0 +1,20 @@
---
- name: register runners
ansible.builtin.include_tasks: register-runner.yml
loop: "{{ forgejo_runners | dict2items }}"
loop_control:
label: "{{ item.key }}"
- name: create runners configuration
ansible.builtin.template:
src: "runners/docker-compose.yml.j2"
dest: "{{ forgejo_runners_config_dir }}/docker-compose.yml"
owner: root
group: root
mode: "0644"
- name: start runners service
community.docker.docker_compose_v2:
project_src: "{{ forgejo_runners_config_dir }}"
files:
- docker-compose.yml

View file

@ -64,3 +64,7 @@
loop: "{{ forgejo_allowed_sources }}"
notify: save iptables
when: forgejo_manage_iptables
- name: deploy runners
ansible.builtin.include_tasks: deploy-runners.yml
when: forgejo_runners

41
tasks/register-runner.yml Normal file
View file

@ -0,0 +1,41 @@
---
- name: check variables
ansible.builtin.assert:
that:
- forgejo_web_port | mandatory
- forgejo_runners_version | mandatory
- forgejo_runners_config_dir | mandatory
- item.key | mandatory
- item.value | mandatory
- name: create runner subdirectory
ansible.builtin.file:
path: "{{ forgejo_runners_config_dir }}/{{ item.key }}"
state: directory
mode: "0755"
owner: forgejo
group: forgejo
- name: register runner
ansible.builtin.command:
cmd: >-
docker run
-v /var/run/docker.sock:/var/run/docker.sock
-v {{ forgejo_runners_config_dir }}/{{ item.key }}:/data
--rm
--network forgejo_forgejo
--user {{ ansible_facts.getent_passwd.forgejo[1] }}:{{ ansible_facts.getent_passwd.forgejo[2] }}
code.forgejo.org/forgejo/runner:{{ forgejo_runners_version }}
forgejo-runner register --no-interactive
--token {{ item.value }}
--name {{ item.key }}
--instance http://forgejo-server:{{ forgejo_web_port }}
creates: "{{ forgejo_runners_config_dir }}/{{ item.key }}/.runner"
notify: start runners
- name: create runner configuration
ansible.builtin.copy:
src: runners/config.yml
dest: "{{ forgejo_runners_config_dir }}/{{ item.key }}/config.yml"
force: false
notify: start runners