aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorPaul Bonaud <paul.bonaud@fretlink.com>2018-11-21 13:20:56 +0100
committerPaul Bonaud <paul.bonaud@fretlink.com>2018-11-30 14:45:10 +0100
commit03b8b295844a49e73e20573ff12476ded38bb404 (patch)
treeb25e89a0fddc746491c6ae4fa3adbc1b937d8b7c
parente3f725a16f48d303ddbd8afed0bcdd50c923b33f (diff)
downloadansible-clever-03b8b295844a49e73e20573ff12476ded38bb404.tar.gz
ansible-clever-03b8b295844a49e73e20573ff12476ded38bb404.tar.zst
ansible-clever-03b8b295844a49e73e20573ff12476ded38bb404.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.yml2
-rwxr-xr-xfiles/clever-wait-deploy.sh56
-rw-r--r--tasks/deploy.yml54
-rw-r--r--tasks/setup.yml1
4 files changed, 31 insertions, 82 deletions
diff --git a/defaults/main.yml b/defaults/main.yml
index fb0e30f..9e98511 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
3clever_cli_version: 0.9.3 3clever_cli_version: 1.1.1
4clever_user_path: .local/bin 4clever_user_path: .local/bin
5clever_app_root: "{{ app_root | default(playbook_dir + '/..') }}" 5clever_app_root: "{{ app_root | default(playbook_dir + '/..') }}"
6clever_app_confdir: "{{ clever_app_root }}/.clever_cloud" 6clever_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 e0bbcf1..0000000
--- a/files/clever-wait-deploy.sh
+++ /dev/null
@@ -1,56 +0,0 @@
1#!/bin/bash -e
2
3function deploying {
4 checkStatus "$1" "IN PROGRESS"
5}
6
7function deployed {
8 checkStatus "$1" "OK"
9}
10
11function inactive {
12 local commit="$1"
13 [[ "$(clever activity | grep "$commit" | grep "DEPLOY" | wc -l)" == "0" ]]
14}
15
16function checkStatus {
17 local commit="$1"
18 local status="$2"
19 [[ "$(clever activity | grep "$commit" | grep "${status}\s\+DEPLOY" | wc -l)" == "1" ]]
20}
21
22function 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
50function getHeadRev {
51 local chdir="$1/.git"
52
53 git --git-dir="$chdir" rev-parse HEAD
54}
55
56check "$(getHeadRev "$@")"
diff --git a/tasks/deploy.yml b/tasks/deploy.yml
index 84ebe73..cc15050 100644
--- a/tasks/deploy.yml
+++ b/tasks/deploy.yml
@@ -24,11 +24,15 @@
24 tags: 24 tags:
25 - skip_ansible_lint 25 - skip_ansible_lint
26 26
27- name: Push to Clever-Cloud to trigger deployment 27- name: Deploy to Clever-Cloud
28 command: "git push --force git+ssh://git@push-par-clevercloud-customers.services.clever-cloud.com/{{ clever_app }}.git HEAD:refs/heads/master" 28 shell: "clever deploy"
29 args: 29 args:
30 chdir: "{{ clever_app_root }}" 30 chdir: "{{ clever_app_root }}"
31 register: clever_git_push 31 environment:
32 CONFIGURATION_FILE: "{{ clever_login_file }}"
33 register: clever_deploy
34 async: 900 # 15 minutes timeout
35 poll: 30
32 ignore_errors: true 36 ignore_errors: true
33 tags: 37 tags:
34 - skip_ansible_lint 38 - skip_ansible_lint
@@ -38,33 +42,35 @@
38 args: 42 args:
39 chdir: "{{ clever_app_root }}" 43 chdir: "{{ clever_app_root }}"
40 when: 44 when:
41 - clever_git_push is failed 45 - clever_deploy is failed
42 - clever_git_push.stderr is search("shallow update not allowed") 46 - clever_deploy.stderr is search("Failed to read git object")
43 tags: 47 tags:
44 - skip_ansible_lint 48 - skip_ansible_lint
45 49
46- name: Push to Clever-Cloud to trigger deployment 50- name: Deploy to Clever-Cloud
47 command: "git push --force git+ssh://git@push-par-clevercloud-customers.services.clever-cloud.com/{{ clever_app }}.git HEAD:refs/heads/master" 51 shell: "clever deploy"
48 args: 52 args:
49 chdir: "{{ clever_app_root }}" 53 chdir: "{{ clever_app_root }}"
50 when: clever_git_push is failed 54 environment:
55 CONFIGURATION_FILE: "{{ clever_login_file }}"
56 when: clever_deploy is failed
57 register: clever_deploy
58 async: 900 # 15 minutes timeout
59 poll: 30
60 ignore_errors: true
51 tags: 61 tags:
52 - skip_ansible_lint 62 - skip_ansible_lint
53 63
54- name: Watch deployment status 64- name: Return deployment logs
55 command: "clever-wait-deploy.sh '{{ clever_app_root }}'" 65 debug:
56 async: 900 66 var: clever_deploy.stdout
57 poll: 0 67
58 register: long_command 68- name: Return deployment errors
59 environment: 69 debug:
60 CONFIGURATION_FILE: "{{ clever_login_file }}" 70 var: clever_deploy.stderr
61 changed_when: False 71 when: clever_deploy is failed
62 72
63# Waits up to 15 minutes 73- name: Fail on deployment errors
64- name: Wait for deployment completion 74 fail:
65 async_status: 75 msg: "The clever deployment failed! Please check logs above."
66 jid: "{{ long_command.ansible_job_id }}" 76 when: clever_deploy is failed
67 register: job_result
68 until: job_result.finished
69 delay: 30
70 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