upstream ci: Remove 'molecule' from tests.

This patch removes 'molecule' as a dependency for tests, by using the
scripts under `utils` to setup the environment.

By not using molecule, we have more flexibility on using either docker
or podman as the container engine, and makes it easy to reproduce the
environment on different distros, allowing for a more consistent error
reproduction off Azure.
This commit is contained in:
Rafael Guterres Jeffman
2024-06-26 14:55:53 +00:00
committed by Thomas Woerner
parent 94311f439c
commit 8515c9a48b
3 changed files with 60 additions and 60 deletions

View File

@@ -15,8 +15,8 @@ stages:
- template: templates/fast_tests.yml - template: templates/fast_tests.yml
parameters: parameters:
build_number: $(Build.BuildNumber) build_number: $(Build.BuildNumber)
scenario: fedora-latest distro: fedora-latest
ansible_version: "-core >=2.14,<2.15" ansible_version: "-core >=2.15,<2.16"
# Galaxy on Fedora # Galaxy on Fedora
@@ -26,8 +26,8 @@ stages:
- template: templates/fast_tests.yml - template: templates/fast_tests.yml
parameters: parameters:
build_number: $(Build.BuildNumber) build_number: $(Build.BuildNumber)
scenario: fedora-latest distro: fedora-latest
ansible_version: "-core >=2.14,<2.15" ansible_version: "-core >=2.15,<2.16"
# CentOS 9 Stream # CentOS 9 Stream
@@ -37,8 +37,8 @@ stages:
- template: templates/fast_tests.yml - template: templates/fast_tests.yml
parameters: parameters:
build_number: $(Build.BuildNumber) build_number: $(Build.BuildNumber)
scenario: c9s distro: c9s
ansible_version: "-core >=2.14,<2.15" ansible_version: "-core >=2.15,<2.16"
# CentOS 8 Stream # CentOS 8 Stream
@@ -48,19 +48,23 @@ stages:
- template: templates/fast_tests.yml - template: templates/fast_tests.yml
parameters: parameters:
build_number: $(Build.BuildNumber) build_number: $(Build.BuildNumber)
scenario: c8s distro: c8s
ansible_version: "-core >=2.14,<2.15" ansible_version: "-core >=2.15,<2.16"
target_python: "/usr/libexec/platform-python"
# CentOS 7 cannot be used with current systemd
#
# CentOS 7 # CentOS 7
#
- stage: CentOS_7 # - stage: CentOS_7
dependsOn: [] # dependsOn: []
jobs: # jobs:
- template: templates/fast_tests.yml # - template: templates/fast_tests.yml
parameters: # parameters:
build_number: $(Build.BuildNumber) # build_number: $(Build.BuildNumber)
scenario: centos-7 # distro: centos-7
ansible_version: "-core >=2.14,<2.15" # ansible_version: "-core >=2.15,<2.16"
# target_python: "/usr/bin/python2"
# Rawhide # Rawhide
@@ -70,5 +74,5 @@ stages:
- template: templates/fast_tests.yml - template: templates/fast_tests.yml
parameters: parameters:
build_number: $(Build.BuildNumber) build_number: $(Build.BuildNumber)
scenario: fedora-rawhide distro: fedora-rawhide
ansible_version: "-core >=2.14,<2.15" ansible_version: "-core >=2.15,<2.16"

View File

@@ -1,6 +1,6 @@
--- ---
parameters: parameters:
- name: scenario - name: distro
type: string type: string
default: fedora-latest default: fedora-latest
- name: build_number - name: build_number
@@ -8,6 +8,9 @@ parameters:
- name: ansible_version - name: ansible_version
type: string type: string
default: "" default: ""
- name: target_python
type: string
default: "/usr/bin/python3"
jobs: jobs:
- template: playbook_fast.yml - template: playbook_fast.yml
@@ -15,13 +18,14 @@ jobs:
group_number: 1 group_number: 1
number_of_groups: 1 number_of_groups: 1
build_number: ${{ parameters.build_number }} build_number: ${{ parameters.build_number }}
scenario: ${{ parameters.scenario }} distro: ${{ parameters.distro }}
ansible_version: ${{ parameters.ansible_version }} ansible_version: ${{ parameters.ansible_version }}
python_version: '< 3.12' python_version: '< 3.12'
target_python: ${{ parameters.target_python }}
# - template: pytest_tests.yml # - template: pytest_tests.yml
# parameters: # parameters:
# build_number: ${{ parameters.build_number }} # build_number: ${{ parameters.build_number }}
# scenario: ${{ parameters.scenario }} # distro: ${{ parameters.distro }}
# ansible_version: ${{ parameters.ansible_version }} # ansible_version: ${{ parameters.ansible_version }}
# python_version: '< 3.12' # python_version: '< 3.12'

