|
72 | 72 | dest: "{{ checkout_dir }}"
|
73 | 73 | version: "{{ git_version | default( 'HEAD' ) }}"
|
74 | 74 | force: yes # needed because of submodules to avoid "Local modifications exist in repository"
|
| 75 | + umask: '0022' |
75 | 76 | become: yes
|
76 | 77 | become_user: '{{ builder_username }}'
|
77 | 78 | become_method: 'su'
|
|
98 | 99 | set_fact:
|
99 | 100 | rsync_url: "nosync"
|
100 | 101 |
|
101 |
| -- name: Compute RSYNC URL |
| 102 | +- name: "Compute RSYNC URL (remote)" |
102 | 103 | set_fact:
|
103 | 104 | rsync_url: "{{ rsync_user }}@{{ rsync_server }}:{{ rsync_location }}"
|
104 |
| - when: rsync_server is defined and rsync_location is defined and rsync_user is defined |
| 105 | + when: rsync_location is defined and rsync_server is defined and rsync_user is defined |
| 106 | + |
| 107 | +- name: "Compute RSYNC URL (local)" |
| 108 | + set_fact: |
| 109 | + rsync_url: "{{ rsync_location }}" |
| 110 | + when: rsync_location is defined and rsync_server is undefined and rsync_user is undefined |
105 | 111 |
|
106 | 112 | - name: Deploy yaml config for {{ builder_name }}
|
107 | 113 | template:
|
108 | 114 | dest: "/srv/builder/{{ builder_name }}.yml"
|
109 | 115 | src: builder.yml.j2
|
110 | 116 |
|
111 |
| -- name: Add cron to build {{ builder_name }} |
112 |
| - cron: |
113 |
| - name: "build and deploy {{ builder_name }}" |
114 |
| - job: "/usr/local/bin/build_deploy.py /srv/builder/{{ builder_name }}.yml" |
115 |
| - user: "{{ builder_username }}" |
116 |
| - state: "{% if external_trigger %}absent{% else %}present{% endif %}" |
117 |
| - |
118 |
| -- name: Setup cron email |
119 |
| - cronvar: |
120 |
| - user: "{{ builder_username }}" |
121 |
| - name: MAILTO |
122 |
| - value: "{{ cron_error_email }}" |
123 |
| - when: cron_error_email is defined |
124 |
| - |
125 |
| -# needed to detect package manager (at least) on the other host |
126 |
| -# without cache or if it expired, the play would fail |
127 |
| -- name: Get facts for the other side |
128 |
| - setup: |
129 |
| - delegate_to: "{{ rsync_server }}" |
130 |
| - delegate_facts: True |
131 |
| - when: rsync_url != 'nosync' and rsync_server not in play_hosts |
132 |
| - |
133 |
| -# TODO add ip restriction |
134 |
| -- name: Copy the key on the other side |
135 |
| - authorized_key: |
136 |
| - key: "{{ result.ssh_public_key }}" |
137 |
| - key_options: "{{ sync_ssh_key_options }}" |
138 |
| - user: "{{ rsync_user }}" |
139 |
| - delegate_to: "{{ rsync_server }}" |
140 |
| - when: rsync_url != 'nosync' |
141 |
| - |
142 | 117 | - name: Install Rsync
|
143 | 118 | package:
|
144 | 119 | name: "{{ rsync_package }}"
|
145 | 120 | state: present
|
146 | 121 | when: rsync_url != 'nosync'
|
147 | 122 |
|
148 |
| -- name: Install Rsync on the other side |
149 |
| - package: |
150 |
| - name: "{{ rsync_package }}" |
151 |
| - state: present |
152 |
| - delegate_to: "{{ rsync_server }}" |
153 |
| - when: rsync_url != 'nosync' |
| 123 | +- name: "Schedule build and sync" |
| 124 | + include_tasks: schedule_build_and_sync.yml |
| 125 | + when: ansible_env.container is undefined |
154 | 126 |
|
155 |
| -- name: Create SSH config for rsync sync |
156 |
| - blockinfile: |
157 |
| - path: /srv/builder/.ssh/config |
158 |
| - owner: "{{ builder_username }}" |
159 |
| - group: "{{ builder_username }}" |
160 |
| - block: | |
161 |
| - Match Host {{ rsync_server }} User {{ rsync_user }} |
162 |
| - IdentityFile /srv/builder/.ssh/{{ builder_name }}_id.rsa |
163 |
| - marker: "# {mark} ANSIBLE MANAGED BLOCK {{ builder_name }}" |
164 |
| - create: true |
165 |
| - when: rsync_url != 'nosync' |
| 127 | +- name: "Build now (container)" |
| 128 | + include_tasks: build.yml |
| 129 | + when: ansible_env.container is defined and builder_container_build_now|bool |
166 | 130 |
|
0 commit comments