]> git.immae.eu Git - github/fretlink/ansible-clever.git/blame - tasks/deploy.yml
fix(deploy): fail the task correctly when last deploymt failed
[github/fretlink/ansible-clever.git] / tasks / deploy.yml
CommitLineData
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
PB
33- name: Deploy to Clever-Cloud
34 shell: "clever deploy --force"
70a42250
PB
35 args:
36 chdir: "{{ clever_app_root }}"
c5aed75a
PB
37 environment:
38 CONFIGURATION_FILE: "{{ clever_login_file }}"
39 register: clever_deploy
40 async: 900 # 15 minutes timeout
41 poll: 30
19955c99
PB
42 ignore_errors: true
43 tags:
44 - skip_ansible_lint
45
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
PB
57- name: Deploy to Clever-Cloud
58 shell: "clever deploy --force"
70a42250
PB
59 args:
60 chdir: "{{ clever_app_root }}"
c5aed75a
PB
61 environment:
62 CONFIGURATION_FILE: "{{ clever_login_file }}"
63 when: clever_deploy is failed
64 register: clever_deploy
65 async: 900 # 15 minutes timeout
66 poll: 30
67 ignore_errors: true
7485b189
GD
68 tags:
69 - skip_ansible_lint
f7dd5848 70
c5aed75a
PB
71- name: Return deployment logs
72 debug:
73 var: clever_deploy.stdout
74 when: clever_deploy.stdout is defined
75
76- name: Return deployment errors
77 debug:
78 var: clever_deploy.stderr
79 when:
80 - clever_deploy is failed
81 - clever_deploy.stderr is defined
d7d8a988 82
e4a83de0
GD
83- name: Retrieve clever activity
84 command: clever activity
e9b912b4
PB
85 args:
86 chdir: "{{ clever_app_root }}"
87 environment:
88 CONFIGURATION_FILE: "{{ clever_login_file }}"
89 changed_when: false
90 register: clever_activity_result
91
e4a83de0
GD
92- name: Display clever activity
93 debug:
e9b912b4
PB
94 var: clever_activity_result.stdout_lines
95
e4a83de0
GD
96- name: Get current commit sha
97 command: git show -q --format=format:%H HEAD
e9b912b4
PB
98 args:
99 chdir: "{{ clever_app_root }}"
e4a83de0 100 warn: False
e9b912b4
PB
101 changed_when: false
102 register: current_commit_sha
103
104# ####
105# Expects all configuration to be located in the project's repository.
106# Making a git commit bound to the same *configuration* and *executable* version.
107# ##
108- name: Fail if current commit is not the last deployed one
109 fail:
110 msg: "The clever deployment failed! Please check latest deploy activity logs above."
111 when:
112 - clever_deploy is failed
113 - clever_deploy.stderr is defined
114 - clever_deploy.stderr is search("application is up-to-date")
c48c25c3
PB
115 - |
116 (current_commit_sha.stdout_lines[-1] not in clever_activity_result.stdout_lines[-1])
117 or
118 (clever_activity_valid_deploy_keyword not in clever_activity_result.stdout_lines[-1])
e9b912b4 119
c48c25c3 120- name: Fail on any other deployment errors
2baf1a4a
PB
121 fail:
122 msg: "The clever deployment failed! Please check logs above."
e9b912b4
PB
123 when:
124 - clever_deploy is failed
125 - clever_deploy.stderr is defined
126 - clever_deploy.stderr is not search("application is up-to-date")