GRM-26: fix: CI pipeline for rootless Docker runners

This commit is contained in:
emil
2026-06-20 16:16:05 +00:00
parent 9c51c8b62c
commit ea18793963
23 changed files with 510 additions and 49 deletions
+15 -3
View File
@@ -11,18 +11,30 @@
- name: Stop gitea-runner systemd instance
ansible.builtin.systemd:
name: "gitea-runner@{{ runner_name }}"
name: "gitea-runner-{{ runner_mode | default('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-{{ runner_mode | default('docker') }}@{{ runner_name }}"
enabled: false
daemon_reload: true
when: systemd_available.stat.exists
- name: Stop Docker container directly
ansible.builtin.command: "docker stop -t 30 gitea-runner-{{ runner_name }}"
changed_when: true
failed_when: false
when: runner_mode | default('docker') == 'docker'
- name: Remove Docker container directly
ansible.builtin.command: "docker rm -f gitea-runner-{{ runner_name }}"
changed_when: true
failed_when: false
when: runner_mode | default('docker') == 'docker'
- name: Include deregistration
ansible.builtin.include_role:
name: gitea-runner
@@ -31,7 +43,7 @@
- name: Remove systemd unit file (last instance)
ansible.builtin.file:
path: "/etc/systemd/system/gitea-runner@.service"
path: "/etc/systemd/system/gitea-runner-{{ runner_mode | default('docker') }}@.service"
state: absent
when: remove_systemd_template | default(false)
@@ -4,13 +4,13 @@ driver:
platforms:
- name: ${MOLECULE_PLATFORM_NAME:-ubuntu-2204}
image: ${MOLECULE_PLATFORM_IMAGE:-geerlingguy/docker-ubuntu2204-ansible:latest}
image: ${MOLECULE_PLATFORM_IMAGE:-ubuntu:22.04}
command: ${MOLECULE_PLATFORM_COMMAND:-sleep infinity}
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:rw
cgroupns_mode: host
privileged: true
pre_build_image: true
pre_build_image: false
provisioner:
name: ansible
@@ -6,6 +6,7 @@
- name: Update apt cache
ansible.builtin.apt:
update_cache: true
cache_valid_time: 0
when: ansible_facts['os_family'] == 'Debian'
- name: Install python3-debian for deb822_repository module
@@ -4,13 +4,13 @@ driver:
platforms:
- name: ${MOLECULE_PLATFORM_NAME:-ubuntu-2204}
image: ${MOLECULE_PLATFORM_IMAGE:-geerlingguy/docker-ubuntu2204-ansible:latest}
image: ${MOLECULE_PLATFORM_IMAGE:-ubuntu:22.04}
command: ${MOLECULE_PLATFORM_COMMAND:-sleep infinity}
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:rw
cgroupns_mode: host
privileged: true
pre_build_image: true
pre_build_image: false
provisioner:
name: ansible
@@ -4,13 +4,13 @@ driver:
platforms:
- name: ${MOLECULE_PLATFORM_NAME:-ubuntu-2204}
image: ${MOLECULE_PLATFORM_IMAGE:-geerlingguy/docker-ubuntu2204-ansible:latest}
image: ${MOLECULE_PLATFORM_IMAGE:-ubuntu:22.04}
command: ${MOLECULE_PLATFORM_COMMAND:-sleep infinity}
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:rw
cgroupns_mode: host
privileged: true
pre_build_image: true
pre_build_image: false
provisioner:
name: ansible
@@ -4,13 +4,13 @@ driver:
platforms:
- name: ${MOLECULE_PLATFORM_NAME:-ubuntu-2204}
image: ${MOLECULE_PLATFORM_IMAGE:-geerlingguy/docker-ubuntu2204-ansible:latest}
image: ${MOLECULE_PLATFORM_IMAGE:-ubuntu:22.04}
command: ${MOLECULE_PLATFORM_COMMAND:-sleep infinity}
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:rw
cgroupns_mode: host
privileged: true
pre_build_image: true
pre_build_image: false
provisioner:
name: ansible
@@ -4,13 +4,13 @@ driver:
platforms:
- name: ${MOLECULE_PLATFORM_NAME:-ubuntu-2204}
image: ${MOLECULE_PLATFORM_IMAGE:-geerlingguy/docker-ubuntu2204-ansible:latest}
image: ${MOLECULE_PLATFORM_IMAGE:-ubuntu:22.04}
command: ${MOLECULE_PLATFORM_COMMAND:-sleep infinity}
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:rw
cgroupns_mode: host
privileged: true
pre_build_image: true
pre_build_image: false
provisioner:
name: ansible
@@ -4,13 +4,13 @@ driver:
platforms:
- name: ${MOLECULE_PLATFORM_NAME:-ubuntu-2204}
image: ${MOLECULE_PLATFORM_IMAGE:-geerlingguy/docker-ubuntu2204-ansible:latest}
image: ${MOLECULE_PLATFORM_IMAGE:-ubuntu:22.04}
command: ${MOLECULE_PLATFORM_COMMAND:-sleep infinity}
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:rw
cgroupns_mode: host
privileged: true
pre_build_image: true
pre_build_image: false
provisioner:
name: ansible
@@ -4,13 +4,13 @@ driver:
platforms:
- name: ${MOLECULE_PLATFORM_NAME:-ubuntu-2204}
image: ${MOLECULE_PLATFORM_IMAGE:-geerlingguy/docker-ubuntu2204-ansible:latest}
image: ${MOLECULE_PLATFORM_IMAGE:-ubuntu:22.04}
command: ${MOLECULE_PLATFORM_COMMAND:-sleep infinity}
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:rw
cgroupns_mode: host
privileged: true
pre_build_image: true
pre_build_image: false
provisioner:
name: ansible
@@ -27,6 +27,7 @@
- gnupg
state: present
update_cache: true
cache_valid_time: 0
- name: Add Docker GPG key
ansible.builtin.get_url:
@@ -53,6 +54,7 @@
- docker-compose-plugin
state: present
update_cache: true
cache_valid_time: 0
- name: Install Docker (Arch Linux)
when:
@@ -44,5 +44,12 @@
changed_when: "'already exists' not in register_output.stdout | default('')"
timeout: 60
- name: Restart gitea-runner service after registration
ansible.builtin.systemd:
name: "gitea-runner-docker@{{ runner_name }}"
state: restarted
daemon_reload: true
when: systemd_available.stat.exists | default(false) | bool
- name: Include service setup
ansible.builtin.include_tasks: service.yml
@@ -20,7 +20,7 @@
- name: Verify runner container running (Docker mode)
ansible.builtin.shell: |
docker ps --filter "name=gitea-runner-{{ inventory_hostname }}" --format "{{ '{{.Status}}' }}"
docker ps --filter "name=gitea-runner-{{ runner_name }}" --format "{{ '{{.Status}}' }}"
register: docker_check
changed_when: false
when: runner_mode == 'docker'
@@ -24,3 +24,10 @@
register: register_output
changed_when: "'already exists' not in register_output.stdout | default('')"
timeout: 60
- name: Restart gitea-runner service after registration
ansible.builtin.systemd:
name: "gitea-runner-binary@{{ runner_name }}"
state: restarted
daemon_reload: true
when: systemd_available.stat.exists | default(false) | bool
@@ -3,6 +3,8 @@ log:
runner:
file: "{{ gitea_runner_file }}"
fetch_timeout: 50s
fetch_interval: 2s
container:
label: "{{ gitea_runner_container_label }}"