diff --git a/ansible/roles/gitea-runner/handlers/main.yml b/ansible/roles/gitea-runner/handlers/main.yml index cff7f5c..9a47d62 100644 --- a/ansible/roles/gitea-runner/handlers/main.yml +++ b/ansible/roles/gitea-runner/handlers/main.yml @@ -6,6 +6,6 @@ - name: Restart gitea-runner ansible.builtin.systemd: - name: "gitea-runner@{{ runner_name }}" + name: "gitea-runner-{{ runner_mode }}@{{ runner_name }}" state: restarted when: ansible_facts is defined and ansible_facts['service_mgr'] | default('') == 'systemd' diff --git a/ansible/roles/gitea-runner/molecule/binary/verify.yml b/ansible/roles/gitea-runner/molecule/binary/verify.yml index 2859521..f856bc6 100644 --- a/ansible/roles/gitea-runner/molecule/binary/verify.yml +++ b/ansible/roles/gitea-runner/molecule/binary/verify.yml @@ -8,6 +8,9 @@ - name: Load role defaults ansible.builtin.include_vars: dir: "{{ lookup('env', 'MOLECULE_PROJECT_DIRECTORY') }}/defaults" + - name: Override runner mode for binary scenario + ansible.builtin.set_fact: + runner_mode: "binary" tasks: - name: Check gitea_runner binary exists ansible.builtin.stat: @@ -26,7 +29,7 @@ - name: Check systemd template unit exists ansible.builtin.stat: - path: "/etc/systemd/system/gitea-runner@.service" + path: "/etc/systemd/system/gitea-runner-{{ runner_mode | default('docker') }}@.service" register: service_stat - name: Assert template unit exists diff --git a/ansible/roles/gitea-runner/molecule/default/verify.yml b/ansible/roles/gitea-runner/molecule/default/verify.yml index 9624ea0..698014e 100644 --- a/ansible/roles/gitea-runner/molecule/default/verify.yml +++ b/ansible/roles/gitea-runner/molecule/default/verify.yml @@ -37,7 +37,7 @@ - name: Check systemd template unit exists ansible.builtin.stat: - path: "/etc/systemd/system/gitea-runner@.service" + path: "/etc/systemd/system/gitea-runner-{{ runner_mode | default('docker') }}@.service" register: service_stat - name: Assert template unit exists diff --git a/ansible/roles/gitea-runner/molecule/deregister/verify.yml b/ansible/roles/gitea-runner/molecule/deregister/verify.yml index 1339389..7883cff 100644 --- a/ansible/roles/gitea-runner/molecule/deregister/verify.yml +++ b/ansible/roles/gitea-runner/molecule/deregister/verify.yml @@ -20,7 +20,7 @@ - name: Check systemd template still exists ansible.builtin.stat: - path: "/etc/systemd/system/gitea-runner@.service" + path: "/etc/systemd/system/gitea-runner-{{ runner_mode | default('docker') }}@.service" register: service_stat - name: Assert systemd template still exists after deregister diff --git a/ansible/roles/gitea-runner/molecule/lifecycle/side_effect.yml b/ansible/roles/gitea-runner/molecule/lifecycle/side_effect.yml index bb4be54..84d8fb2 100644 --- a/ansible/roles/gitea-runner/molecule/lifecycle/side_effect.yml +++ b/ansible/roles/gitea-runner/molecule/lifecycle/side_effect.yml @@ -12,14 +12,14 @@ tasks: - name: Stop gitea-runner systemd instance ansible.builtin.systemd: - name: "gitea-runner@{{ runner_name }}" + name: "gitea-runner-docker@{{ runner_name }}" state: stopped daemon_reload: true when: systemd_available.stat.exists - name: Disable gitea-runner systemd instance ansible.builtin.systemd: - name: "gitea-runner@{{ runner_name }}" + name: "gitea-runner-docker@{{ runner_name }}" enabled: false daemon_reload: true when: systemd_available.stat.exists @@ -37,14 +37,14 @@ tasks: - name: Enable gitea-runner systemd instance ansible.builtin.systemd: - name: "gitea-runner@{{ runner_name }}" + name: "gitea-runner-docker@{{ runner_name }}" enabled: true daemon_reload: true when: systemd_available.stat.exists - name: Start gitea-runner systemd instance ansible.builtin.systemd: - name: "gitea-runner@{{ runner_name }}" + name: "gitea-runner-docker@{{ runner_name }}" state: started daemon_reload: true when: systemd_available.stat.exists diff --git a/ansible/roles/gitea-runner/molecule/lifecycle/verify.yml b/ansible/roles/gitea-runner/molecule/lifecycle/verify.yml index 80176dd..aa3e0ae 100644 --- a/ansible/roles/gitea-runner/molecule/lifecycle/verify.yml +++ b/ansible/roles/gitea-runner/molecule/lifecycle/verify.yml @@ -11,7 +11,7 @@ tasks: - name: Check systemd template unit exists ansible.builtin.stat: - path: "/etc/systemd/system/gitea-runner@.service" + path: "/etc/systemd/system/gitea-runner-{{ runner_mode | default('docker') }}@.service" register: template_stat - name: Assert template unit exists @@ -27,7 +27,7 @@ - name: Check instance is enabled ansible.builtin.systemd: - name: "gitea-runner@lifecycle-test-runner" + name: "gitea-runner-{{ runner_mode | default('docker') }}@lifecycle-test-runner" register: service_status when: systemd_available.stat.exists diff --git a/ansible/roles/gitea-runner/molecule/multi-instance/verify.yml b/ansible/roles/gitea-runner/molecule/multi-instance/verify.yml index 61e74bb..e07e981 100644 --- a/ansible/roles/gitea-runner/molecule/multi-instance/verify.yml +++ b/ansible/roles/gitea-runner/molecule/multi-instance/verify.yml @@ -6,10 +6,13 @@ - name: Load role defaults ansible.builtin.include_vars: dir: "{{ lookup('env', 'MOLECULE_PROJECT_DIRECTORY') }}/defaults" + - name: Override runner mode for multi-instance scenario + ansible.builtin.set_fact: + runner_mode: "binary" tasks: - name: Check systemd template unit exists ansible.builtin.stat: - path: "/etc/systemd/system/gitea-runner@.service" + path: "/etc/systemd/system/gitea-runner-{{ runner_mode | default('docker') }}@.service" register: template_stat - name: Assert template unit exists diff --git a/ansible/roles/gitea-runner/molecule/template-content/verify.yml b/ansible/roles/gitea-runner/molecule/template-content/verify.yml index de961ea..034544c 100644 --- a/ansible/roles/gitea-runner/molecule/template-content/verify.yml +++ b/ansible/roles/gitea-runner/molecule/template-content/verify.yml @@ -7,9 +7,20 @@ ansible.builtin.include_vars: dir: "{{ lookup('env', 'MOLECULE_PROJECT_DIRECTORY') }}/defaults" tasks: + - name: Check Docker mode systemd template exists + ansible.builtin.stat: + path: "/etc/systemd/system/gitea-runner-docker@.service" + register: docker_template_stat + + - name: Assert Docker mode systemd template exists + ansible.builtin.assert: + that: + - docker_template_stat.stat.exists + fail_msg: "Docker systemd template is missing" + - name: Read rendered Docker systemd template ansible.builtin.slurp: - src: "/etc/systemd/system/gitea-runner@.service" + src: "/etc/systemd/system/gitea-runner-docker@.service" register: docker_template - name: Assert Docker mode template contains expected directives @@ -23,6 +34,30 @@ - "'Restart=on-failure' in docker_template.content | b64decode" fail_msg: "Docker systemd template is missing expected directives" + - name: Check Binary mode systemd template exists + ansible.builtin.stat: + path: "/etc/systemd/system/gitea-runner-binary@.service" + register: binary_template_stat + + - name: Assert Binary mode systemd template exists + ansible.builtin.assert: + that: + - binary_template_stat.stat.exists + fail_msg: "Binary systemd template is missing" + + - name: Read rendered Binary systemd template + ansible.builtin.slurp: + src: "/etc/systemd/system/gitea-runner-binary@.service" + register: binary_template + + - name: Assert Binary mode template contains expected directives + ansible.builtin.assert: + that: + - "'Type=simple' in binary_template.content | b64decode" + - "'ExecStart={{ gitea_runner_binary_path }}' in binary_template.content | b64decode" + - "'Restart=on-failure' in binary_template.content | b64decode" + fail_msg: "Binary systemd template is missing expected directives" + - name: Read rendered prune service template ansible.builtin.slurp: src: "/etc/systemd/system/docker-prune.service" diff --git a/ansible/roles/gitea-runner/molecule/update/verify.yml b/ansible/roles/gitea-runner/molecule/update/verify.yml index 44ef8b8..ed5304b 100644 --- a/ansible/roles/gitea-runner/molecule/update/verify.yml +++ b/ansible/roles/gitea-runner/molecule/update/verify.yml @@ -29,16 +29,27 @@ - binary_stat.stat.exists fail_msg: "Binary runner executable missing after update" - - name: Check systemd template still exists + - name: Check Docker mode systemd template still exists ansible.builtin.stat: - path: "/etc/systemd/system/gitea-runner@.service" - register: service_stat + path: "/etc/systemd/system/gitea-runner-docker@.service" + register: docker_service_stat - - name: Assert systemd template still exists after update + - name: Assert Docker mode systemd template still exists after update ansible.builtin.assert: that: - - service_stat.stat.exists - fail_msg: "Systemd template unit missing after update" + - docker_service_stat.stat.exists + fail_msg: "Docker mode systemd template missing after update" + + - name: Check Binary mode systemd template still exists + ansible.builtin.stat: + path: "/etc/systemd/system/gitea-runner-binary@.service" + register: binary_service_stat + + - name: Assert Binary mode systemd template still exists after update + ansible.builtin.assert: + that: + - binary_service_stat.stat.exists + fail_msg: "Binary mode systemd template missing after update" - name: Check Docker mode data directory still exists ansible.builtin.stat: diff --git a/ansible/roles/gitea-runner/tasks/binary_update.yml b/ansible/roles/gitea-runner/tasks/binary_update.yml index 1f18081..db4adb6 100644 --- a/ansible/roles/gitea-runner/tasks/binary_update.yml +++ b/ansible/roles/gitea-runner/tasks/binary_update.yml @@ -4,6 +4,7 @@ - name: Restart gitea-runner systemd instance ansible.builtin.systemd: - name: "gitea-runner@{{ runner_name }}" + name: "gitea-runner-{{ runner_mode }}@{{ runner_name }}" state: restarted daemon_reload: true + when: systemd_available is defined and systemd_available.stat is defined and systemd_available.stat.exists diff --git a/ansible/roles/gitea-runner/tasks/docker_update.yml b/ansible/roles/gitea-runner/tasks/docker_update.yml index 549d322..1f6f4e6 100644 --- a/ansible/roles/gitea-runner/tasks/docker_update.yml +++ b/ansible/roles/gitea-runner/tasks/docker_update.yml @@ -6,7 +6,7 @@ - name: Restart gitea-runner systemd instance ansible.builtin.systemd: - name: "gitea-runner@{{ runner_name }}" + name: "gitea-runner-{{ runner_mode }}@{{ runner_name }}" state: restarted daemon_reload: true - when: systemd_available.stat.exists + when: systemd_available is defined and systemd_available.stat is defined and systemd_available.stat.exists diff --git a/ansible/roles/gitea-runner/tasks/integration_test.yml b/ansible/roles/gitea-runner/tasks/integration_test.yml index 4999c6c..a96e328 100644 --- a/ansible/roles/gitea-runner/tasks/integration_test.yml +++ b/ansible/roles/gitea-runner/tasks/integration_test.yml @@ -27,7 +27,7 @@ - name: Verify runner service active (Binary mode) ansible.builtin.systemd: - name: "gitea-runner@{{ runner_name }}" + name: "gitea-runner-{{ runner_mode }}@{{ runner_name }}" state: started register: service_check when: runner_mode == 'binary' diff --git a/ansible/roles/gitea-runner/tasks/service.yml b/ansible/roles/gitea-runner/tasks/service.yml index c40cfa6..03582a7 100644 --- a/ansible/roles/gitea-runner/tasks/service.yml +++ b/ansible/roles/gitea-runner/tasks/service.yml @@ -2,7 +2,7 @@ - name: Create systemd template service file ansible.builtin.template: src: gitea-runner@.service.j2 - dest: "/etc/systemd/system/gitea-runner@.service" + dest: "/etc/systemd/system/gitea-runner-{{ runner_mode }}@.service" mode: "0644" notify: - Reload systemd @@ -10,7 +10,7 @@ - name: Enable and start gitea-runner instance ansible.builtin.systemd: - name: "gitea-runner@{{ runner_name }}" + name: "gitea-runner-{{ runner_mode }}@{{ runner_name }}" state: started enabled: true daemon_reload: true