From 03b8b295844a49e73e20573ff12476ded38bb404 Mon Sep 17 00:00:00 2001 From: Paul Bonaud Date: Wed, 21 Nov 2018 13:20:56 +0100 Subject: 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. --- defaults/main.yml | 2 +- files/clever-wait-deploy.sh | 56 --------------------------------------------- tasks/deploy.yml | 54 ++++++++++++++++++++++++------------------- tasks/setup.yml | 1 - 4 files changed, 31 insertions(+), 82 deletions(-) delete mode 100755 files/clever-wait-deploy.sh 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 @@ --- # defaults file for clever -clever_cli_version: 0.9.3 +clever_cli_version: 1.1.1 clever_user_path: .local/bin clever_app_root: "{{ app_root | default(playbook_dir + '/..') }}" 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 e0bbcf1..0000000 --- a/files/clever-wait-deploy.sh +++ /dev/null @@ -1,56 +0,0 @@ -#!/bin/bash -e - -function deploying { - checkStatus "$1" "IN PROGRESS" -} - -function deployed { - checkStatus "$1" "OK" -} - -function inactive { - local commit="$1" - [[ "$(clever activity | grep "$commit" | grep "DEPLOY" | wc -l)" == "0" ]] -} - -function checkStatus { - local commit="$1" - local status="$2" - [[ "$(clever activity | grep "$commit" | grep "${status}\s\+DEPLOY" | wc -l)" == "1" ]] -} - -function check { - local timeout=600 # 10 minutes - local commit="$1" - local samplingTime=5 - - echo "Waiting for deployment start..." - while inactive "$commit" -a $timeout -gt 0 - do - sleep $samplingTime - let "timeout-=$samplingTime" - done - - # Wait for completion - echo "Deployment in progress..." - while deploying "$commit" -a $timeout -gt 0 - do - sleep $samplingTime - let "timeout-=$samplingTime" - done - - if [ $samplingTime -eq 0 ] - then - echo "Timeout" - fi - - deployed "$commit" -} - -function getHeadRev { - local chdir="$1/.git" - - git --git-dir="$chdir" rev-parse HEAD -} - -check "$(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 @@ tags: - skip_ansible_lint -- name: Push to Clever-Cloud to trigger deployment - command: "git push --force git+ssh://git@push-par-clevercloud-customers.services.clever-cloud.com/{{ clever_app }}.git HEAD:refs/heads/master" +- name: Deploy to Clever-Cloud + shell: "clever deploy" args: chdir: "{{ clever_app_root }}" - register: clever_git_push + environment: + CONFIGURATION_FILE: "{{ clever_login_file }}" + register: clever_deploy + async: 900 # 15 minutes timeout + poll: 30 ignore_errors: true tags: - skip_ansible_lint @@ -38,33 +42,35 @@ args: chdir: "{{ clever_app_root }}" when: - - clever_git_push is failed - - clever_git_push.stderr is search("shallow update not allowed") + - clever_deploy is failed + - clever_deploy.stderr is search("Failed to read git object") tags: - skip_ansible_lint -- name: Push to Clever-Cloud to trigger deployment - command: "git push --force git+ssh://git@push-par-clevercloud-customers.services.clever-cloud.com/{{ clever_app }}.git HEAD:refs/heads/master" +- name: Deploy to Clever-Cloud + shell: "clever deploy" args: chdir: "{{ clever_app_root }}" - when: clever_git_push is failed + environment: + CONFIGURATION_FILE: "{{ clever_login_file }}" + when: clever_deploy is failed + register: clever_deploy + async: 900 # 15 minutes timeout + poll: 30 + ignore_errors: true tags: - skip_ansible_lint -- name: Watch deployment status - command: "clever-wait-deploy.sh '{{ clever_app_root }}'" - async: 900 - poll: 0 - register: long_command - environment: - CONFIGURATION_FILE: "{{ clever_login_file }}" - changed_when: False +- name: Return deployment logs + debug: + var: clever_deploy.stdout + +- name: Return deployment errors + debug: + var: clever_deploy.stderr + when: clever_deploy is failed -# Waits up to 15 minutes -- name: Wait for deployment completion - async_status: - jid: "{{ long_command.ansible_job_id }}" - register: job_result - until: job_result.finished - delay: 30 - retries: 30 +- name: Fail on deployment errors + fail: + msg: "The clever deployment failed! Please check logs above." + when: clever_deploy is failed 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 @@ with_items: - clever-set-domain.sh - clever-set-drain.sh - - clever-wait-deploy.sh -- cgit v1.2.3