--- - name: Check if Gitea admin API is accessible ansible.builtin.uri: url: "{{ gitea_url }}/api/v1/admin/runners" headers: Authorization: "token {{ gitea_admin_token | default(registration_token) }}" method: GET status_code: [200, 401, 403, 404] return_content: false register: api_check ignore_errors: true when: gitea_url is defined and (gitea_admin_token is defined or registration_token is defined) - name: Wait for runner to appear in Gitea API ansible.builtin.uri: url: "{{ gitea_url }}/api/v1/admin/runners" headers: Authorization: "token {{ gitea_admin_token | default(registration_token) }}" method: GET status_code: 200 return_content: true body_format: json register: runners_response until: > runners_response.json.runners | default([]) | selectattr('name', 'equalto', runner_name) | list | length > 0 retries: 12 delay: 10 when: - gitea_url is defined - (gitea_admin_token is defined or registration_token is defined) - api_check.status | default(0) == 200 - name: Verify runner is online ansible.builtin.uri: url: "{{ gitea_url }}/api/v1/admin/runners" headers: Authorization: "token {{ gitea_admin_token | default(registration_token) }}" method: GET status_code: 200 return_content: true body_format: json register: runners_check when: - gitea_url is defined - (gitea_admin_token is defined or registration_token is defined) - api_check.status | default(0) == 200 - name: Fail if runner is not online ansible.builtin.fail: msg: "Runner '{{ runner_name }}' is not online in Gitea" when: - gitea_url is defined - (gitea_admin_token is defined or registration_token is defined) - api_check.status | default(0) == 200 - > runners_check.json.runners | default([]) | selectattr('name', 'equalto', runner_name) | selectattr('status', 'equalto', 'online') | list | length == 0