name: CI concurrency: group: ${{ github.head_ref }} cancel-in-progress: true on: pull_request: types: - opened - reopened - labeled - unlabeled - synchronize branches: - main - stable-* tags: - '*' jobs: changelog: uses: ansible-network/github_actions/.github/workflows/changelog.yml@main linters: uses: abikouo/github_actions/.github/workflows/tox-linters.yml@tox_linters sanity: uses: ansible-network/github_actions/.github/workflows/sanity.yml@main with: matrix_include: "[]" matrix_exclude: >- [ { "ansible-version": "stable-2.9" }, { "ansible-version": "stable-2.12", "python-version": "3.7" }, { "ansible-version": "stable-2.12", "python-version": "3.11" }, { "ansible-version": "stable-2.13", "python-version": "3.7" }, { "ansible-version": "stable-2.13", "python-version": "3.11" }, { "ansible-version": "stable-2.14", "python-version": "3.7" }, { "ansible-version": "stable-2.14", "python-version": "3.8" }, { "ansible-version": "stable-2.14", "python-version": "3.11" }, { "ansible-version": "stable-2.15", "python-version": "3.7" }, { "ansible-version": "stable-2.15", "python-version": "3.8" }, { "ansible-version": "stable-2.15", "python-version": "3.11" }, { "ansible-version": "milestone", "python-version": "3.7" }, { "ansible-version": "milestone", "python-version": "3.8" }, { "ansible-version": "devel", "python-version": "3.7" }, { "ansible-version": "devel", "python-version": "3.8" } ] unit-source: uses: ansible-network/github_actions/.github/workflows/unit_source.yml@main with: matrix_exclude: >- [ { "python-version": "3.11" }, { "ansible-version": "stable-2.12", "python-version": "3.7" }, { "ansible-version": "stable-2.13", "python-version": "3.7" }, { "ansible-version": "stable-2.12", "python-version": "3.8" }, { "ansible-version": "stable-2.13", "python-version": "3.8" }, { "ansible-version": "stable-2.14", "python-version": "3.7" }, { "ansible-version": "stable-2.14", "python-version": "3.8" }, { "ansible-version": "stable-2.15", "python-version": "3.7" }, { "ansible-version": "stable-2.15", "python-version": "3.8" }, { "ansible-version": "milestone", "python-version": "3.7" }, { "ansible-version": "milestone", "python-version": "3.8" }, { "ansible-version": "devel", "python-version": "3.7" }, { "ansible-version": "devel", "python-version": "3.8" } ] collection_pre_install: '' splitter: env: source_dir: "./source" runs-on: ubuntu-latest outputs: test_targets: ${{ steps.display.outputs.test_targets }} steps: - name: Checkout the collection repository uses: actions/checkout@v3 with: path: ${{ env.source_dir }} fetch-depth: "0" - name: list changes for pull request id: splitter uses: ansible-network/github_actions/.github/actions/ansible_test_splitter@main with: collections_to_test: ${{ env.source_dir }} total_jobs: 8 - name: display targets id: display run: echo "test_targets=${{ steps.splitter.outputs.test_targets }}" >> $GITHUB_OUTPUT shell: bash integration: needs: - splitter env: source: "./source" cloud_common: "./cloudcommon" ansible_posix: "./ansible_posix" test_targets: ${{ needs.splitter.outputs.test_targets }} runs-on: ubuntu-latest timeout-minutes: 60 strategy: fail-fast: false matrix: ansible-version: - stable-2.12 - milestone - devel python-version: - "3.8" - "3.9" exclude: - ansible-version: stable-2.9 python-version: 3.9 - ansible-version: stable-2.9 python-version: 3.10 - ansible-version: stable-2.9 python-version: 3.11 - ansible-version: stable-2.12 python-version: 3.11 - ansible-version: stable-2.13 python-version: 3.11 - ansible-version: stable-2.14 python-version: 3.8 - ansible-version: stable-2.15 python-version: 3.8 - ansible-version: milestone python-version: 3.8 - ansible-version: devel python-version: 3.8 enable-turbo-mode: - true - false job-index: [1, 2, 3, 4, 5, 6, 7, 8] name: "integration-py${{ matrix.python-version }}-${{ matrix.ansible-version }}-turbo-mode=${{ matrix.enable-turbo-mode }}-${{ matrix.job-index }}" steps: - name: Read ansible-test targets id: read-targets run: >- echo "ansible_test_targets=$(echo "${{ env.test_targets }}" | sed s/';'/'\n'/g | grep "kubernetes.core-${{ matrix.job-index }}" | cut -d ':' -f2 | sed s/','/' '/g)" >> $GITHUB_OUTPUT shell: bash - name: Display targets run: >- echo "targets to test: $ANSIBLE_TARGETS" shell: bash env: ANSIBLE_TARGETS: ${{ steps.read-targets.outputs.ansible_test_targets }} - name: Checkout kubernetes.core repository uses: actions/checkout@v3 with: path: ${{ env.source }} fetch-depth: "0" if: steps.read-targets.outputs.ansible_test_targets != '' - name: checkout ansible-collections/cloud.common uses: ansible-network/github_actions/.github/actions/checkout_dependency@main with: repository: ansible-collections/cloud.common path: ${{ env.cloud_common }} ref: main if: steps.read-targets.outputs.ansible_test_targets != '' - name: checkout ansible-collections/ansible.posix uses: ansible-network/github_actions/.github/actions/checkout_dependency@main with: repository: ansible-collections/ansible.posix path: ${{ env.ansible_posix }} ref: main if: steps.read-targets.outputs.ansible_test_targets != '' - name: install kubernetes.core collection id: install-collection uses: abikouo/github_actions/.github/actions/build_install_collection@build_install_collection with: install_python_dependencies: true source_path: ${{ env.source }} if: steps.read-targets.outputs.ansible_test_targets != '' - name: install cloud.common collection uses: abikouo/github_actions/.github/actions/build_install_collection@build_install_collection with: install_python_dependencies: true source_path: ${{ env.cloud_common }} if: steps.read-targets.outputs.ansible_test_targets != '' - name: install ansible.posix collection uses: abikouo/github_actions/.github/actions/build_install_collection@build_install_collection with: install_python_dependencies: true source_path: ${{ env.ansible_posix }} if: steps.read-targets.outputs.ansible_test_targets != '' - name: create kubernetes cluster uses: helm/kind-action@v1.4.0 if: steps.read-targets.outputs.ansible_test_targets != '' - name: Run integration tests uses: abikouo/github_actions/.github/actions/ansible_test_integration@ansible_test_integration_a with: collection_path: ${{ steps.install-collection.outputs.collection_path }} python_version: ${{ matrix.python-version }} ansible_version: ${{ matrix.ansible-version }} ansible_test_targets: ${{ steps.read-targets.outputs.ansible_test_targets }} ansible_test_environment: | ENABLE_TURBO_MODE=${{ matrix.enable-turbo-mode }} if: steps.read-targets.outputs.ansible_test_targets != '' all_green: if: ${{ always() }} needs: - changelog - linters - sanity - unit-source - integration runs-on: ubuntu-latest steps: - run: >- python -c "assert set([ '${{ needs.changelog.result }}', '${{ needs.linters.result }}', '${{ needs.unit-source.result }}', '${{ needs.integration.result }}' ]) == {'success'}" - run: >- python -c "assert '${{ needs.sanity.result }}' in ['success', 'failure']"