M roles/containers/forgejo-runner/README.org => roles/containers/forgejo-runner/README.org +6 -3
@@ 6,7 6,10 @@ you probably want to set/edit the following variables
in your ~secret.yml~ (or your unencrypted config):
#+begin_src yaml
forgejo_runner_project_dir: "forgejo-runner"
-forgejo_runner_token: "changeme"
-forgejo_runner_name: "runner"
-forgejo_runner_instance: "https://codeberg.org/"
+forgejo_runner_list:
+ default:
+ token: "changeme"
+ instance: "https://codeberg.org"
#+end_src
+
+You can define more runners, by choosing an id and setting the `token` and `instance` key for it.
M roles/containers/forgejo-runner/defaults/main.yml => roles/containers/forgejo-runner/defaults/main.yml +4 -3
@@ 1,5 1,6 @@
---
forgejo_runner_project_dir: "forgejo-runner"
-forgejo_runner_token: "changeme"
-forgejo_runner_name: "runner"
-forgejo_runner_instance: "https://codeberg.org/"
+forgejo_runner_list:
+ default:
+ token: "changeme"
+ instance: "https://codeberg.org"
M roles/containers/forgejo-runner/tasks/setup.yml => roles/containers/forgejo-runner/tasks/setup.yml +24 -8
@@ 5,27 5,43 @@
state: directory
recurse: true
+- name: Ensure the subdirectories for each runner exist
+ ansible.builtin.file:
+ path: "{{ container_dir }}/{{ forgejo_runner_project_dir }}/{{ item.key }}"
+ state: directory
+ recurse: true
+ loop: "{{ forgejo_runner_list | dict2items }}"
+
+- name: Check if we have already generated config files for the runners
+ ansible.builtin.stat:
+ path: "{{ container_dir }}/{{ forgejo_runner_project_dir }}/{{ item.key }}/.runner"
+ loop: "{{ forgejo_runner_list | dict2items }}"
+ register: list
+
- name: Create forgejo-runner registration
community.docker.docker_container:
- name: forgejo-runner-bootstrap
+ name: "forgejo-runner-{{ item.item.key }}-bootstrap"
image: code.forgejo.org/forgejo/runner:2.3.0
working_dir: "/data"
command: "register \
--no-interactive \
- --token {{ forgejo_runner_token }} \
- --name {{ forgejo_runner_name }} \
- --instance {{ forgejo_runner_instance }}
+ --token {{ item.item.value.token }} \
+ --name {{ item.item.key }} \
+ --instance {{ item.item.value.instance }}
--labels docker"
volumes:
- - "{{ container_dir }}/{{ forgejo_runner_project_dir }}/:/data"
+ - "{{ container_dir }}/{{ forgejo_runner_project_dir }}/{{ item.item.key }}/:/data"
+ when: not item.stat.exists
+ loop: "{{ list.results }}"
-- name: Setup forgejo-runner
+- name: Start forgejo-runners
community.docker.docker_container:
- name: forgejo-runner
+ name: "forgejo-runner-{{ item.key }}"
image: code.forgejo.org/forgejo/runner:2.3.0
working_dir: "/data"
restart_policy: unless-stopped
command: daemon
volumes:
- - "{{ container_dir }}/{{ forgejo_runner_project_dir }}/:/data"
+ - "{{ container_dir }}/{{ forgejo_runner_project_dir }}/{{ item.key }}:/data"
- /var/run/docker.sock:/var/run/docker.sock
+ loop: "{{ forgejo_runner_list | dict2items }}"