diff --git a/infra/azure/azure-pipelines.yml b/infra/azure/azure-pipelines.yml index ab28bb1108453eaa3ab0b193b24855b9ec36a8ab..2043940a681d93a530cf17905effc9012142b70a 100644 --- a/infra/azure/azure-pipelines.yml +++ b/infra/azure/azure-pipelines.yml @@ -15,8 +15,9 @@ stages: - template: templates/group_tests.yml parameters: build_number: $(Build.BuildNumber) - scenario: fedora-latest + distro: fedora-latest ansible_version: "-core" + skip_git_test: true # Fedora @@ -26,8 +27,9 @@ stages: - template: templates/group_tests.yml parameters: build_number: $(Build.BuildNumber) - scenario: fedora-latest + distro: fedora-latest ansible_version: "-core <2.14" + skip_git_test: true # Fedora @@ -37,19 +39,22 @@ stages: - template: templates/group_tests.yml parameters: build_number: $(Build.BuildNumber) - scenario: fedora-latest + distro: fedora-latest ansible_version: "-core >=2.14,<2.15" + skip_git_test: true # Galaxy on Fedora - stage: Galaxy_Fedora_Latest dependsOn: [] jobs: - - template: templates/galaxy_tests.yml + - template: templates/group_tests.yml parameters: build_number: $(Build.BuildNumber) - scenario: fedora-latest + distro: fedora-latest ansible_version: "-core >=2.14,<2.15" + skip_git_test: true + test_galaxy: true # CentOS 9 Stream @@ -59,8 +64,9 @@ stages: - template: templates/group_tests.yml parameters: build_number: $(Build.BuildNumber) - scenario: c9s + distro: c9s ansible_version: "-core >=2.14,<2.15" + skip_git_test: true # CentOS 8 Stream @@ -70,16 +76,6 @@ stages: - template: templates/group_tests.yml parameters: build_number: $(Build.BuildNumber) - scenario: c8s - ansible_version: "-core >=2.14,<2.15" - -# CentOS 7 - -- stage: CentOS_7 - dependsOn: [] - jobs: - - template: templates/group_tests.yml - parameters: - build_number: $(Build.BuildNumber) - scenario: centos-7 + distro: c8s ansible_version: "-core >=2.14,<2.15" + skip_git_test: true diff --git a/infra/azure/build-containers.yml b/infra/azure/build-containers.yml index 75c3853909d2fefd13cf40a15703d412d560b377..d4b6b25abd4f7b1b68dbd972cc3d319c79ef3ff0 100644 --- a/infra/azure/build-containers.yml +++ b/infra/azure/build-containers.yml @@ -15,16 +15,6 @@ pool: stages: -# Currently, it's not possible to use CentOS container -# -# - stage: CentOS_7 -# dependsOn: [] -# jobs: -# - template: templates/build_container.yml -# parameters: -# job_name_suffix: Centos7 -# distro: centos-7 - - stage: CentOS_8_Stream dependsOn: [] jobs: diff --git a/infra/azure/nightly.yml b/infra/azure/nightly.yml index 89914f8e4b9e84d0b5e637ad568a7154ff09af73..cbbc988972b9afdec4b80f53ad1b568dcb7c801c 100644 --- a/infra/azure/nightly.yml +++ b/infra/azure/nightly.yml @@ -22,8 +22,9 @@ stages: - template: templates/group_tests.yml parameters: build_number: $(Build.BuildNumber) - scenario: fedora-latest + distro: fedora-latest ansible_version: "-core >=2.13,<2.14" + skip_git_test: false - stage: FedoraLatest_Ansible_Core_2_14 dependsOn: [] @@ -31,8 +32,9 @@ stages: - template: templates/group_tests.yml parameters: build_number: $(Build.BuildNumber) - scenario: fedora-latest + distro: fedora-latest ansible_version: "-core >=2.14,<2.15" + skip_git_test: false - stage: FedoraLatest_Ansible_Core_2_15 dependsOn: [] @@ -40,8 +42,9 @@ stages: - template: templates/group_tests.yml parameters: build_number: $(Build.BuildNumber) - scenario: fedora-latest + distro: fedora-latest ansible_version: "-core >=2.15,<2.16" + skip_git_test: true - stage: FedoraLatest_Ansible_latest dependsOn: [] @@ -49,46 +52,44 @@ stages: - template: templates/group_tests.yml parameters: build_number: $(Build.BuildNumber) - scenario: fedora-latest + distro: fedora-latest ansible_version: "" + skip_git_test: true # Galaxy on Fedora - stage: Galaxy_FedoraLatest_Ansible_Core_2_13 dependsOn: [] jobs: - - template: templates/galaxy_tests.yml + - template: templates/group_tests.yml parameters: build_number: $(Build.BuildNumber) - scenario: fedora-latest + distro: fedora-latest ansible_version: "-core >=2.13,<2.14" + skip_git_test: false + test_galaxy: true - stage: Galaxy_FedoraLatest_Ansible_Core_2_14 dependsOn: [] jobs: - - template: templates/galaxy_tests.yml + - template: templates/group_tests.yml parameters: build_number: $(Build.BuildNumber) - scenario: fedora-latest + distro: fedora-latest ansible_version: "-core >=2.14,<2.15" + skip_git_test: false + test_galaxy: true - stage: Galaxy_FedoraLatest_Ansible_Core_2_15 dependsOn: [] jobs: - - template: templates/galaxy_tests.yml + - template: templates/group_tests.yml parameters: build_number: $(Build.BuildNumber) - scenario: fedora-latest + distro: fedora-latest ansible_version: "-core >=2.15,<2.16" - -- stage: Galaxy_FedoraLatest_Ansible_latest - dependsOn: [] - jobs: - - template: templates/galaxy_tests.yml - parameters: - build_number: $(Build.BuildNumber) - scenario: fedora-latest - ansible_version: "" + skip_git_test: true + test_galaxy: true # Fedora Rawhide @@ -98,8 +99,9 @@ stages: - template: templates/group_tests.yml parameters: build_number: $(Build.BuildNumber) - scenario: fedora-rawhide + distro: fedora-rawhide ansible_version: "-core >=2.13,<2.14" + skip_git_test: false - stage: FedoraRawhide_Ansible_Core_2_14 dependsOn: [] @@ -107,8 +109,9 @@ stages: - template: templates/group_tests.yml parameters: build_number: $(Build.BuildNumber) - scenario: fedora-rawhide + distro: fedora-rawhide ansible_version: "-core >=2.14,<2.15" + skip_git_test: false - stage: FedoraRawhide_Ansible_Core_2_15 dependsOn: [] @@ -116,8 +119,9 @@ stages: - template: templates/group_tests.yml parameters: build_number: $(Build.BuildNumber) - scenario: fedora-rawhide + distro: fedora-rawhide ansible_version: "-core >=2.15,<2.16" + skip_git_test: true - stage: FedoraRawhide_Ansible_latest dependsOn: [] @@ -125,8 +129,9 @@ stages: - template: templates/group_tests.yml parameters: build_number: $(Build.BuildNumber) - scenario: fedora-rawhide + distro: fedora-rawhide ansible_version: "" + skip_git_test: true # CentoOS 9 Stream @@ -136,8 +141,9 @@ stages: - template: templates/group_tests.yml parameters: build_number: $(Build.BuildNumber) - scenario: c9s + distro: c9s ansible_version: "-core >=2.13,<2.14" + skip_git_test: false - stage: c9s_Ansible_Core_2_14 dependsOn: [] @@ -145,8 +151,9 @@ stages: - template: templates/group_tests.yml parameters: build_number: $(Build.BuildNumber) - scenario: c9s + distro: c9s ansible_version: "-core >=2.14,<2.15" + skip_git_test: false - stage: c9s_Ansible_Core_2_15 dependsOn: [] @@ -154,8 +161,9 @@ stages: - template: templates/group_tests.yml parameters: build_number: $(Build.BuildNumber) - scenario: c9s + distro: c9s ansible_version: "-core >=2.15,<2.16" + skip_git_test: true - stage: c9s_Ansible_latest dependsOn: [] @@ -163,8 +171,9 @@ stages: - template: templates/group_tests.yml parameters: build_number: $(Build.BuildNumber) - scenario: c9s + distro: c9s ansible_version: "" + skip_git_test: true # CentOS 8 Stream @@ -174,8 +183,9 @@ stages: - template: templates/group_tests.yml parameters: build_number: $(Build.BuildNumber) - scenario: c8s + distro: c8s ansible_version: "-core >=2.13,<2.14" + skip_git_test: true - stage: c8s_Ansible_Core_2_14 dependsOn: [] @@ -183,8 +193,9 @@ stages: - template: templates/group_tests.yml parameters: build_number: $(Build.BuildNumber) - scenario: c8s + distro: c8s ansible_version: "-core >=2.14,<2.15" + skip_git_test: false - stage: c8s_Ansible_Core_2_15 dependsOn: [] @@ -192,52 +203,6 @@ stages: - template: templates/group_tests.yml parameters: build_number: $(Build.BuildNumber) - scenario: c8s + distro: c8s ansible_version: "-core >=2.15,<2.16" - -- stage: c8s_Ansible_latest - dependsOn: [] - jobs: - - template: templates/group_tests.yml - parameters: - build_number: $(Build.BuildNumber) - scenario: c8s - ansible_version: "" - -# CentOS 7 - -- stage: CentOS7_Ansible_Core_2_13 - dependsOn: [] - jobs: - - template: templates/group_tests.yml - parameters: - build_number: $(Build.BuildNumber) - scenario: centos-7 - ansible_version: "-core >=2.13,<2.14" - -- stage: CentOS7_Ansible_Core_2_14 - dependsOn: [] - jobs: - - template: templates/group_tests.yml - parameters: - build_number: $(Build.BuildNumber) - scenario: centos-7 - ansible_version: "-core >=2.14,<2.15" - -- stage: CentOS7_Ansible_Core_2_15 - dependsOn: [] - jobs: - - template: templates/group_tests.yml - parameters: - build_number: $(Build.BuildNumber) - scenario: centos-7 - ansible_version: "-core >=2.15,<2.16" - -- stage: CentOS7_Ansible_latest - dependsOn: [] - jobs: - - template: templates/group_tests.yml - parameters: - build_number: $(Build.BuildNumber) - scenario: centos-7 - ansible_version: "" + skip_git_test: true diff --git a/infra/azure/pr-pipeline.yml b/infra/azure/pr-pipeline.yml index 40d78a9b10429cf19d14d8d7c79a4bffa6cae15d..bc6e0830b8b678a421c9b3380ff073cdbb864580 100644 --- a/infra/azure/pr-pipeline.yml +++ b/infra/azure/pr-pipeline.yml @@ -12,67 +12,58 @@ stages: - stage: Fedora_Latest dependsOn: [] jobs: - - template: templates/fast_tests.yml + - template: templates/run_tests.yml parameters: build_number: $(Build.BuildNumber) distro: fedora-latest ansible_version: "-core >=2.15,<2.16" + skip_git_test: false # Galaxy on Fedora - stage: Galaxy_Fedora_Latest dependsOn: [] jobs: - - template: templates/fast_tests.yml + - template: templates/run_tests.yml parameters: build_number: $(Build.BuildNumber) distro: fedora-latest ansible_version: "-core >=2.15,<2.16" + skip_git_test: false + test_galaxy: true # CentOS 9 Stream - stage: CentOS_9_Stream dependsOn: [] jobs: - - template: templates/fast_tests.yml + - template: templates/run_tests.yml parameters: build_number: $(Build.BuildNumber) distro: c9s ansible_version: "-core >=2.15,<2.16" + skip_git_test: false # CentOS 8 Stream - stage: CentOS_8_Stream dependsOn: [] jobs: - - template: templates/fast_tests.yml + - template: templates/run_tests.yml parameters: build_number: $(Build.BuildNumber) distro: c8s ansible_version: "-core >=2.15,<2.16" - target_python: "/usr/libexec/platform-python" - -# CentOS 7 cannot be used with current systemd -# -# CentOS 7 -# -# - stage: CentOS_7 -# dependsOn: [] -# jobs: -# - template: templates/fast_tests.yml -# parameters: -# build_number: $(Build.BuildNumber) -# distro: centos-7 -# ansible_version: "-core >=2.15,<2.16" -# target_python: "/usr/bin/python2" + skip_git_test: false # Rawhide - stage: Fedora_Rawhide dependsOn: [] jobs: - - template: templates/fast_tests.yml + - template: templates/run_tests.yml parameters: build_number: $(Build.BuildNumber) distro: fedora-rawhide ansible_version: "-core >=2.15,<2.16" + skip_git_test: false diff --git a/infra/azure/templates/build_container.yml b/infra/azure/templates/build_container.yml index f93881ce2f73d713df3b72f8fd12c8794c16368a..49d2f7310897dc8968fa400518bf49c8f30d41b8 100644 --- a/infra/azure/templates/build_container.yml +++ b/infra/azure/templates/build_container.yml @@ -22,18 +22,15 @@ jobs: retryCountOnTaskFailure: 5 displayName: Install tools - - script: | - rm -rf ~/.ansible - mkdir -p ~/.ansible - ln -snf $(readlink -f roles) ~/.ansible/roles - ln -snf $(readlink -f plugins) ~/.ansible/plugins - displayName: Setup ansible-freeipa using Git repository - - script: ansible-galaxy collection install containers.podman displayName: Install Ansible Galaxy collections - script: infra/image/build.sh -s ${{ parameters.distro }} displayName: Build ${{ parameters.distro }} base image + env: + ANSIBLE_ROLES_PATH: "${PWD}/roles" + ANSIBLE_LIBRARY: "${PWD}/plugins/modules" + ANSIBLE_MODULE_UTILS: "${PWD}/plugins/module_utils" - script: podman login -u="$QUAY_ROBOT_USERNAME" -p="$QUAY_ROBOT_TOKEN" quay.io displayName: Registry login diff --git a/infra/azure/templates/fast_tests.yml b/infra/azure/templates/fast_tests.yml deleted file mode 100644 index ac26ce8f0bb19ee5ffd1af63771174ad273e0004..0000000000000000000000000000000000000000 --- a/infra/azure/templates/fast_tests.yml +++ /dev/null @@ -1,31 +0,0 @@ ---- -parameters: - - name: distro - type: string - default: fedora-latest - - name: build_number - type: string - - name: ansible_version - type: string - default: "" - - name: target_python - type: string - default: "/usr/bin/python3" - -jobs: -- template: playbook_fast.yml - parameters: - group_number: 1 - number_of_groups: 1 - build_number: ${{ parameters.build_number }} - distro: ${{ parameters.distro }} - ansible_version: ${{ parameters.ansible_version }} - python_version: '< 3.12' - target_python: ${{ parameters.target_python }} - -# - template: pytest_tests.yml -# parameters: -# build_number: ${{ parameters.build_number }} -# distro: ${{ parameters.distro }} -# ansible_version: ${{ parameters.ansible_version }} -# python_version: '< 3.12' diff --git a/infra/azure/templates/galaxy_pytest_script.yml b/infra/azure/templates/galaxy_pytest_script.yml deleted file mode 100644 index 3b164169617bf76b8959316c79ce86ce35da4ebf..0000000000000000000000000000000000000000 --- a/infra/azure/templates/galaxy_pytest_script.yml +++ /dev/null @@ -1,65 +0,0 @@ ---- -parameters: - - name: build_number - type: string - - name: scenario - type: string - default: fedora-latest - - name: ansible_version - type: string - default: "" - - name: python_version - type: string - default: 3.x - -jobs: -- job: Test_PyTests - displayName: Run pytests on ${{ parameters.scenario }} - timeoutInMinutes: 240 - steps: - - task: UsePythonVersion@0 - inputs: - versionSpec: '${{ parameters.python_version }}' - - - script: | - pip install \ - "molecule-plugins[docker]" \ - "requests<2.29" \ - "ansible${{ parameters.ansible_version }}" - retryCountOnTaskFailure: 5 - displayName: Install molecule and Ansible - - - script: ansible-galaxy collection install community.docker ansible.posix - retryCountOnTaskFailure: 5 - displayName: Install Ansible collections - - - script: pip install -r requirements-tests.txt - retryCountOnTaskFailure: 5 - displayName: Install dependencies - - - script: | - utils/build-galaxy-release.sh -i - molecule create -s ${{ parameters.scenario }} - retryCountOnTaskFailure: 5 - displayName: Setup test container - env: - ANSIBLE_LIBRARY: ./molecule - - - script: | - cd ~/.ansible/collections/ansible_collections/freeipa/ansible_freeipa - pytest \ - -m "not playbook" \ - --verbose \ - --color=yes \ - --junit-xml=TEST-results-pytests.xml - displayName: Run tests - env: - IPA_SERVER_HOST: ${{ parameters.scenario }} - RUN_TESTS_IN_DOCKER: true - IPA_VERBOSITY: "-vvv" - - - task: PublishTestResults@2 - inputs: - mergeTestResults: true - testRunTitle: PlaybookTests-Build${{ parameters.build_number }} - condition: succeededOrFailed() diff --git a/infra/azure/templates/galaxy_script.yml b/infra/azure/templates/galaxy_script.yml deleted file mode 100644 index a00dd0a55fec435f986df7164ad128b9650d789e..0000000000000000000000000000000000000000 --- a/infra/azure/templates/galaxy_script.yml +++ /dev/null @@ -1,86 +0,0 @@ ---- -parameters: - - name: group_number - type: number - default: 1 - - name: number_of_groups - type: number - default: 1 - - name: scenario - type: string - default: fedora-latest - - name: ansible_version - type: string - default: "" - - name: python_version - type: string - default: 3.x - - name: build_number - type: string - - -jobs: -- job: Test_Group${{ parameters.group_number }} - displayName: Run playbook tests ${{ parameters.scenario }} (${{ parameters.group_number }}/${{ parameters.number_of_groups }}) - timeoutInMinutes: 240 - variables: - - template: variables.yaml - - template: variables_${{ parameters.scenario }}.yaml - steps: - - task: UsePythonVersion@0 - inputs: - versionSpec: '${{ parameters.python_version }}' - - - script: | - pip install \ - "molecule-plugins[docker]" \ - "requests<2.29" \ - "ansible${{ parameters.ansible_version }}" - retryCountOnTaskFailure: 5 - displayName: Install molecule and Ansible - - - script: ansible-galaxy collection install community.docker ansible.posix - retryCountOnTaskFailure: 5 - displayName: Install Ansible collections - - - script: pip install -r requirements-tests.txt - retryCountOnTaskFailure: 5 - displayName: Install dependencies - - - script: | - utils/build-galaxy-release.sh -i - molecule create -s ${{ parameters.scenario }} - retryCountOnTaskFailure: 5 - displayName: Setup test container - env: - ANSIBLE_LIBRARY: ./molecule - - - script: | - python utils/check_test_configuration.py ${{ parameters.scenario }} - displayName: Check scenario test configuration - - - script: | - cd ~/.ansible/collections/ansible_collections/freeipa/ansible_freeipa - pytest \ - -m "playbook" \ - --verbose \ - --color=yes \ - --splits=${{ parameters.number_of_groups }} \ - --group=${{ parameters.group_number }} \ - --randomly-seed=$(date "+%Y%m%d") \ - --junit-xml=TEST-results-group-${{ parameters.group_number }}.xml - displayName: Run playbook tests - env: - IPA_SERVER_HOST: ${{ parameters.scenario }} - RUN_TESTS_IN_DOCKER: true - IPA_DISABLED_MODULES: ${{ variables.ipa_disabled_modules }} - IPA_DISABLED_TESTS: ${{ variables.ipa_disabled_tests }} - IPA_ENABLED_MODULES: ${{ variables.ipa_enabled_modules }} - IPA_ENABLED_TESTS: ${{ variables.ipa_enabled_tests }} - IPA_VERBOSITY: "-vvv" - - - task: PublishTestResults@2 - inputs: - mergeTestResults: true - testRunTitle: PlaybookTests-Build${{ parameters.build_number }} - condition: succeededOrFailed() diff --git a/infra/azure/templates/galaxy_tests.yml b/infra/azure/templates/galaxy_tests.yml deleted file mode 100644 index 465097de2e59caf02dd3fbf6672d1685fa8e592b..0000000000000000000000000000000000000000 --- a/infra/azure/templates/galaxy_tests.yml +++ /dev/null @@ -1,46 +0,0 @@ ---- -parameters: - - name: scenario - type: string - default: fedora-latest - - name: build_number - type: string - - name: ansible_version - type: string - default: "" - -jobs: -- template: galaxy_script.yml - parameters: - group_number: 1 - number_of_groups: 3 - build_number: ${{ parameters.build_number }} - scenario: ${{ parameters.scenario }} - ansible_version: ${{ parameters.ansible_version }} - python_version: '< 3.12' - -- template: galaxy_script.yml - parameters: - group_number: 2 - number_of_groups: 3 - build_number: ${{ parameters.build_number }} - scenario: ${{ parameters.scenario }} - ansible_version: ${{ parameters.ansible_version }} - python_version: '< 3.12' - -- template: galaxy_script.yml - parameters: - group_number: 3 - number_of_groups: 3 - build_number: ${{ parameters.build_number }} - scenario: ${{ parameters.scenario }} - ansible_version: ${{ parameters.ansible_version }} - python_version: '< 3.12' - -# Temporarily disable due to issues with ansible docker plugin. -#- template: galaxy_pytest_script.yml -# parameters: -# build_number: ${{ parameters.build_number }} -# scenario: ${{ parameters.scenario }} -# ansible_version: ${{ parameters.ansible_version }} -# python_version: '< 3.12' diff --git a/infra/azure/templates/group_tests.yml b/infra/azure/templates/group_tests.yml index 38f183dd97171a2880e1febf55416b7f7549153c..da18c2e3fbd4cdffb49faf1c91b9eeb3b157989e 100644 --- a/infra/azure/templates/group_tests.yml +++ b/infra/azure/templates/group_tests.yml @@ -1,6 +1,6 @@ --- parameters: - - name: scenario + - name: distro type: string default: fedora-latest - name: build_number @@ -8,39 +8,23 @@ parameters: - name: ansible_version type: string default: "" + - name: skip_git_test + type: boolean + default: false + - name: test_galaxy + type: boolean + default: false jobs: -- template: playbook_tests.yml - parameters: - group_number: 1 - number_of_groups: 3 - build_number: ${{ parameters.build_number }} - scenario: ${{ parameters.scenario }} - ansible_version: ${{ parameters.ansible_version }} - python_version: '< 3.12' -- template: playbook_tests.yml - parameters: - group_number: 2 - number_of_groups: 3 - build_number: ${{ parameters.build_number }} - scenario: ${{ parameters.scenario }} - ansible_version: ${{ parameters.ansible_version }} - python_version: '< 3.12' - -- template: playbook_tests.yml - parameters: - group_number: 3 - number_of_groups: 3 - build_number: ${{ parameters.build_number }} - scenario: ${{ parameters.scenario }} - ansible_version: ${{ parameters.ansible_version }} - python_version: '< 3.12' - -# Temporarily disabled due to ansible docker plugin issue. -#- template: pytest_tests.yml -# parameters: -# build_number: ${{ parameters.build_number }} -# scenario: ${{ parameters.scenario }} -# ansible_version: ${{ parameters.ansible_version }} -# python_version: '< 3.12' +- ${{ each group in split('1,2,3', ',') }}: + - template: run_tests.yml + parameters: + group_number: ${{ group }} + number_of_groups: 3 + build_number: ${{ parameters.build_number }} + distro: ${{ parameters.distro }} + ansible_version: ${{ parameters.ansible_version }} + python_version: '< 3.12' + skip_git_test: ${{ parameters.skip_git_test }} + test_galaxy: ${{ parameters.test_galaxy }} diff --git a/infra/azure/templates/playbook_fast.yml b/infra/azure/templates/playbook_fast.yml deleted file mode 100644 index a00a7875dca1ef99ff1d4e8a8fcbbe6e891e3bfd..0000000000000000000000000000000000000000 --- a/infra/azure/templates/playbook_fast.yml +++ /dev/null @@ -1,84 +0,0 @@ ---- -parameters: - - name: group_number - type: number - default: 1 - - name: number_of_groups - type: number - default: 1 - - name: distro - type: string - default: fedora-latest - - name: ansible_version - type: string - default: "" - - name: python_version - type: string - default: 3.x - - name: build_number - type: string - - name: target_python - type: string - default: "/usr/bin/python3" - -jobs: -- job: Test_Group${{ parameters.group_number }} - displayName: Run playbook tests ${{ parameters.distro }} (${{ parameters.group_number }}/${{ parameters.number_of_groups }}) - timeoutInMinutes: 360 - variables: - - template: variables.yaml - - template: variables_${{ parameters.distro }}.yaml - steps: - - task: UsePythonVersion@0 - inputs: - versionSpec: '${{ parameters.python_version }}' - - - script: | - pip install "ansible${{ parameters.ansible_version }}" - retryCountOnTaskFailure: 5 - displayName: Install Ansible - - - script: ansible-galaxy collection install containers.podman - retryCountOnTaskFailure: 5 - displayName: Install Ansible collections - - - script: pip install -r requirements-tests.txt - retryCountOnTaskFailure: 5 - displayName: Install dependencies - - - script: | - . utils/set_test_modules - python3 utils/check_test_configuration.py ${{ parameters.distro }} - displayName: Check test configuration - - - script: | - utils/setup_test_container.sh \ - -e podman \ - -a \ - -m 4 \ - -n "ipaserver.test.local" \ - -p ${{ parameters.target_python }} \ - -i ${{ parameters.distro }}-server \ - ${{ parameters.distro }}-test - displayName: Setup target container - - - script: | - . utils/set_test_modules - pytest -m "playbook" --verbose --color=yes --suppress-no-test-exit-code --junit-xml=TEST-results-pr-check.xml - displayName: Run playbook tests - env: - ANSIBLE_ROLES_PATH: "${PWD}/roles" - ANSIBLE_LIBRARY: "${PWD}/plugins" - ANSIBLE_MODULE_UTILS: "${PWD}/plugins/module_utils" - IPA_SERVER_HOST: ${{ parameters.distro }}-test - RUN_TESTS_IN_DOCKER: podman - IPA_DISABLED_MODULES: ${{ variables.ipa_disabled_modules }} - IPA_DISABLED_TESTS: ${{ variables.ipa_disabled_tests }} - IPA_VERBOSITY: "-vvv" - IPA_PYTHON_PATH: ${{ parameters.target_python }} - - - task: PublishTestResults@2 - inputs: - mergeTestResults: true - testRunTitle: PlaybookTests-Build${{ parameters.build_number }} - condition: succeededOrFailed() diff --git a/infra/azure/templates/playbook_tests.yml b/infra/azure/templates/playbook_tests.yml deleted file mode 100644 index c65c955fb1082006ac727282a382162d89e3c651..0000000000000000000000000000000000000000 --- a/infra/azure/templates/playbook_tests.yml +++ /dev/null @@ -1,88 +0,0 @@ ---- -parameters: - - name: group_number - type: number - default: 1 - - name: number_of_groups - type: number - default: 1 - - name: scenario - type: string - default: fedora-latest - - name: ansible_version - type: string - default: "" - - name: python_version - type: string - default: 3.x - - name: build_number - type: string - -jobs: -- job: Test_Group${{ parameters.group_number }} - displayName: Run playbook tests ${{ parameters.scenario }} (${{ parameters.group_number }}/${{ parameters.number_of_groups }}) - timeoutInMinutes: 240 - variables: - - template: variables.yaml - - template: variables_${{ parameters.scenario }}.yaml - steps: - - task: UsePythonVersion@0 - inputs: - versionSpec: '${{ parameters.python_version }}' - - - script: | - pip install \ - "molecule-plugins[docker]" \ - "requests<2.29" \ - "ansible${{ parameters.ansible_version }}" - retryCountOnTaskFailure: 5 - displayName: Install molecule and Ansible - - - script: ansible-galaxy collection install community.docker ansible.posix - retryCountOnTaskFailure: 5 - displayName: Install Ansible collections - - - script: pip install -r requirements-tests.txt - retryCountOnTaskFailure: 5 - displayName: Install dependencies - - - script: | - rm -rf ~/ansible - mkdir -p ~/.ansible/roles ~/.ansible/library ~/.ansible/module_utils - cp -a roles/* ~/.ansible/roles - cp -a plugins/modules/* ~/.ansible/library - cp -a plugins/module_utils/* ~/.ansible/module_utils - molecule create -s ${{ parameters.scenario }} - retryCountOnTaskFailure: 5 - displayName: Setup test container - env: - ANSIBLE_LIBRARY: ./molecule - - - script: | - python utils/check_test_configuration.py ${{ parameters.scenario }} - displayName: Check scenario test configuration - - - script: | - pytest \ - -m "playbook" \ - --verbose \ - --color=yes \ - --splits=${{ parameters.number_of_groups }} \ - --group=${{ parameters.group_number }} \ - --randomly-seed=$(date "+%Y%m%d") \ - --junit-xml=TEST-results-group-${{ parameters.group_number }}.xml - displayName: Run playbook tests - env: - IPA_SERVER_HOST: ${{ parameters.scenario }} - RUN_TESTS_IN_DOCKER: true - IPA_DISABLED_MODULES: ${{ variables.ipa_disabled_modules }} - IPA_DISABLED_TESTS: ${{ variables.ipa_disabled_tests }} - IPA_ENABLED_MODULES: ${{ variables.ipa_enabled_modules }} - IPA_ENABLED_TESTS: ${{ variables.ipa_enabled_tests }} - IPA_VERBOSITY: "-vvv" - - - task: PublishTestResults@2 - inputs: - mergeTestResults: true - testRunTitle: PlaybookTests-Build${{ parameters.build_number }} - condition: succeededOrFailed() diff --git a/infra/azure/templates/prepare_environment.yaml b/infra/azure/templates/prepare_environment.yaml new file mode 100644 index 0000000000000000000000000000000000000000..077d40528e13dd7659ea45fe92913ab6ff7870a6 --- /dev/null +++ b/infra/azure/templates/prepare_environment.yaml @@ -0,0 +1,30 @@ +--- +parameters: + - name: distro + type: string + default: fedora-latest + - name: ansible_version + type: string + default: "" + - name: python_version + type: string + default: 3.x + - name: build_number + type: string + +steps: + - task: UsePythonVersion@0 + inputs: + versionSpec: '${{ parameters.python_version }}' + + - script: | + pip install "ansible${{ parameters.ansible_version }}" -r requirements-tests.txt + retryCountOnTaskFailure: 5 + displayName: Install test dependencies + + - script: ansible-galaxy collection install -r requirements-podman.yml + retryCountOnTaskFailure: 5 + displayName: Install Ansible collections + + - script: infra/image/start.sh ${{ parameters.distro }}-server + displayName: Setup target container for ${{ parameters.distro }} diff --git a/infra/azure/templates/pytest_tests.yml b/infra/azure/templates/pytest_tests.yml deleted file mode 100644 index a7b12110e52a19b0a83aad76b1d8488072db3dc6..0000000000000000000000000000000000000000 --- a/infra/azure/templates/pytest_tests.yml +++ /dev/null @@ -1,75 +0,0 @@ ---- -parameters: - - name: build_number - type: string - - name: scenario - type: string - default: fedora-latest - - name: ansible_version - type: string - default: "" - - name: python_version - type: string - default: 3.x - -jobs: -- job: Test_PyTests - displayName: Run pytests on ${{ parameters.scenario }} - timeoutInMinutes: 240 - variables: - - template: variables.yaml - - template: variables_${{ parameters.scenario }}.yaml - steps: - - task: UsePythonVersion@0 - inputs: - versionSpec: '${{ parameters.python_version }}' - - - script: | - pip install \ - "molecule-plugins[docker]" \ - "requests<2.29" \ - "ansible${{ parameters.ansible_version }}" - retryCountOnTaskFailure: 5 - displayName: Install molecule and Ansible - - - script: ansible-galaxy collection install community.docker ansible.posix - retryCountOnTaskFailure: 5 - displayName: Install Ansible collections - - - script: pip install -r requirements-tests.txt - retryCountOnTaskFailure: 5 - displayName: Install dependencies - - - script: | - rm -rf ~/.ansible - mkdir -p ~/.ansible/roles ~/.ansible/library ~/.ansible/module_utils - cp -a roles/* ~/.ansible/roles - cp -a plugins/modules/* ~/.ansible/library - cp -a plugins/module_utils/* ~/.ansible/module_utils - molecule create -s ${{ parameters.scenario }} - retryCountOnTaskFailure: 5 - displayName: Setup test container - env: - ANSIBLE_LIBRARY: ./molecule - - - script: | - pytest \ - -m "not playbook" \ - --verbose \ - --color=yes \ - --junit-xml=TEST-results-pytests.xml - displayName: Run tests - env: - IPA_SERVER_HOST: ${{ parameters.scenario }} - RUN_TESTS_IN_DOCKER: true - IPA_DISABLED_MODULES: ${{ variables.ipa_disabled_modules }} - IPA_DISABLED_TESTS: ${{ variables.ipa_disabled_tests }} - IPA_ENABLED_MODULES: ${{ variables.ipa_enabled_modules }} - IPA_ENABLED_TESTS: ${{ variables.ipa_enabled_tests }} - IPA_VERBOSITY: "-vvv" - - - task: PublishTestResults@2 - inputs: - mergeTestResults: true - testRunTitle: PlaybookTests-Build${{ parameters.build_number }} - condition: succeededOrFailed() diff --git a/infra/azure/templates/run_tests.yml b/infra/azure/templates/run_tests.yml new file mode 100644 index 0000000000000000000000000000000000000000..1cc00030bf597ebf39ee03b1916ce7ae99b656c2 --- /dev/null +++ b/infra/azure/templates/run_tests.yml @@ -0,0 +1,98 @@ +--- +parameters: + - name: group_number + type: number + default: 1 + - name: number_of_groups + type: number + default: 1 + - name: distro + type: string + default: fedora-latest + - name: ansible_version + type: string + default: "" + - name: python_version + type: string + default: 3.x + - name: build_number + type: string + - name: skip_git_test + type: boolean + default: true + - name: test_type + type: string + default: "playbook" + - name: test_galaxy + type: boolean + default: false + +jobs: +- job: Test_Group${{ parameters.group_number }} + displayName: Run playbook tests ${{ parameters.distro }} (${{ parameters.group_number }}/${{ parameters.number_of_groups }}) + timeoutInMinutes: 360 + variables: + - template: variables.yaml + - template: variables_${{ parameters.distro }}.yaml + steps: + - template: prepare_environment.yaml + parameters: + build_number: ${{ parameters.build_number }} + distro: ${{ parameters.distro }} + ansible_version: ${{ parameters.ansible_version }} + python_version: ${{ parameters.python_version }} + + - bash: echo "##vso[task.setvariable variable=TOPDIR]${PWD}" + displayName: Set repo rootdir + + - script: | + . "${TOPDIR}/utils/set_test_modules" + python3 utils/check_test_configuration.py ${{ parameters.distro }} + displayName: Check test configuration + env: + SKIP_GIT_TEST: ${{ parameters.skip_git_test }} + + - script: | + git fetch --unshallow + utils/build-galaxy-release.sh -i + retryCountOnTaskFailure: 5 + displayName: Build Galaxy release + condition: ${{ parameters.test_galaxy }} + + - script: | + echo "PWD: ${PWD}" + echo "TOPDIR: ${TOPDIR}" + echo "ROLES: ${ANSIBLE_ROLES_PATH}" + echo "LIBRARY: ${ANSIBLE_LIBRARY}" + echo "MODULE_UTILS: ${ANSIBLE_MODULE_UTILS}" + . "${TOPDIR}/utils/set_test_modules" + [ "${{ parameters.test_galaxy }}" == "True" ] && cd ~/.ansible/collections/ansible_collections/freeipa/ansible_freeipa + pytest \ + -m "${{ parameters.test_type }}" \ + --verbose \ + --color=yes \ + --splits=${{ parameters.number_of_groups }} \ + --group=${{ parameters.group_number }} \ + --randomly-seed=$(date "+%Y%m%d") \ + --suppress-no-test-exit-code \ + --junit-xml=TEST-results-pr-check.xml + displayName: Run playbook tests + env: + SKIP_GIT_TEST: ${{ parameters.skip_git_test }} + ${{ if not(parameters.test_galaxy) }}: + ANSIBLE_ROLES_PATH: "${PWD}/roles" + ANSIBLE_LIBRARY: "${PWD}/plugins" + ANSIBLE_MODULE_UTILS: "${PWD}/plugins/module_utils" + IPA_SERVER_HOST: ansible-freeipa-tests + RUN_TESTS_IN_DOCKER: podman + IPA_DISABLED_MODULES: ${{ variables.ipa_disabled_modules }} + IPA_DISABLED_TESTS: ${{ variables.ipa_disabled_tests }} + IPA_ENABLED_MODULES: ${{ variables.ipa_enabled_modules }} + IPA_ENABLED_TESTS: ${{ variables.ipa_enabled_tests }} + IPA_VERBOSITY: "-vvv" + + - task: PublishTestResults@2 + inputs: + mergeTestResults: true + testRunTitle: PlaybookTests-Build${{ parameters.build_number }} + condition: succeededOrFailed() diff --git a/infra/image/build.sh b/infra/image/build.sh index 3220ecce31a6d181d5b9a42150953d0617140469..8a2491c881a8afb6a8188d8a2b787459b604cb0f 100755 --- a/infra/image/build.sh +++ b/infra/image/build.sh @@ -37,8 +37,7 @@ EOF name="ansible-freeipa-image-builder" hostname="ipaserver.test.local" -# Number of cpus is not available in usptream CI (Ubuntu 22.04). -# cpus="2" +cpus="2" memory="3g" quayname="quay.io/ansible-freeipa/upstream-tests" deploy_server="N"