]>
Commit | Line | Data |
---|---|---|
f7dd5848 | 1 | - name: Configure Drain |
23c0fc8a | 2 | when: syslog_server is defined or clever_syslog_server is defined |
51b4b3fd | 3 | command: "{{ ansible_env.HOME }}/{{ clever_user_path }}/clever-set-drain.sh" |
1dc8c620 PB |
4 | args: |
5 | chdir: "{{ clever_app_root }}" | |
f7dd5848 | 6 | environment: |
23c0fc8a | 7 | SYSLOG_UDP_SERVER: "{{ clever_syslog_server | default(syslog_server) }}" |
f7dd5848 GD |
8 | CONFIGURATION_FILE: "{{ clever_login_file }}" |
9 | ||
10 | - name: Configure Domain | |
1157a45f | 11 | when: domain is defined or clever_domain is defined |
fee73e81 | 12 | command: "{{ ansible_env.HOME }}/{{ clever_user_path }}/clever-set-domain.sh" |
1dc8c620 PB |
13 | args: |
14 | chdir: "{{ clever_app_root }}" | |
f7dd5848 | 15 | environment: |
1157a45f | 16 | DOMAIN: "{{ clever_domain | default(domain) }}" |
f7dd5848 GD |
17 | CONFIGURATION_FILE: "{{ clever_login_file }}" |
18 | ||
19 | - name: Push Environment | |
20 | shell: "clever env import < {{ clever_app_confdir }}/env" | |
1dc8c620 PB |
21 | args: |
22 | chdir: "{{ clever_app_root }}" | |
f7dd5848 GD |
23 | environment: |
24 | CONFIGURATION_FILE: "{{ clever_login_file }}" | |
7485b189 | 25 | changed_when: false |
f7dd5848 GD |
26 | |
27 | #TODO: Improve ssh-key validation | |
28 | - name: Accept Clever-Cloud servers | |
29 | shell: "ssh-keyscan -H push-par-clevercloud-customers.services.clever-cloud.com >> ~/.ssh/known_hosts" | |
7485b189 GD |
30 | tags: |
31 | - skip_ansible_lint | |
f7dd5848 | 32 | |
c5aed75a | 33 | - name: Deploy to Clever-Cloud |
fa045db6 | 34 | command: "git push --force git+ssh://git@push-par-clevercloud-customers.services.clever-cloud.com/{{ clever_app }}.git HEAD:refs/heads/master" |
70a42250 PB |
35 | args: |
36 | chdir: "{{ clever_app_root }}" | |
c5aed75a | 37 | register: clever_deploy |
19955c99 PB |
38 | ignore_errors: true |
39 | tags: | |
40 | - skip_ansible_lint | |
41 | ||
fa045db6 PB |
42 | ################################################################## |
43 | # Re-deploy only if its the first clever deploy for that project # | |
44 | ################################################################## | |
45 | ||
19955c99 PB |
46 | - name: First time push to Clever-Cloud needs a full git clone |
47 | command: "git fetch --unshallow" | |
70a42250 PB |
48 | args: |
49 | chdir: "{{ clever_app_root }}" | |
19955c99 | 50 | when: |
c5aed75a PB |
51 | - clever_deploy is failed |
52 | - clever_deploy.stderr is defined | |
53 | - clever_deploy.stderr is search("Failed to read git object") | |
19955c99 PB |
54 | tags: |
55 | - skip_ansible_lint | |
56 | ||
c5aed75a | 57 | - name: Deploy to Clever-Cloud |
fa045db6 | 58 | command: "git push --force git+ssh://git@push-par-clevercloud-customers.services.clever-cloud.com/{{ clever_app }}.git HEAD:refs/heads/master" |
70a42250 PB |
59 | args: |
60 | chdir: "{{ clever_app_root }}" | |
fa045db6 PB |
61 | when: |
62 | - clever_deploy is failed | |
63 | - clever_deploy.stderr is defined | |
64 | - clever_deploy.stderr is search("Failed to read git object") | |
c5aed75a | 65 | register: clever_deploy |
7485b189 GD |
66 | tags: |
67 | - skip_ansible_lint | |
f7dd5848 | 68 | |
fa045db6 PB |
69 | ############################################################################## |
70 | # Poll deployment status from 'clever activity' command. # | |
71 | # 'clever deploy' command is not yet 100% reliable to get a blocking command # | |
72 | # until the deployment is over. Hence the need for a custom waiting script. # | |
73 | ############################################################################## | |
d7d8a988 | 74 | |
fa045db6 PB |
75 | - name: Watch deployment status |
76 | command: "{{ ansible_env.HOME }}/{{ clever_user_path }}/clever-wait-deploy.sh" | |
e9b912b4 PB |
77 | args: |
78 | chdir: "{{ clever_app_root }}" | |
79 | environment: | |
80 | CONFIGURATION_FILE: "{{ clever_login_file }}" | |
fa045db6 PB |
81 | async: 2400 # 40 minutes |
82 | poll: 0 | |
83 | register: long_command | |
84 | changed_when: False | |
e9b912b4 | 85 | |
fa045db6 PB |
86 | - name: Wait 40 minutes for deployment completion |
87 | async_status: | |
88 | jid: "{{ long_command.ansible_job_id }}" | |
89 | register: job_result | |
90 | until: job_result.finished | |
5da7f0d8 | 91 | ignore_errors: true |
fa045db6 PB |
92 | delay: 30 |
93 | retries: 80 # 40 minutes (80 * 30 secs delay) | |
e9b912b4 | 94 | |
5da7f0d8 | 95 | - name: Waiting script logs (stdout) |
fa045db6 PB |
96 | debug: |
97 | var: job_result.stdout_lines | |
5da7f0d8 PB |
98 | when: job_result.stdout_lines is defined |
99 | ||
100 | - name: Waiting script logs (stderr) | |
101 | debug: | |
102 | var: job_result.stderr_lines | |
103 | when: job_result.stderr_lines is defined | |
104 | ||
105 | - name: Fail in case of timeout or failure | |
106 | fail: | |
107 | msg: "Deployment failed. Please check logs above." | |
108 | when: not job_result.finished or not job_result.rc == 0 |