--- - name: Ensure work directory exists ansible.builtin.file: path: "{{ gitea_runner_data_dir }}" state: directory owner: "{{ gitea_runner_service_user }}" group: "{{ gitea_runner_service_user }}" mode: "0755" - name: Check if runner registration file exists ansible.builtin.stat: path: "{{ gitea_runner_data_dir }}/.runner" register: gitea_runner_registered - name: Remove stale runner registration file ansible.builtin.file: path: "{{ gitea_runner_data_dir }}/.runner" state: absent when: - gitea_runner_registered.stat.exists - gitea_runner_force_reregister | bool register: gitea_runner_registration_removed - name: Register runner with Gitea ansible.builtin.command: > {{ gitea_runner_binary_path }} register --token {{ registration_token }} --name {{ gitea_runner_name }} --instance {{ gitea_url }} --labels {{ gitea_runner_labels }} --no-interactive args: chdir: "{{ gitea_runner_data_dir }}" become: true become_user: "{{ gitea_runner_service_user }}" environment: XDG_RUNTIME_DIR: "/run/user/{{ gitea_runner_uid | default(0) }}" DBUS_SESSION_BUS_ADDRESS: "unix:path=/run/user/{{ gitea_runner_uid | default(0) }}/bus" DOCKER_HOST: "unix:///run/user/{{ gitea_runner_uid | default(0) }}/docker.sock" when: not gitea_runner_registered.stat.exists or gitea_runner_force_reregister | bool register: gitea_runner_register_output changed_when: >- gitea_runner_register_output.rc == 0 and ('already exists' not in gitea_runner_register_output.stdout | default('')) timeout: 60 # Note: service start is handled by service.yml (included after register.yml # in install_runner.yml). Starting here fails because the systemd unit file # has not been created yet. - name: Restart runner service after (re-)registration ansible.builtin.command: > runuser -u {{ gitea_runner_service_user }} -- env XDG_RUNTIME_DIR=/run/user/{{ gitea_runner_uid }} DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/{{ gitea_runner_uid | default(0) }}/bus systemctl --user restart gitea-runner changed_when: true when: - gitea_runner_systemd_available.stat.exists - gitea_runner_docker_rootless_setup - gitea_runner_register_output is defined - gitea_runner_register_output.rc | default(1) == 0