|
4 | 4 | path: "{{ runner_dir }}"
|
5 | 5 | state: directory
|
6 | 6 | mode: 0755
|
7 |
| - owner: "{{ ansible_facts.getent_passwd[runner_user].1 }}" |
8 |
| - group: "{{ ansible_facts.getent_passwd[runner_user].2 }}" |
9 |
| - |
10 |
| -- name: Find the latest runner version (RUN ONCE) |
11 |
| - ansible.builtin.uri: |
12 |
| - url: "https://api.github.com/repos/{{ runner_download_repository }}/releases/latest" |
13 |
| - headers: |
14 |
| - Content-Type: "application/json" |
15 |
| - method: GET |
16 |
| - return_content: yes |
17 |
| - status_code: 200 |
18 |
| - body_format: json |
19 |
| - check_mode: false |
20 |
| - register: api_response |
21 |
| - run_once: true |
22 |
| - become: false |
23 |
| - delegate_to: localhost |
24 |
| - when: runner_version == "latest" |
| 7 | + owner: "{{ runner_user_id.stdout }}" |
| 8 | + group: "{{ runner_user_group_id.stdout }}" |
25 | 9 |
|
26 | 10 | - name: Set runner_version variable (If latest)
|
27 | 11 | ansible.builtin.set_fact:
|
|
38 | 22 | - name: Unarchive runner package
|
39 | 23 | ansible.builtin.unarchive:
|
40 | 24 | src: "https://github.com/{{ runner_download_repository }}/releases/download/v{{ runner_version }}/\
|
41 |
| - actions-runner-linux-{{ github_actions_architecture }}-{{ runner_version }}.tar.gz" |
| 25 | + actions-runner-{{ runner_system }}-{{ github_actions_architecture }}-{{ runner_version }}.tar.gz" |
42 | 26 | dest: "{{ runner_dir }}/"
|
43 |
| - owner: "{{ ansible_facts.getent_passwd[runner_user].1 }}" |
44 |
| - group: "{{ ansible_facts.getent_passwd[runner_user].2 }}" |
| 27 | + owner: "{{ runner_user_id.stdout }}" |
| 28 | + group: "{{ runner_user_group_id.stdout }}" |
45 | 29 | remote_src: yes
|
46 | 30 | mode: 0755
|
47 |
| - become: true |
| 31 | + environment: |
| 32 | + PATH: /usr/local/bin:/opt/homebrew/bin/:{{ ansible_env.HOME }}/bin:{{ ansible_env.PATH }} |
48 | 33 | when: runner_version not in runner_installed.stdout or reinstall_runner
|
49 | 34 |
|
50 | 35 | - name: Configure custom env file if required
|
|
87 | 72 | {{ runner_extra_config_args }}"
|
88 | 73 | args:
|
89 | 74 | chdir: "{{ runner_dir }}"
|
90 |
| - become: true |
91 | 75 | become_user: "{{ runner_user }}"
|
92 | 76 | no_log: "{{ hide_sensitive_logs | bool }}"
|
93 | 77 | when: runner_name not in registered_runners.json.runners|map(attribute='name')|list
|
|
106 | 90 | --replace"
|
107 | 91 | args:
|
108 | 92 | chdir: "{{ runner_dir }}"
|
109 |
| - become: true |
110 | 93 | become_user: "{{ runner_user }}"
|
111 | 94 | no_log: "{{ hide_sensitive_logs | bool }}"
|
112 | 95 | when: runner_name in registered_runners.json.runners|map(attribute='name')|list and reinstall_runner and not runner_org
|
|
115 | 98 | ansible.builtin.command: "./svc.sh install {{ runner_user }}"
|
116 | 99 | args:
|
117 | 100 | chdir: "{{ runner_dir }}"
|
| 101 | + become: "{{ 'false' if ansible_system == 'Darwin' else 'true' }}" |
118 | 102 | when: not runner_service_file_path.stat.exists
|
119 | 103 |
|
120 | 104 | - name: Read service name from file
|
121 | 105 | ansible.builtin.slurp:
|
122 | 106 | src: "{{ runner_dir }}/.service"
|
123 | 107 | register: runner_service
|
124 | 108 |
|
125 |
| -- name: START and enable Github Actions Runner service |
126 |
| - ansible.builtin.systemd: |
127 |
| - name: "{{ runner_service.content | b64decode | replace('\n', '') }}" |
128 |
| - state: started |
129 |
| - enabled: yes |
| 109 | +- name: START and enable Github Actions Runner service # DOTO: Idempotence works only for Systemd. Need to fix for launchd. |
| 110 | + ansible.builtin.command: "./svc.sh start" |
| 111 | + args: |
| 112 | + chdir: "{{ runner_dir }}" |
| 113 | + become: "{{ 'false' if ansible_system == 'Darwin' else 'true' }}" |
| 114 | + no_log: "{{ hide_sensitive_logs | bool }}" |
130 | 115 | ignore_errors: "{{ ansible_check_mode }}"
|
131 |
| - when: runner_state|lower == "started" |
| 116 | + when: runner_state|lower == "started" and ansible_facts.services[(runner_service.content | b64decode) | trim ]['state'] != 'running' |
132 | 117 |
|
133 | 118 | - name: STOP and disable Github Actions Runner service
|
134 |
| - ansible.builtin.systemd: |
135 |
| - name: "{{ runner_service.content | b64decode | replace('\n', '') }}" |
136 |
| - state: stopped |
137 |
| - enabled: no |
| 119 | + ansible.builtin.shell: "./svc.sh stop" |
| 120 | + args: |
| 121 | + chdir: "{{ runner_dir }}" |
| 122 | + become: "{{ 'false' if ansible_distribution == 'MacOS' else 'true' }}" |
| 123 | + no_log: "{{ hide_sensitive_logs | bool }}" |
138 | 124 | ignore_errors: "{{ ansible_check_mode }}"
|
139 | 125 | when: runner_state|lower == "stopped"
|
140 | 126 |
|
141 | 127 | - name: Version changed - RESTART Github Actions Runner service
|
142 |
| - ansible.builtin.systemd: |
143 |
| - name: "{{ runner_service.content | b64decode | replace('\n', '') }}" |
144 |
| - state: restarted |
| 128 | + ansible.builtin.shell: |
| 129 | + cmd: | |
| 130 | + ./svc.sh stop |
| 131 | + sleep 5 |
| 132 | + ./svc.sh start |
| 133 | + args: |
| 134 | + chdir: "{{ runner_dir }}" |
| 135 | + become: "{{ 'false' if ansible_system == 'Darwin' else 'true' }}" |
| 136 | + no_log: "{{ hide_sensitive_logs | bool }}" |
145 | 137 | ignore_errors: "{{ ansible_check_mode }}"
|
146 | 138 | when: runner_version not in runner_installed.stdout and not runner_state|lower == "stopped"
|
0 commit comments