From 998a14148255b8360a291df797f36c5d84193cbf Mon Sep 17 00:00:00 2001 From: Rafael Guterres Jeffman Date: Mon, 17 Jan 2022 09:23:06 -0300 Subject: [PATCH 1/3] upstream CI: Enable CentOS 8 Stream for PR and nightly tests. Add configuration to build a testing CentOS 8 stream image and to execute upstream tests using that image in pull requests (Ansible 2.9) and on the nightly tests (all supported Ansible versions). --- molecule/c8s-build/Dockerfile | 30 ++++++++++++++++++++++++ molecule/c8s-build/molecule.yml | 18 ++++++++++++++ molecule/c8s/molecule.yml | 19 +++++++++++++++ tests/azure/azure-pipelines.yml | 15 ++++++++++-- tests/azure/build-containers.yml | 6 +++++ tests/azure/nightly.yml | 40 +++++++++++++++++++++++++++++++- 6 files changed, 125 insertions(+), 3 deletions(-) create mode 100644 molecule/c8s-build/Dockerfile create mode 100644 molecule/c8s-build/molecule.yml create mode 100644 molecule/c8s/molecule.yml diff --git a/molecule/c8s-build/Dockerfile b/molecule/c8s-build/Dockerfile new file mode 100644 index 00000000..7bdc1764 --- /dev/null +++ b/molecule/c8s-build/Dockerfile @@ -0,0 +1,30 @@ +FROM quay.io/centos/centos:stream8 +ENV container=docker + +RUN rm -fv /var/cache/dnf/metadata_lock.pid; \ +dnf makecache; \ +dnf --assumeyes install \ + /usr/bin/python3 \ + /usr/bin/python3-config \ + /usr/bin/dnf-3 \ + sudo \ + bash \ + systemd \ + procps-ng \ + iproute && \ +dnf clean all; \ +(cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == systemd-tmpfiles-setup.service ] || rm -f $i; done); \ +rm -f /lib/systemd/system/multi-user.target.wants/*;\ +rm -f /etc/systemd/system/*.wants/*;\ +rm -f /lib/systemd/system/local-fs.target.wants/*; \ +rm -f /lib/systemd/system/sockets.target.wants/*udev*; \ +rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \ +rm -f /lib/systemd/system/basic.target.wants/*;\ +rm -f /lib/systemd/system/anaconda.target.wants/*; \ +rm -rf /var/cache/dnf/; + +STOPSIGNAL RTMIN+3 + +VOLUME ["/sys/fs/cgroup"] + +CMD ["/usr/sbin/init"] diff --git a/molecule/c8s-build/molecule.yml b/molecule/c8s-build/molecule.yml new file mode 100644 index 00000000..86d5d610 --- /dev/null +++ b/molecule/c8s-build/molecule.yml @@ -0,0 +1,18 @@ +--- +driver: + name: docker +platforms: + - name: c8s-build + image: "quay.io/centos/centos:stream8" + dockerfile: Dockerfile + hostname: ipaserver.test.local + dns_servers: + - 8.8.8.8 + volumes: + - /sys/fs/cgroup:/sys/fs/cgroup:ro + command: /usr/sbin/init + privileged: true +provisioner: + name: ansible + playbooks: + prepare: ../resources/playbooks/prepare-build.yml diff --git a/molecule/c8s/molecule.yml b/molecule/c8s/molecule.yml new file mode 100644 index 00000000..79f35c54 --- /dev/null +++ b/molecule/c8s/molecule.yml @@ -0,0 +1,19 @@ +--- +driver: + name: docker +platforms: + - name: c8s + image: quay.io/ansible-freeipa/upstream-tests:c8s + pre_build_image: true + hostname: ipaserver.test.local + dns_servers: + - 127.0.0.1 + volumes: + - /sys/fs/cgroup:/sys/fs/cgroup:ro + command: /usr/sbin/init + privileged: true +provisioner: + name: ansible + playbooks: + prepare: ../resources/playbooks/prepare.yml +prerun: false diff --git a/tests/azure/azure-pipelines.yml b/tests/azure/azure-pipelines.yml index b1cf3469..d188fd54 100644 --- a/tests/azure/azure-pipelines.yml +++ b/tests/azure/azure-pipelines.yml @@ -18,9 +18,9 @@ stages: scenario: fedora-latest ansible_version: ">=2.9,<2.10" -# CentOS 9 +# CentOS 9 Stream -- stage: CentOS9_Ansible_2_9 +- stage: c9s_Ansible_2_9 dependsOn: [] jobs: - template: templates/group_tests.yml @@ -29,6 +29,17 @@ stages: scenario: centos-9 ansible_version: ">=2.9,<2.10" +# CentOS 8 Stream + +- stage: c8s_Ansible_2_9 + dependsOn: [] + jobs: + - template: templates/group_tests.yml + parameters: + build_number: $(Build.BuildNumber) + scenario: c8s + ansible_version: ">=2.9,<2.10" + # CentOS 8 - stage: CentOS8_Ansible_2_9 diff --git a/tests/azure/build-containers.yml b/tests/azure/build-containers.yml index 633eb825..9bdc5521 100644 --- a/tests/azure/build-containers.yml +++ b/tests/azure/build-containers.yml @@ -27,6 +27,12 @@ jobs: container_name: centos-8 build_scenario_name: centos-8-build +- template: templates/build_container.yml + parameters: + job_name_suffix: C8S + container_name: c8s + build_scenario_name: c8s-build + - template: templates/build_container.yml parameters: job_name_suffix: Centos9 diff --git a/tests/azure/nightly.yml b/tests/azure/nightly.yml index 2bef4cbd..9c17a6f9 100644 --- a/tests/azure/nightly.yml +++ b/tests/azure/nightly.yml @@ -52,7 +52,7 @@ stages: scenario: fedora-latest ansible_version: "" -# CentoOS 9 +# CentoOS 9 Stream - stage: CentOS9_Ansible_2_9 dependsOn: [] @@ -81,6 +81,44 @@ stages: scenario: centos-9 ansible_version: "" +# CentOS 8 Stream + +- stage: c8s_Ansible_2_9 + dependsOn: [] + jobs: + - template: templates/group_tests.yml + parameters: + build_number: $(Build.BuildNumber) + scenario: c8s + ansible_version: ">=2.9,<2.10" + +- stage: c8s_Ansible_Core_2_11 + dependsOn: [] + jobs: + - template: templates/group_tests.yml + parameters: + build_number: $(Build.BuildNumber) + scenario: centos-8 + ansible_version: "-core >=2.11,<2.12" + +- stage: c8s_Ansible_Core_2_12 + dependsOn: [] + jobs: + - template: templates/group_tests.yml + parameters: + build_number: $(Build.BuildNumber) + scenario: c8s + ansible_version: "-core >=2.12,<2.13" + +- stage: c8s_Ansible_latest + dependsOn: [] + jobs: + - template: templates/group_tests.yml + parameters: + build_number: $(Build.BuildNumber) + scenario: c8s + ansible_version: "" + # CentOS 8 - stage: CentOS8_Ansible_2_9 From c89f6624b57cfa8590c90fd0352869958df1725b Mon Sep 17 00:00:00 2001 From: Rafael Guterres Jeffman Date: Mon, 17 Jan 2022 09:31:45 -0300 Subject: [PATCH 2/3] upstream CI: Update Python version when building containers. Newer Ansible versions will require at least Python 3.8 to be used, and the build containers pipeline was requiring Python 3.6, which is EOL. This patch requests the latest Python version available for the controller, and allows it to be configured to a specific version if, and when, needed. --- molecule/c8s-build/molecule.yml | 1 + tests/azure/azure-pipelines.yml | 20 +++--- tests/azure/build-containers.yml | 10 +-- tests/azure/nightly.yml | 74 +++++++++++------------ tests/azure/templates/build_container.yml | 5 +- 5 files changed, 57 insertions(+), 53 deletions(-) diff --git a/molecule/c8s-build/molecule.yml b/molecule/c8s-build/molecule.yml index 86d5d610..88552151 100644 --- a/molecule/c8s-build/molecule.yml +++ b/molecule/c8s-build/molecule.yml @@ -16,3 +16,4 @@ provisioner: name: ansible playbooks: prepare: ../resources/playbooks/prepare-build.yml +prerun: false diff --git a/tests/azure/azure-pipelines.yml b/tests/azure/azure-pipelines.yml index d188fd54..199cf8e9 100644 --- a/tests/azure/azure-pipelines.yml +++ b/tests/azure/azure-pipelines.yml @@ -40,16 +40,16 @@ stages: scenario: c8s ansible_version: ">=2.9,<2.10" -# CentOS 8 - -- stage: CentOS8_Ansible_2_9 - dependsOn: [] - jobs: - - template: templates/group_tests.yml - parameters: - build_number: $(Build.BuildNumber) - scenario: centos-8 - ansible_version: ">=2.9,<2.10" +# # CentOS 8 +# +# - stage: CentOS8_Ansible_2_9 +# dependsOn: [] +# jobs: +# - template: templates/group_tests.yml +# parameters: +# build_number: $(Build.BuildNumber) +# scenario: centos-8 +# ansible_version: ">=2.9,<2.10" # CentOS 7 diff --git a/tests/azure/build-containers.yml b/tests/azure/build-containers.yml index 9bdc5521..000b542c 100644 --- a/tests/azure/build-containers.yml +++ b/tests/azure/build-containers.yml @@ -21,11 +21,11 @@ jobs: container_name: centos-7 build_scenario_name: centos-7-build -- template: templates/build_container.yml - parameters: - job_name_suffix: Centos8 - container_name: centos-8 - build_scenario_name: centos-8-build +# - template: templates/build_container.yml +# parameters: +# job_name_suffix: Centos8 +# container_name: centos-8 +# build_scenario_name: centos-8-build - template: templates/build_container.yml parameters: diff --git a/tests/azure/nightly.yml b/tests/azure/nightly.yml index 9c17a6f9..ef97ed99 100644 --- a/tests/azure/nightly.yml +++ b/tests/azure/nightly.yml @@ -119,43 +119,43 @@ stages: scenario: c8s ansible_version: "" -# CentOS 8 - -- stage: CentOS8_Ansible_2_9 - dependsOn: [] - jobs: - - template: templates/group_tests.yml - parameters: - build_number: $(Build.BuildNumber) - scenario: centos-8 - ansible_version: ">=2.9,<2.10" - -- stage: CentOS8_Ansible_Core_2_11 - dependsOn: [] - jobs: - - template: templates/group_tests.yml - parameters: - build_number: $(Build.BuildNumber) - scenario: centos-8 - ansible_version: "-core >=2.11,<2.12" - -- stage: CentOS8_Ansible_Core_2_12 - dependsOn: [] - jobs: - - template: templates/group_tests.yml - parameters: - build_number: $(Build.BuildNumber) - scenario: centos-8 - ansible_version: "-core >=2.12,<2.13" - -- stage: CentOS8_Ansible_latest - dependsOn: [] - jobs: - - template: templates/group_tests.yml - parameters: - build_number: $(Build.BuildNumber) - scenario: centos-8 - ansible_version: "" +# # CentOS 8 +# +# - stage: CentOS8_Ansible_2_9 +# dependsOn: [] +# jobs: +# - template: templates/group_tests.yml +# parameters: +# build_number: $(Build.BuildNumber) +# scenario: centos-8 +# ansible_version: ">=2.9,<2.10" +# +# - stage: CentOS8_Ansible_Core_2_11 +# dependsOn: [] +# jobs: +# - template: templates/group_tests.yml +# parameters: +# build_number: $(Build.BuildNumber) +# scenario: centos-8 +# ansible_version: "-core >=2.11,<2.12" +# +# - stage: CentOS8_Ansible_Core_2_12 +# dependsOn: [] +# jobs: +# - template: templates/group_tests.yml +# parameters: +# build_number: $(Build.BuildNumber) +# scenario: centos-8 +# ansible_version: "-core >=2.12,<2.13" +# +# - stage: CentOS8_Ansible_latest +# dependsOn: [] +# jobs: +# - template: templates/group_tests.yml +# parameters: +# build_number: $(Build.BuildNumber) +# scenario: centos-8 +# ansible_version: "" # CentOS 7 diff --git a/tests/azure/templates/build_container.yml b/tests/azure/templates/build_container.yml index b474c964..7d5c1fb0 100644 --- a/tests/azure/templates/build_container.yml +++ b/tests/azure/templates/build_container.yml @@ -6,6 +6,9 @@ parameters: type: string - name: build_scenario_name type: string + - name: python_version + type: string + default: 3.x jobs: - job: BuildTestImage${{ parameters.job_name_suffix }} @@ -13,7 +16,7 @@ jobs: steps: - task: UsePythonVersion@0 inputs: - versionSpec: '3.6' + versionSpec: '${{ parameters.python_version }}' - script: python -m pip install --upgrade pip setuptools wheel ansible displayName: Install tools From 7a1bf986a8aff5315da7de7d91c221eb112810bd Mon Sep 17 00:00:00 2001 From: Rafael Guterres Jeffman Date: Tue, 15 Feb 2022 13:24:34 -0300 Subject: [PATCH 3/3] upstream CI: Use fedora-latest as default test container. With the removal of CentOS 8 container, the available Fedora latest image will be used for tests, if a specific container is not given. --- tests/azure/templates/group_tests.yml | 2 +- tests/azure/templates/playbook_tests.yml | 2 +- tests/azure/templates/pytest_tests.yml | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/azure/templates/group_tests.yml b/tests/azure/templates/group_tests.yml index 5fe0c7a2..e3e67fa2 100644 --- a/tests/azure/templates/group_tests.yml +++ b/tests/azure/templates/group_tests.yml @@ -2,7 +2,7 @@ parameters: - name: scenario type: string - default: centos-8 + default: fedora-latest - name: build_number type: string - name: ansible_version diff --git a/tests/azure/templates/playbook_tests.yml b/tests/azure/templates/playbook_tests.yml index 299db692..09775045 100644 --- a/tests/azure/templates/playbook_tests.yml +++ b/tests/azure/templates/playbook_tests.yml @@ -8,7 +8,7 @@ parameters: default: 1 - name: scenario type: string - default: centos-8 + default: fedora-latest - name: ansible_version type: string default: "" diff --git a/tests/azure/templates/pytest_tests.yml b/tests/azure/templates/pytest_tests.yml index 3d8883c1..92783c52 100644 --- a/tests/azure/templates/pytest_tests.yml +++ b/tests/azure/templates/pytest_tests.yml @@ -4,6 +4,7 @@ parameters: type: string - name: scenario type: string + default: fedora-latest - name: ansible_version type: string default: ""