View File

@@ -6,7 +6,7 @@ parameters:
- name: number_of_groups - name: number_of_groups
type: number type: number
default: 1 default: 1
- name: scenario - name: distro
type: string type: string
default: fedora-latest default: fedora-latest
- name: ansible_version - name: ansible_version
@@ -17,28 +17,28 @@ parameters:
default: 3.x default: 3.x
- name: build_number - name: build_number
type: string type: string
- name: target_python
type: string
default: "/usr/bin/python3"
jobs: jobs:
- job: Test_Group${{ parameters.group_number }} - job: Test_Group${{ parameters.group_number }}
displayName: Run playbook tests ${{ parameters.scenario }} (${{ parameters.group_number }}/${{ parameters.number_of_groups }}) displayName: Run playbook tests ${{ parameters.distro }} (${{ parameters.group_number }}/${{ parameters.number_of_groups }})
timeoutInMinutes: 360 timeoutInMinutes: 360
variables: variables:
- template: variables.yaml - template: variables.yaml
- template: variables_${{ parameters.scenario }}.yaml - template: variables_${{ parameters.distro }}.yaml
steps: steps:
- task: UsePythonVersion@0 - task: UsePythonVersion@0
inputs: inputs:
versionSpec: '${{ parameters.python_version }}' versionSpec: '${{ parameters.python_version }}'
- script: | - script: |
pip install \ pip install "ansible${{ parameters.ansible_version }}"
"molecule-plugins[docker]" \
"requests<2.29" \
"ansible${{ parameters.ansible_version }}"
retryCountOnTaskFailure: 5 retryCountOnTaskFailure: 5
displayName: Install molecule and Ansible displayName: Install Ansible
- script: ansible-galaxy collection install community.docker ansible.posix - script: ansible-galaxy collection install containers.podman
retryCountOnTaskFailure: 5 retryCountOnTaskFailure: 5
displayName: Install Ansible collections displayName: Install Ansible collections
@@ -47,43 +47,35 @@ jobs:
displayName: Install dependencies displayName: Install dependencies
- script: | - script: |
rm -rf ~/ansible . utils/set_test_modules
mkdir -p ~/.ansible/roles ~/.ansible/library ~/.ansible/module_utils python3 utils/check_test_configuration.py ${{ parameters.distro }}
cp -a roles/* ~/.ansible/roles displayName: Check test configuration
cp -a plugins/modules/* ~/.ansible/library
cp -a plugins/module_utils/* ~/.ansible/module_utils - script: |
molecule create -s ${{ parameters.scenario }} utils/setup_test_container.sh \
retryCountOnTaskFailure: 5 -e podman \
displayName: Setup test container -a \
env: -m 4 \
ANSIBLE_LIBRARY: ./molecule -n "ipaserver.test.local" \
-p ${{ parameters.target_python }} \
-i ${{ parameters.distro }}-server \
${{ parameters.distro }}-test
displayName: Setup target container
- script: | - script: |
. utils/set_test_modules . utils/set_test_modules
python utils/check_test_configuration.py ${{ parameters.scenario }} pytest -m "playbook" --verbose --color=yes --suppress-no-test-exit-code --junit-xml=TEST-results-pr-check.xml
displayName: Check scenario test configuration
- script: |
. utils/set_test_modules
if ! pytest \
-m "playbook" \
--verbose \
--color=yes \
--suppress-no-test-exit-code \
--splits=${{ parameters.number_of_groups }} \
--group=${{ parameters.group_number }} \
--randomly-seed=$(date "+%Y%m%d") \
--junit-xml=TEST-results-group-${{ parameters.group_number }}.xml
then
[ $? -eq 5 ] && true || false
fi
displayName: Run playbook tests displayName: Run playbook tests
env: env:
IPA_SERVER_HOST: ${{ parameters.scenario }} ANSIBLE_ROLES_PATH: "${PWD}/roles"
RUN_TESTS_IN_DOCKER: true 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_MODULES: ${{ variables.ipa_disabled_modules }}
IPA_DISABLED_TESTS: ${{ variables.ipa_disabled_tests }} IPA_DISABLED_TESTS: ${{ variables.ipa_disabled_tests }}
IPA_VERBOSITY: "-vvv" IPA_VERBOSITY: "-vvv"
IPA_PYTHON_PATH: ${{ parameters.target_python }}
- task: PublishTestResults@2 - task: PublishTestResults@2
inputs: inputs: