diff --git a/.github/workflows/ansible_sanity_testing.yml b/.github/workflows/ansible_sanity_testing.yml new file mode 100644 index 0000000..a6c89cb --- /dev/null +++ b/.github/workflows/ansible_sanity_testing.yml @@ -0,0 +1,133 @@ +--- +name: Sanity tests +on: + workflow_call: + inputs: + collection_pre_install: + required: false + type: string + default: "" + matrix_exclude: +# https://docs.ansible.com/ansible/latest/reference_appendices/release_and_maintenance.html#ansible-core-support-matrix +# 2.14 supports Python 3.9-3.11 +# 2.15 supports Python 3.9-3.11 +# 2.16 supports Python 3.10-3.12 +# https://docs.ansible.com/ansible/devel/roadmap/ROADMAP_2_17.html +# milestone is 2.17 until after 2.17 branches from devel +# devel is 2.17 until 2024-04-01 +# remove 3.12/milestone from matrix_exclude when milestone is next forwarded + default: >- + [ + { + "ansible-version": "stable-2.14", + "python-version": "3.12" + }, + { + "ansible-version": "stable-2.15", + "python-version": "3.12" + }, + { + "ansible-version": "stable-2.16", + "python-version": "3.9" + }, + { + "ansible-version": "milestone", + "python-version": "3.9" + }, + { + "ansible-version": "milestone", + "python-version": "3.12" + }, + { + "ansible-version": "devel", + "python-version": "3.9" + } + ] + required: false + type: string + matrix_include: + default: >- + [] + required: false + type: string + unstable: + default: >- + [ + "devel", + ] + required: false + type: string + +jobs: + sanity: + env: + PY_COLORS: "1" + source_directory: "./source" + strategy: + fail-fast: false + matrix: + os: + - ubuntu-latest + ansible-version: + - stable-2.14 + - stable-2.15 + - stable-2.16 + - milestone + - devel + python-version: + - "3.9" + - "3.10" + - "3.11" + - "3.12" + exclude: ${{ fromJSON(inputs.matrix_exclude) }} + include: ${{ fromJSON(inputs.matrix_include) }} + runs-on: ${{ matrix.os }} + continue-on-error: ${{ contains(fromJSON(inputs.unstable), matrix.ansible-version) }} + + name: "py${{ matrix.python-version }} / ${{ matrix.os }} / ${{ matrix.ansible-version }}" + steps: + - name: Checkout the collection repository + uses: ansible-network/github_actions/.github/actions/checkout_dependency@main + with: + path: ${{ env.source_directory }} + ref: ${{ github.event.pull_request.head.sha }} + fetch-depth: "0" + + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + + - name: Install ansible-core (${{ matrix.ansible-version }}) + run: >- + python3 -m pip install https://github.com/ansible/ansible/archive/${{ matrix.ansible-version }}.tar.gz + --disable-pip-version-check + + - name: Pre install collections dependencies first so the collection install does not + run: ansible-galaxy collection install --pre ${{ inputs.collection_pre_install }} -p /home/runner/collections/ + if: ${{ inputs.collection_pre_install != '' && matrix.ansible-version != 'stable-2.9' }} + + - name: Read collection metadata from galaxy.yml + id: identify + uses: ansible-network/github_actions/.github/actions/identify_collection@main + with: + source_path: ${{ env.source_directory }} + + - name: Build and install the collection + uses: ansible-network/github_actions/.github/actions/build_install_collection@main + with: + install_python_dependencies: false + source_path: ${{ env.source_directory }} + collection_path: ${{ steps.identify.outputs.collection_path }} + tar_file: ${{ steps.identify.outputs.tar_file }} + ansible_version: ${{ matrix.ansible-version }} + + - name: Print the ansible version + run: ansible --version + + - name: Print the python dependencies + run: python3 -m pip list + + - name: Run sanity tests + run: ansible-test sanity --requirements --color --python ${{ matrix.python-version }} + working-directory: ${{ steps.identify.outputs.collection_path }} diff --git a/.mega-linter.yml b/.mega-linter.yml index f308dcd..1f2bd29 100644 --- a/.mega-linter.yml +++ b/.mega-linter.yml @@ -17,4 +17,3 @@ DISABLE_LINTERS: DISABLE_ERRORS_LINTERS: - REPOSITORY_DEVSKIM - REPOSITORY_KICS - - RST_RST_LINT diff --git a/README.md b/README.md index 8027ea4..47f79ba 100644 --- a/README.md +++ b/README.md @@ -3,8 +3,8 @@