1 - name: Configure Drain
2 when: syslog_server is defined or clever_syslog_server is defined
3 command: "{{ ansible_env.HOME }}/{{ clever_user_path }}/clever-set-drain.sh"
5 chdir: "{{ clever_app_root }}"
7 SYSLOG_UDP_SERVER: "{{ clever_syslog_server | default(syslog_server) }}"
8 CONFIGURATION_FILE: "{{ clever_login_file }}"
10 - name: Configure Domain
11 when: domain is defined or clever_domain is defined
12 command: "{{ ansible_env.HOME }}/{{ clever_user_path }}/clever-set-domain.sh"
14 chdir: "{{ clever_app_root }}"
16 DOMAIN: "{{ clever_domain | default(domain) }}"
17 CONFIGURATION_FILE: "{{ clever_login_file }}"
19 - name: Push Environment
20 shell: "clever env import < {{ clever_app_confdir }}/env"
22 chdir: "{{ clever_app_root }}"
24 CONFIGURATION_FILE: "{{ clever_login_file }}"
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"
33 - name: Deploy to Clever-Cloud
34 shell: "clever deploy --force"
36 chdir: "{{ clever_app_root }}"
38 CONFIGURATION_FILE: "{{ clever_login_file }}"
39 register: clever_deploy
40 async: 900 # 15 minutes timeout
46 - name: First time push to Clever-Cloud needs a full git clone
47 command: "git fetch --unshallow"
49 chdir: "{{ clever_app_root }}"
51 - clever_deploy is failed
52 - clever_deploy.stderr is defined
53 - clever_deploy.stderr is search("Failed to read git object")
57 - name: Deploy to Clever-Cloud
58 shell: "clever deploy --force"
60 chdir: "{{ clever_app_root }}"
62 CONFIGURATION_FILE: "{{ clever_login_file }}"
63 when: clever_deploy is failed
64 register: clever_deploy
65 async: 900 # 15 minutes timeout
71 - name: Return deployment logs
73 var: clever_deploy.stdout
74 when: clever_deploy.stdout is defined
76 - name: Return deployment errors
78 var: clever_deploy.stderr
80 - clever_deploy is failed
81 - clever_deploy.stderr is defined
83 - name: Retrieve clever activity
84 command: clever activity
86 chdir: "{{ clever_app_root }}"
88 CONFIGURATION_FILE: "{{ clever_login_file }}"
90 register: clever_activity_result
92 - name: Display clever activity
94 var: clever_activity_result.stdout_lines
96 - name: Get current commit sha
97 command: git show -q --format=format:%H HEAD
99 chdir: "{{ clever_app_root }}"
102 register: current_commit_sha
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.
108 - name: Fail if current commit is not the last deployed one
110 msg: "The clever deployment failed! Please check latest deploy activity logs above."
112 - clever_deploy is failed
113 - clever_deploy.stderr is defined
114 - clever_deploy.stderr is search("application is up-to-date")
116 (current_commit_sha.stdout_lines[-1] not in clever_activity_result.stdout_lines[-1])
118 (clever_activity_valid_deploy_keyword not in clever_activity_result.stdout_lines[-1])
120 - name: Fail on any other deployment errors
122 msg: "The clever deployment failed! Please check logs above."
124 - clever_deploy is failed
125 - clever_deploy.stderr is defined
126 - clever_deploy.stderr is not search("application is up-to-date")