diff --git a/roles/forgejo_runner/tasks/main.yml b/roles/forgejo_runner/tasks/main.yml index 602a6d4..d4c1d3d 100644 --- a/roles/forgejo_runner/tasks/main.yml +++ b/roles/forgejo_runner/tasks/main.yml @@ -88,6 +88,23 @@ when: (not forgejo_runner_registration.stat.exists) or forgejo_runner_labels_changed no_log: true +- name: Check that runner registration state file exists after registration + stat: + path: /opt/forgejo-runner/data/.runner + register: forgejo_runner_registration_after + changed_when: false + when: (not forgejo_runner_registration.stat.exists) or forgejo_runner_labels_changed + +- name: Fail if runner registration did not persist state + assert: + that: + - forgejo_runner_registration_after.stat.exists + fail_msg: >- + Forgejo runner registration did not create /opt/forgejo-runner/data/.runner. + Without this file, the runner will re-register and Forgejo will accumulate duplicate runners. + Ensure the runner container writes its .runner file under /data (the persisted volume). + when: (not forgejo_runner_registration.stat.exists) or forgejo_runner_labels_changed + - name: Persist applied Forgejo runner labels copy: dest: /opt/forgejo-runner/data/.labels diff --git a/roles/forgejo_runner/templates/docker-compose.yml.j2 b/roles/forgejo_runner/templates/docker-compose.yml.j2 index 1f8283b..46b8b92 100644 --- a/roles/forgejo_runner/templates/docker-compose.yml.j2 +++ b/roles/forgejo_runner/templates/docker-compose.yml.j2 @@ -1,6 +1,7 @@ services: runner: image: data.forgejo.org/forgejo/runner:11 + working_dir: /data environment: DOCKER_HOST: unix:///var/run/docker.sock user: "0:0"