diff --git a/.azure-pipelines/azure-pipelines.yml b/.azure-pipelines/azure-pipelines.yml index c7794fb1..84c8cd91 100644 --- a/.azure-pipelines/azure-pipelines.yml +++ b/.azure-pipelines/azure-pipelines.yml @@ -71,39 +71,6 @@ stages: test: '2.12/sanity/1' - name: Units test: '2.12/units/1' - - stage: Ansible_2_11 - displayName: Sanity & Units 2.11 - dependsOn: [] - jobs: - - template: templates/matrix.yml - parameters: - targets: - - name: Sanity - test: '2.11/sanity/1' - - name: Units - test: '2.11/units/1' - - stage: Ansible_2_10 - displayName: Sanity & Units 2.10 - dependsOn: [] - jobs: - - template: templates/matrix.yml - parameters: - targets: - - name: Sanity - test: '2.10/sanity/1' - - name: Units - test: '2.10/units/1' - - stage: Ansible_2_9 - displayName: Sanity & Units 2.9 - dependsOn: [] - jobs: - - template: templates/matrix.yml - parameters: - targets: - - name: Sanity - test: '2.9/sanity/1' - - name: Units - test: '2.9/units/1' ### Docker - stage: Docker_2_13 displayName: Docker 2.13 @@ -143,36 +110,6 @@ stages: test: opensuse15 - name: Ubuntu 20.04 test: ubuntu2004 - - stage: Docker_2_11 - displayName: Docker 2.11 - dependsOn: [] - jobs: - - template: templates/matrix.yml - parameters: - testFormat: 2.11/linux/{0}/1 - targets: - - name: CentOS 7 - test: centos7 - - name: Fedora 32 - test: fedora32 - - name: openSUSE 15 py2 - test: opensuse15py2 - - name: Ubuntu 18.04 - test: ubuntu1804 - - stage: Docker_2_10 - displayName: Docker 2.10 - dependsOn: [] - jobs: - - template: templates/matrix.yml - parameters: - testFormat: 2.10/linux/{0}/1 - targets: - - name: CentOS 6 - test: centos6 - - name: Fedora 31 - test: fedora31 - - name: Ubuntu 16.04 - test: ubuntu1604 - stage: Docker_2_9 displayName: Docker 2.9 dependsOn: [] @@ -219,48 +156,12 @@ stages: parameters: testFormat: 2.12/{0}/1 targets: - # - name: macOS 11.1 - # test: macos/11.1 + - name: macOS 11.1 + test: macos/11.1 - name: RHEL 8.4 test: rhel/8.4 - name: FreeBSD 13.0 test: freebsd/13.0 - - stage: Remote_2_11 - displayName: Remote 2.11 - dependsOn: [] - jobs: - - template: templates/matrix.yml - parameters: - testFormat: 2.11/{0}/1 - targets: - - name: RHEL 7.9 - test: rhel/7.9 - - name: RHEL 8.3 - test: rhel/8.3 - - name: FreeBSD 12.2 - test: freebsd/12.2 - - stage: Remote_2_10 - displayName: Remote 2.10 - dependsOn: [] - jobs: - - template: templates/matrix.yml - parameters: - testFormat: 2.10/{0}/1 - targets: - - name: OS X 10.11 - test: osx/10.11 - # - name: macOS 10.15 - # test: macos/10.15 - - stage: Remote_2_9 - displayName: Remote 2.9 - dependsOn: [] - jobs: - - template: templates/matrix.yml - parameters: - testFormat: 2.9/{0}/1 - targets: - - name: 'RHEL 7.8' - test: 'rhel/7.8' ### cloud - stage: Cloud_2_13 displayName: Cloud 2.13 @@ -289,36 +190,6 @@ stages: targets: - test: 2.6 - test: 3.9 - - stage: Cloud_2_11 - displayName: Cloud 2.11 - dependsOn: [] - jobs: - - template: templates/matrix.yml - parameters: - nameFormat: Python {0} - testFormat: 2.11/cloud/{0}/1 - targets: - - test: 3.8 - - stage: Cloud_2_10 - displayName: Cloud 2.10 - dependsOn: [] - jobs: - - template: templates/matrix.yml - parameters: - nameFormat: Python {0} - testFormat: 2.10/cloud/{0}/1 - targets: - - test: 3.6 - - stage: Cloud_2_9 - displayName: Cloud 2.9 - dependsOn: [] - jobs: - - template: templates/matrix.yml - parameters: - nameFormat: Python {0} - testFormat: 2.9/cloud/{0}/1 - targets: - - test: 2.7 ## Finally @@ -327,23 +198,11 @@ stages: dependsOn: - Ansible_2_13 - Ansible_2_12 - - Ansible_2_11 - - Ansible_2_10 - - Ansible_2_9 - Remote_2_13 - Remote_2_12 - - Remote_2_11 - - Remote_2_10 - - Remote_2_9 - Docker_2_13 - Docker_2_12 - - Docker_2_11 - - Docker_2_10 - - Docker_2_9 - Cloud_2_13 - Cloud_2_12 - - Cloud_2_11 - - Cloud_2_10 - - Cloud_2_9 jobs: - template: templates/coverage.yml diff --git a/.github/workflows/ansible-test.yml b/.github/workflows/ansible-test.yml new file mode 100644 index 00000000..36219477 --- /dev/null +++ b/.github/workflows/ansible-test.yml @@ -0,0 +1,181 @@ +--- +# Copyright (c) Ansible Project +# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later + +name: EOL CI +on: + # Run EOL CI against all pushes (direct commits, also merged PRs), Pull Requests + push: + branches: + - stable-1 + pull_request: + +jobs: + sanity: + name: EOL Sanity (Ⓐ${{ matrix.ansible }}) + strategy: + matrix: + ansible: + - '2.9' + - '2.10' + - '2.11' + # Ansible-test on various stable branches does not yet work well with cgroups v2. + # Since ubuntu-latest now uses Ubuntu 22.04, we need to fall back to the ubuntu-20.04 + # image for these stable branches. The list of branches where this is necessary will + # shrink over time, check out https://github.com/ansible-collections/news-for-maintainers/issues/28 + # for the latest list. + runs-on: >- + ${{ contains(fromJson( + '["2.9", "2.10", "2.11"]' + ), matrix.ansible) && 'ubuntu-20.04' || 'ubuntu-latest' }} + steps: + - name: Perform sanity testing + uses: felixfontein/ansible-test-gh-action@main + with: + ansible-core-version: stable-${{ matrix.ansible }} + coverage: ${{ github.event_name == 'schedule' && 'always' || 'never' }} + pull-request-change-detection: 'true' + testing-type: sanity + + units: + # Ansible-test on various stable branches does not yet work well with cgroups v2. + # Since ubuntu-latest now uses Ubuntu 22.04, we need to fall back to the ubuntu-20.04 + # image for these stable branches. The list of branches where this is necessary will + # shrink over time, check out https://github.com/ansible-collections/news-for-maintainers/issues/28 + # for the latest list. + runs-on: >- + ${{ contains(fromJson( + '["2.9", "2.10", "2.11"]' + ), matrix.ansible) && 'ubuntu-20.04' || 'ubuntu-latest' }} + name: EOL Units (Ⓐ${{ matrix.ansible }}) + strategy: + # As soon as the first unit test fails, cancel the others to free up the CI queue + fail-fast: true + matrix: + ansible: + - '2.9' + - '2.10' + - '2.11' + + steps: + - name: >- + Perform unit testing against + Ansible version ${{ matrix.ansible }} + uses: felixfontein/ansible-test-gh-action@main + with: + ansible-core-version: stable-${{ matrix.ansible }} + coverage: ${{ github.event_name == 'schedule' && 'always' || 'never' }} + pull-request-change-detection: 'true' + testing-type: units + + integration: + # Ansible-test on various stable branches does not yet work well with cgroups v2. + # Since ubuntu-latest now uses Ubuntu 22.04, we need to fall back to the ubuntu-20.04 + # image for these stable branches. The list of branches where this is necessary will + # shrink over time, check out https://github.com/ansible-collections/news-for-maintainers/issues/28 + # for the latest list. + runs-on: >- + ${{ contains(fromJson( + '["2.9", "2.10", "2.11"]' + ), matrix.ansible) && 'ubuntu-20.04' || 'ubuntu-latest' }} + name: EOL I (Ⓐ${{ matrix.ansible }}+${{ matrix.docker }}+py${{ matrix.python }}:${{ matrix.target }}) + strategy: + fail-fast: false + matrix: + ansible: + - '' + docker: + - '' + python: + - '' + target: + - '' + exclude: + - ansible: '' + include: + # 2.9 + - ansible: '2.9' + docker: centos6 + python: '' + target: shippable/posix/group1/ + - ansible: '2.9' + docker: centos7 + python: '' + target: shippable/posix/group1/ + - ansible: '2.9' + docker: fedora31 + python: '' + target: shippable/posix/group1/ + - ansible: '2.9' + docker: ubuntu1604 + python: '' + target: shippable/posix/group1/ + - ansible: '2.9' + docker: ubuntu1804 + python: '' + target: shippable/posix/group1/ + - ansible: '2.9' + docker: default + python: '2.7' + target: shippable/cloud/group1/ + # 2.10 + - ansible: '2.10' + docker: centos6 + python: '' + target: shippable/posix/group1/ + - ansible: '2.10' + docker: fedora31 + python: '' + target: shippable/posix/group1/ + - ansible: '2.10' + docker: ubuntu1604 + python: '' + target: shippable/posix/group1/ + - ansible: '2.10' + docker: default + python: '3.6' + target: shippable/cloud/group1/ + # 2.11 + - ansible: '2.11' + docker: centos7 + python: '' + target: shippable/posix/group1/ + - ansible: '2.11' + docker: fedora32 + python: '' + target: shippable/posix/group1/ + - ansible: '2.11' + docker: opensuse15py2 + python: '' + target: shippable/posix/group1/ + - ansible: '2.11' + docker: ubuntu1804 + python: '' + target: shippable/posix/group1/ + - ansible: '2.11' + docker: default + python: '3.8' + target: shippable/cloud/group1/ + + steps: + - name: >- + Perform integration testing against + Ansible version ${{ matrix.ansible }} + under Python ${{ matrix.python }} + uses: felixfontein/ansible-test-gh-action@main + with: + ansible-core-version: stable-${{ matrix.ansible }} + coverage: ${{ github.event_name == 'schedule' && 'always' || 'never' }} + docker-image: ${{ matrix.docker }} + integration-continue-on-error: 'false' + integration-diff: 'false' + integration-retry-on-error: 'true' + pre-test-cmd: >- + git clone --depth=1 --single-branch https://github.com/ansible-collections/community.internal_test_tools.git ../../community/internal_test_tools + ; + git clone --depth=1 --single-branch https://github.com/ansible-collections/community.general.git ../../community/general + pull-request-change-detection: 'true' + target: ${{ matrix.target }} + target-python-version: ${{ matrix.python }} + testing-type: integration