]> git.immae.eu Git - github/fretlink/ansible-clever.git/blame - tasks/deploy.yml
deploy: revert back to git push + polling
[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 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
91 delay: 30
92 retries: 80 # 40 minutes (80 * 30 secs delay)
e9b912b4 93
fa045db6
PB
94# Output of waiting script stdout
95- name: Output waiting script logs
96 debug:
97 var: job_result.stdout_lines