diff options
author | Paul Bonaud <paul.bonaud@fretlink.com> | 2018-11-21 13:20:56 +0100 |
---|---|---|
committer | Paul Bonaud <paul.bonaud@fretlink.com> | 2019-01-14 11:25:32 +0100 |
commit | c5aed75a0e5732aa6031ce3b1864d5aee3e1b49e (patch) | |
tree | 7aa4f743a3938f00c8a7fe5e7c457e01826a9029 | |
parent | ae84364c02907d17867f2a47cf409ad0a2172af5 (diff) | |
download | ansible-clever-c5aed75a0e5732aa6031ce3b1864d5aee3e1b49e.tar.gz ansible-clever-c5aed75a0e5732aa6031ce3b1864d5aee3e1b49e.tar.zst ansible-clever-c5aed75a0e5732aa6031ce3b1864d5aee3e1b49e.zip |
deploy_task: Update clever CLI tools and use it instead of git push
Updating to latest version of 1.1.1 helps to have a stable `clever
deploy` command.
This commit relies on the output of the command instead of manually
pooling the results with `clever activity` command.
-rw-r--r-- | defaults/main.yml | 2 | ||||
-rwxr-xr-x | files/clever-wait-deploy.sh | 54 | ||||
-rw-r--r-- | tasks/deploy.yml | 59 | ||||
-rw-r--r-- | tasks/setup.yml | 1 |
4 files changed, 34 insertions, 82 deletions
diff --git a/defaults/main.yml b/defaults/main.yml index b1605c6..3e030cb 100644 --- a/defaults/main.yml +++ b/defaults/main.yml | |||
@@ -1,6 +1,6 @@ | |||
1 | --- | 1 | --- |
2 | # defaults file for clever | 2 | # defaults file for clever |
3 | clever_cli_version: 0.9.3 | 3 | clever_cli_version: 1.3.0 |
4 | clever_user_path: .local/bin | 4 | clever_user_path: .local/bin |
5 | clever_app_root: "{{ app_root | default(playbook_dir + '/..') }}" | 5 | clever_app_root: "{{ app_root | default(playbook_dir + '/..') }}" |
6 | clever_app_confdir: "{{ clever_app_root }}/.clever_cloud" | 6 | clever_app_confdir: "{{ clever_app_root }}/.clever_cloud" |
diff --git a/files/clever-wait-deploy.sh b/files/clever-wait-deploy.sh deleted file mode 100755 index b911069..0000000 --- a/files/clever-wait-deploy.sh +++ /dev/null | |||
@@ -1,54 +0,0 @@ | |||
1 | #!/bin/bash -e | ||
2 | |||
3 | function deploying { | ||
4 | checkStatus "$1" "IN PROGRESS" | ||
5 | } | ||
6 | |||
7 | function deployed { | ||
8 | checkStatus "$1" "OK" | ||
9 | } | ||
10 | |||
11 | function inactive { | ||
12 | local commit="$1" | ||
13 | [[ "$(clever activity | grep "$commit" | grep "DEPLOY" | wc -l)" == "0" ]] | ||
14 | } | ||
15 | |||
16 | function checkStatus { | ||
17 | local commit="$1" | ||
18 | local status="$2" | ||
19 | [[ "$(clever activity | grep "$commit" | grep "${status}\s\+DEPLOY" | wc -l)" == "1" ]] | ||
20 | } | ||
21 | |||
22 | function check { | ||
23 | local timeout=600 # 10 minutes | ||
24 | local commit="$1" | ||
25 | local samplingTime=5 | ||
26 | |||
27 | echo "Waiting for deployment start..." | ||
28 | while inactive "$commit" -a $timeout -gt 0 | ||
29 | do | ||
30 | sleep $samplingTime | ||
31 | let "timeout-=$samplingTime" | ||
32 | done | ||
33 | |||
34 | # Wait for completion | ||
35 | echo "Deployment in progress..." | ||
36 | while deploying "$commit" -a $timeout -gt 0 | ||
37 | do | ||
38 | sleep $samplingTime | ||
39 | let "timeout-=$samplingTime" | ||
40 | done | ||
41 | |||
42 | if [ $samplingTime -eq 0 ] | ||
43 | then | ||
44 | echo "Timeout" | ||
45 | fi | ||
46 | |||
47 | deployed "$commit" | ||
48 | } | ||
49 | |||
50 | function getHeadRev { | ||
51 | git rev-parse HEAD | ||
52 | } | ||
53 | |||
54 | check "$(getHeadRev)" | ||
diff --git a/tasks/deploy.yml b/tasks/deploy.yml index ae7e5f6..09cf10e 100644 --- a/tasks/deploy.yml +++ b/tasks/deploy.yml | |||
@@ -30,11 +30,15 @@ | |||
30 | tags: | 30 | tags: |
31 | - skip_ansible_lint | 31 | - skip_ansible_lint |
32 | 32 | ||
33 | - name: Push to Clever-Cloud to trigger deployment | 33 | - name: Deploy to Clever-Cloud |
34 | command: "git push --force git+ssh://git@push-par-clevercloud-customers.services.clever-cloud.com/{{ clever_app }}.git HEAD:refs/heads/master" | 34 | shell: "clever deploy --force" |
35 | args: | 35 | args: |
36 | chdir: "{{ clever_app_root }}" | 36 | chdir: "{{ clever_app_root }}" |
37 | register: clever_git_push | 37 | environment: |
38 | CONFIGURATION_FILE: "{{ clever_login_file }}" | ||
39 | register: clever_deploy | ||
40 | async: 900 # 15 minutes timeout | ||
41 | poll: 30 | ||
38 | ignore_errors: true | 42 | ignore_errors: true |
39 | tags: | 43 | tags: |
40 | - skip_ansible_lint | 44 | - skip_ansible_lint |
@@ -44,35 +48,38 @@ | |||
44 | args: | 48 | args: |
45 | chdir: "{{ clever_app_root }}" | 49 | chdir: "{{ clever_app_root }}" |
46 | when: | 50 | when: |
47 | - clever_git_push is failed | 51 | - clever_deploy is failed |
48 | - clever_git_push.stderr is search("shallow update not allowed") | 52 | - clever_deploy.stderr is defined |
53 | - clever_deploy.stderr is search("Failed to read git object") | ||
49 | tags: | 54 | tags: |
50 | - skip_ansible_lint | 55 | - skip_ansible_lint |
51 | 56 | ||
52 | - name: Push to Clever-Cloud to trigger deployment | 57 | - name: Deploy to Clever-Cloud |
53 | command: "git push --force git+ssh://git@push-par-clevercloud-customers.services.clever-cloud.com/{{ clever_app }}.git HEAD:refs/heads/master" | 58 | shell: "clever deploy --force" |
54 | args: | 59 | args: |
55 | chdir: "{{ clever_app_root }}" | 60 | chdir: "{{ clever_app_root }}" |
56 | when: clever_git_push is failed | 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 | ||
57 | tags: | 68 | tags: |
58 | - skip_ansible_lint | 69 | - skip_ansible_lint |
59 | 70 | ||
60 | - name: Watch deployment status | 71 | - name: Return deployment logs |
61 | command: "clever-wait-deploy.sh" | 72 | debug: |
62 | args: | 73 | var: clever_deploy.stdout |
63 | chdir: "{{ clever_app_root }}" | 74 | when: clever_deploy.stdout is defined |
64 | async: 900 | 75 | |
65 | poll: 0 | 76 | - name: Return deployment errors |
66 | register: long_command | 77 | debug: |
67 | environment: | 78 | var: clever_deploy.stderr |
68 | CONFIGURATION_FILE: "{{ clever_login_file }}" | 79 | when: |
69 | changed_when: False | 80 | - clever_deploy is failed |
81 | - clever_deploy.stderr is defined | ||
70 | 82 | ||
71 | # Waits up to 15 minutes | 83 | - name: Fail on deployment errors |
72 | - name: Wait for deployment completion | 84 | fail: "The clever deployment failed! Please check logs above." |
73 | async_status: | 85 | when: clever_deploy is failed |
74 | jid: "{{ long_command.ansible_job_id }}" | ||
75 | register: job_result | ||
76 | until: job_result.finished | ||
77 | delay: 30 | ||
78 | retries: 30 | ||
diff --git a/tasks/setup.yml b/tasks/setup.yml index f85a635..33b1ff6 100644 --- a/tasks/setup.yml +++ b/tasks/setup.yml | |||
@@ -26,4 +26,3 @@ | |||
26 | with_items: | 26 | with_items: |
27 | - clever-set-domain.sh | 27 | - clever-set-domain.sh |
28 | - clever-set-drain.sh | 28 | - clever-set-drain.sh |
29 | - clever-wait-deploy.sh | ||