- name: Configure Drain when: syslog_server is defined or clever_syslog_server is defined command: "{{ ansible_env.HOME }}/{{ clever_user_path }}clever-set-drain.sh" args: chdir: "{{ clever_app_root }}" environment: SYSLOG_UDP_SERVER: "{{ clever_syslog_server | default(syslog_server) }}" CONFIGURATION_FILE: "{{ clever_login_file }}" - name: Configure Domain when: domain is defined or clever_domain is defined command: "{{ ansible_env.HOME }}/{{ clever_user_path }}/clever-set-domain.sh" args: chdir: "{{ clever_app_root }}" environment: DOMAIN: "{{ clever_domain | default(domain) }}" CONFIGURATION_FILE: "{{ clever_login_file }}" - name: Push Environment shell: "clever env import < {{ clever_app_confdir }}/env" args: chdir: "{{ clever_app_root }}" environment: CONFIGURATION_FILE: "{{ clever_login_file }}" changed_when: false #TODO: Improve ssh-key validation - name: Accept Clever-Cloud servers shell: "ssh-keyscan -H push-par-clevercloud-customers.services.clever-cloud.com >> ~/.ssh/known_hosts" tags: - skip_ansible_lint - name: Deploy to Clever-Cloud shell: "clever deploy --force" args: chdir: "{{ clever_app_root }}" environment: CONFIGURATION_FILE: "{{ clever_login_file }}" register: clever_deploy async: 900 # 15 minutes timeout poll: 30 ignore_errors: true tags: - skip_ansible_lint - name: First time push to Clever-Cloud needs a full git clone command: "git fetch --unshallow" args: chdir: "{{ clever_app_root }}" when: - clever_deploy is failed - clever_deploy.stderr is defined - clever_deploy.stderr is search("Failed to read git object") tags: - skip_ansible_lint - name: Deploy to Clever-Cloud shell: "clever deploy --force" args: chdir: "{{ clever_app_root }}" 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: Return deployment logs debug: var: clever_deploy.stdout when: clever_deploy.stdout is defined - name: Return deployment errors debug: var: clever_deploy.stderr when: - clever_deploy is failed - clever_deploy.stderr is defined - name: Retrieve clever activity command: clever activity args: chdir: "{{ clever_app_root }}" environment: CONFIGURATION_FILE: "{{ clever_login_file }}" changed_when: false register: clever_activity_result - name: Display clever activity debug: var: clever_activity_result.stdout_lines - name: Get current commit sha command: git show -q --format=format:%H HEAD args: chdir: "{{ clever_app_root }}" warn: False changed_when: false register: current_commit_sha # #### # Expects all configuration to be located in the project's repository. # Making a git commit bound to the same *configuration* and *executable* version. # ## - name: Fail if current commit is not the last deployed one fail: msg: "The clever deployment failed! Please check latest deploy activity logs above." when: - clever_deploy is failed - clever_deploy.stderr is defined - clever_deploy.stderr is search("application is up-to-date") - clever_activity_valid_deploy_keyword in clever_activity_result.stdout_lines[-1] - current_commit_sha.stdout_lines[-1] in clever_activity_result.stdout_lines[-1] - name: Fail on deployment errors fail: msg: "The clever deployment failed! Please check logs above." when: - clever_deploy is failed - clever_deploy.stderr is defined - clever_deploy.stderr is not search("application is up-to-date")