From 7ed7b27bc48ec8411b7c833dbc9c393cc10d7cad Mon Sep 17 00:00:00 2001 From: Mark Goddard <mark@stackhpc.com> Date: Thu, 4 Jul 2019 11:57:17 +0100 Subject: [PATCH] Add retries to ansible galaxy install for all envs Galaxy install often fails in CI, scuppering an otherwise good run. Change-Id: I3d02afe33cdf32b1d285bd4bdc4a8074883113ca --- dev/functions | 2 +- tools/ansible-galaxy-retried.sh | 15 +++++++++++++++ tox.ini | 6 +++--- 3 files changed, 19 insertions(+), 4 deletions(-) create mode 100755 tools/ansible-galaxy-retried.sh diff --git a/dev/functions b/dev/functions index f9ee17d5..286874f7 100644 --- a/dev/functions +++ b/dev/functions @@ -473,7 +473,7 @@ function tenks_deploy { install_venv "${TENKS_VENV_PATH}" "$tenks_path" source ${TENKS_VENV_PATH:-$HOME/tenks-test-venv}/bin/activate - ansible-galaxy install \ + ${KAYOBE_SOURCE_PATH}/tools/ansible-galaxy-retried.sh install \ --role-file="$tenks_path/requirements.yml" \ --roles-path="$tenks_path/ansible/roles/" diff --git a/tools/ansible-galaxy-retried.sh b/tools/ansible-galaxy-retried.sh new file mode 100755 index 00000000..4082f98e --- /dev/null +++ b/tools/ansible-galaxy-retried.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +set -e + +GALAXY_RETRIES=${GALAXY_RETRIES:-3} + +for i in $(seq 1 $GALAXY_RETRIES); do + if ansible-galaxy "${@}"; then + exit 0 + fi + echo "Ansible Galaxy command failed. Retrying" +done + +echo "Failed to execute: ansible-galaxy ${@}" +exit 1 diff --git a/tox.ini b/tox.ini index 3c4a3bd7..0519802d 100644 --- a/tox.ini +++ b/tox.ini @@ -51,7 +51,7 @@ usedevelop = True sitepackages = True commands = # Install ansible role dependencies from Galaxy. - ansible-galaxy install \ + {toxinidir}/tools/ansible-galaxy-retried.sh install \ -r {toxinidir}/requirements.yml \ -p {toxinidir}/ansible/roles {toxinidir}/tools/test-ansible.sh {posargs} @@ -67,7 +67,7 @@ whitelist_externals = bash commands = # Install ansible role dependencies from Galaxy. - ansible-galaxy install \ + {toxinidir}/tools/ansible-galaxy-retried.sh install \ -r {toxinidir}/requirements.yml \ -p {toxinidir}/ansible/roles bash -c "source {envdir}/bin/activate && {toxinidir}/tools/test-molecule.sh {posargs}" @@ -80,7 +80,7 @@ commands = ansible-lint ansible/*.yaml basepython = python3 commands = # Install ansible role dependencies from Galaxy. - ansible-galaxy install \ + {toxinidir}/tools/ansible-galaxy-retried.sh install \ -r {toxinidir}/requirements.yml \ -p {toxinidir}/ansible/roles # Perform an Ansible syntax check. Skip some playbooks which require extra -- GitLab