From 8fa29a95222ec163f0db43c7332cae7fbf76b356 Mon Sep 17 00:00:00 2001 From: Thomas Woerner <twoerner@redhat.com> Date: Tue, 11 Jan 2022 13:58:25 +0100 Subject: [PATCH] Enable ansible-test in github workflow This test is using the galaxy_importer from ansible project. The configuration file galaxy-importer.cfg is copied from linux-system-roles https://github.com/linux-system-roles/auto-maintenance/blob/master/\ lsr_role2collection/galaxy-importer.cfg The tests script has extra code to parse the output of the importer to highlight errors and to exit with a proper error code. The test can be used locally also with "sh tests/sanity/sanity.sh" New files: - .github/workflows/ansible-test.yml - tests/sanity/galaxy-importer.cfg - tests/sanity/sanity.sh --- .github/workflows/ansible-test.yml | 17 ++++++++++++++ tests/sanity/galaxy-importer.cfg | 5 +++++ tests/sanity/ignore-2.12.txt | 1 + tests/sanity/sanity.sh | 36 ++++++++++++++++++++++++++++++ 4 files changed, 59 insertions(+) create mode 100644 .github/workflows/ansible-test.yml create mode 100644 tests/sanity/galaxy-importer.cfg create mode 100644 tests/sanity/sanity.sh diff --git a/.github/workflows/ansible-test.yml b/.github/workflows/ansible-test.yml new file mode 100644 index 00000000..e1fdf1de --- /dev/null +++ b/.github/workflows/ansible-test.yml @@ -0,0 +1,17 @@ +--- +name: ansible-test sanity +on: + - push + - pull_request +jobs: + ansible_test: + name: Verify ansible-test sanity + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + - name: Install virtualenv using pip + run: pip install virtualenv + - name: Run ansible-test + run: bash tests/sanity/sanity.sh diff --git a/tests/sanity/galaxy-importer.cfg b/tests/sanity/galaxy-importer.cfg new file mode 100644 index 00000000..fae700c2 --- /dev/null +++ b/tests/sanity/galaxy-importer.cfg @@ -0,0 +1,5 @@ +[galaxy-importer] +RUN_ANSIBLE_TEST = True +RUN_ANSIBLE_LINT = True +ANSIBLE_TEST_LOCAL_IMAGE = True +LOCAL_IMAGE_DOCKER = True diff --git a/tests/sanity/ignore-2.12.txt b/tests/sanity/ignore-2.12.txt index f1c75405..ff9c9de0 100644 --- a/tests/sanity/ignore-2.12.txt +++ b/tests/sanity/ignore-2.12.txt @@ -35,6 +35,7 @@ roles/ipaserver/library/ipaserver_test.py pylint:ansible-format-automatic-specif roles/ipareplica/module_utils/ansible_ipa_replica.py pylint:ansible-format-automatic-specification tests/external-signed-ca-with-automatic-copy/external-ca.sh shebang!skip tests/pytests/conftest.py pylint:ansible-format-automatic-specification +tests/sanity/sanity.sh shebang!skip tests/user/users.sh shebang!skip tests/user/users_absent.sh shebang!skip tests/utils.py pylint:ansible-format-automatic-specification diff --git a/tests/sanity/sanity.sh b/tests/sanity/sanity.sh new file mode 100644 index 00000000..32784414 --- /dev/null +++ b/tests/sanity/sanity.sh @@ -0,0 +1,36 @@ +#!/bin/bash + +VENV=/tmp/ansible-test-venv +ANSIBLE_COLLECTION=freeipa-ansible_freeipa + +virtualenv "$VENV" +# shellcheck disable=SC1091 +source "$VENV"/bin/activate + +python -m pip install --upgrade pip +pip install galaxy_importer + +rm -f "$ANSIBLE_COLLECTION"-*.tar.gz +rm -f importer_result.json + +utils/build-galaxy-release.sh + +export GALAXY_IMPORTER_CONFIG=tests/sanity/galaxy-importer.cfg + +collection=$(ls -1 "$ANSIBLE_COLLECTION"-*.tar.gz) +echo "Running: python -m galaxy_importer.main $collection" + +error=0 +while read -r line; +do + if [[ $line == ERROR* ]]; then + ((error++)) + echo -e "\033[31;1m${line}\033[0m" + else + echo "$line" + fi +done < <(python -m galaxy_importer.main "$collection") + +rm -rf "$VENV" + +exit "$error" -- GitLab