Merge "[Testing Infra] Apply here the improvements done to tripleo-validations"

This commit is contained in:
Zuul 2021-04-06 11:02:59 +00:00 committed by Gerrit Code Review
commit fc4528ac11
25 changed files with 118 additions and 57 deletions

View File

@ -1,6 +1,5 @@
export VALIDATIONS_COMMON_WORKPATH="$(dirname $(readlink -f ${BASH_SOURCE[0]}))" export VALIDATIONS_COMMON_WORKPATH="$(dirname $(readlink -f ${BASH_SOURCE[0]}))"
export ANSIBLE_STDOUT_CALLBACK=debug export ANSIBLE_STDOUT_CALLBACK=debug
export ANSIBLE_CALLBACK_PLUGINS="${VALIDATIONS_COMMON_WORKPATH}/validations_common/callback_plugins"
export ANSIBLE_LIBRARY="${VALIDATIONS_COMMON_WORKPATH}/validations_common/library" export ANSIBLE_LIBRARY="${VALIDATIONS_COMMON_WORKPATH}/validations_common/library"
# TODO(gchamoul): uncomment once we host lookup plugins # TODO(gchamoul): uncomment once we host lookup plugins

View File

@ -24,6 +24,10 @@ libxml2-devel [platform:rpm]
libxslt-devel [platform:rpm] libxslt-devel [platform:rpm]
libxslt1-dev [platform:dpkg] libxslt1-dev [platform:dpkg]
libxslt-dev [platform:apk] libxslt-dev [platform:apk]
# RH Mechanisms
python-rhsm-certificates [platform: redhat]
podman [platform:rpm] podman [platform:rpm]
python-devel [platform:rpm !platform:rhel-8 !platform:centos-8] python-devel [platform:rpm !platform:rhel-8 !platform:centos-8]
python3-devel [platform:rpm !platform:rhel-7 !platform:centos-7] python3-devel [platform:rpm !platform:rhel-7 !platform:centos-7]

View File

@ -1,11 +1,11 @@
# this is required for the molecule jobs # this is required for the molecule jobs
ansible>=2.8,!=2.8.9,!=2.9.12,<2.10.0 ansible>=2.8,!=2.8.9,!=2.9.12,<2.10.0
ansi2html ansi2html
jinja2>=2.8.0,<3
mock
molecule>=3.0,<3.1
pytest pytest
pytest-cov pytest-cov
pytest-html pytest-html
pytest-xdist pytest-xdist
mock
molecule>=3.0,<3.1
selinux # MIT selinux # MIT
jinja2>=2.8.0,<3

View File

@ -1,6 +1,10 @@
--- ---
- hosts: all - hosts: all
pre_tasks: pre_tasks:
- name: Set project path fact
set_fact:
validations_common_project_path: "{{ ansible_user_dir }}/{{ zuul.projects['opendev.org/openstack/validations-common'].src_dir }}"
- name: Ensure output dirs - name: Ensure output dirs
file: file:
path: "{{ ansible_user_dir }}/zuul-output/logs" path: "{{ ansible_user_dir }}/zuul-output/logs"
@ -18,18 +22,25 @@
pip: pip:
name: "bindep" name: "bindep"
virtualenv: "{{ ansible_user_dir }}/test-python" virtualenv: "{{ ansible_user_dir }}/test-python"
virtualenv_command: "{{ ensure_pip_virtualenv_command }}"
virtualenv_site_packages: true virtualenv_site_packages: true
- name: Run bindep - name: Run bindep
shell: |- shell: |-
. {{ ansible_user_dir }}/test-python/bin/activate . {{ ansible_user_dir }}/test-python/bin/activate
{{ ansible_user_dir }}/{{ zuul.project.src_dir }}/scripts/bindep-install {{ validations_common_project_path }}/scripts/bindep-install
become: true become: true
changed_when: false changed_when: false
- name: Ensure a recent version of pip is installed in virtualenv
pip:
name: "pip>=19.1.1"
virtualenv: "{{ ansible_user_dir }}/test-python"
virtualenv_command: "{{ ensure_pip_virtualenv_command }}"
- name: Setup test-python - name: Setup test-python
pip: pip:
requirements: "{{ ansible_user_dir }}/{{ zuul.project.src_dir }}/molecule-requirements.txt" requirements: "{{ validations_common_project_path }}/molecule-requirements.txt"
virtualenv: "{{ ansible_user_dir }}/test-python" virtualenv: "{{ ansible_user_dir }}/test-python"
virtualenv_command: "{{ ensure_pip_virtualenv_command }}" virtualenv_command: "{{ ensure_pip_virtualenv_command }}"
virtualenv_site_packages: true virtualenv_site_packages: true
@ -76,6 +87,18 @@
* hard nproc 4096 * hard nproc 4096
dest: /etc/security/limits.d/containers.conf dest: /etc/security/limits.d/containers.conf
- name: Install epel-release
package:
name: epel-release
state: present
- name: Be sure to enable epel repo
become: true
command: >-
dnf config-manager --set-enabled epel
args:
warn: false
- name: Copy repos directory to opt workspace - name: Copy repos directory to opt workspace
copy: copy:
src: /etc/yum.repos.d src: /etc/yum.repos.d

View File

@ -4,8 +4,9 @@
- name: set basic zuul fact - name: set basic zuul fact
set_fact: set_fact:
zuul: zuul:
project: projects:
src_dir: "{{ tripleo_src }}" "opendev.org/openstack/validations-common":
src_dir: "{{ tripleo_src }}"
ansible_connection: ssh ansible_connection: ssh
- import_playbook: pre.yml - import_playbook: pre.yml

View File

@ -2,18 +2,38 @@
- hosts: all - hosts: all
environment: environment:
ANSIBLE_LOG_PATH: "{{ ansible_user_dir }}/zuul-output/logs/ansible-execution.log" ANSIBLE_LOG_PATH: "{{ ansible_user_dir }}/zuul-output/logs/ansible-execution.log"
pre_tasks:
- name: Set project path fact
set_fact:
validations_common_project_path: "{{ ansible_user_dir }}/{{ zuul.projects['opendev.org/openstack/validations-common'].src_dir }}"
- name: Set roles path fact
set_fact:
validations_common_roles_paths:
- "{{ validations_common_project_path }}/validations_common/roles"
- "/usr/share/ansible/roles"
- name: Set library path fact
set_fact:
validations_common_library_paths:
- "{{ validations_common_project_path }}/validations_common/library"
- "/usr/share/ansible/library"
tasks: tasks:
- name: Run role test job - name: Run role test job
shell: |- shell: |-
. {{ ansible_user_dir }}/test-python/bin/activate . {{ ansible_user_dir }}/test-python/bin/activate
. {{ ansible_user_dir }}/{{ zuul.project.src_dir }}/ansible-test-env.rc . {{ validations_common_project_path }}/ansible-test-env.rc
pytest --color=no \ pytest --color=yes \
--html={{ ansible_user_dir }}/zuul-output/logs/reports.html \ --html={{ ansible_user_dir }}/zuul-output/logs/reports.html \
--self-contained-html \ --self-contained-html \
--ansible-args='{{ tripleo_job_ansible_args | default("") }}' \ --ansible-args='{{ tripleo_job_ansible_args | default("") }}' \
{{ ansible_user_dir }}/{{ zuul.project.src_dir }}/tests/test_molecule.py {{ validations_common_project_path }}/tests/test_molecule.py
args: args:
chdir: chdir:
"{{ ansible_user_dir }}/{{ zuul.project.src_dir }}/validations_common/roles/{{ validations_common_role_name }}" "{{ validations_common_project_path }}/validations_common/roles/{{ validations_common_role_name }}"
executable: /bin/bash executable: /bin/bash
changed_when: false environment:
ANSIBLE_ROLES_PATH: "{{ validations_common_roles_paths | join(':') }}"
ANSIBLE_LIBRARY: "{{ validations_common_library_paths | join(':') }}"

View File

@ -15,16 +15,25 @@
# under the License. # under the License.
## Shell Opts ---------------------------------------------------------------- ## Functions -----------------------------------------------------------------
function usage {
set -o pipefail echo "Usage: ROLE_NAME=ROLE_NAME ${0##*/} or ${0##*/} ROLE_NAME"
set -xeuo }
## Vars ---------------------------------------------------------------------- ## Vars ----------------------------------------------------------------------
export PROJECT_DIR="$(dirname $(readlink -f ${BASH_SOURCE[0]}))/../" export PROJECT_DIR="$(dirname $(readlink -f ${BASH_SOURCE[0]}))/../"
if [ "${ROLE_NAME}x" = "x" -a "${1}x" = "x" ]; then
usage;
exit 2
fi
export ROLE_NAME="${ROLE_NAME:-$1}" export ROLE_NAME="${ROLE_NAME:-$1}"
export TRIPLEO_JOB_ANSIBLE_ARGS=${TRIPLEO_JOB_ANSIBLE_ARGS:-"-v"} export TRIPLEO_JOB_ANSIBLE_ARGS=${TRIPLEO_JOB_ANSIBLE_ARGS:-""}
## Shell Opts ----------------------------------------------------------------
set -o pipefail
set -xeuo
## Main ---------------------------------------------------------------------- ## Main ----------------------------------------------------------------------
@ -47,8 +56,11 @@ sudo touch /etc/ci/mirror_info.sh
# Create a virtual env # Create a virtual env
"${PYTHON_EXEC}" -m virtualenv --system-site-packages "${HOME}/test-python" "${PYTHON_EXEC}" -m virtualenv --system-site-packages "${HOME}/test-python"
# Activate a virtual env
PS1="[\u@\h \W]\$" source "${HOME}/test-python/bin/activate"
# Run bindep # Run bindep
"${HOME}/test-python/bin/pip" install pip setuptools bindep --upgrade "${HOME}/test-python/bin/pip" install "pip>=19.1.1" setuptools bindep --upgrade
"${PROJECT_DIR}/scripts/bindep-install" "${PROJECT_DIR}/scripts/bindep-install"
# Install local requirements # Install local requirements
@ -61,7 +73,6 @@ fi
-r "${PROJECT_DIR}/molecule-requirements.txt" -r "${PROJECT_DIR}/molecule-requirements.txt"
# Run local test # Run local test
PS1="[\u@\h \W]\$" source "${HOME}/test-python/bin/activate"
source "${PROJECT_DIR}/ansible-test-env.rc" source "${PROJECT_DIR}/ansible-test-env.rc"
export ANSIBLE_ROLES_PATH="${ANSIBLE_ROLES_PATH}:${HOME}/zuul-jobs/roles" export ANSIBLE_ROLES_PATH="${ANSIBLE_ROLES_PATH}:${HOME}/zuul-jobs/roles"
ansible-playbook -i "${PROJECT_DIR}/tests/hosts.ini" \ ansible-playbook -i "${PROJECT_DIR}/tests/hosts.ini" \
@ -71,4 +82,5 @@ ansible-playbook -i "${PROJECT_DIR}/tests/hosts.ini" \
-e "ansible_user=${USER}" \ -e "ansible_user=${USER}" \
-e "ansible_user_dir=${HOME}" \ -e "ansible_user_dir=${HOME}" \
"${PROJECT_DIR}/tests/prepare-test-host.yml" \ "${PROJECT_DIR}/tests/prepare-test-host.yml" \
"${PROJECT_DIR}/playbooks/molecule/run-local.yml" "${PROJECT_DIR}/playbooks/molecule/run-local.yml" \
-v

View File

@ -44,11 +44,9 @@
mode: "0700" mode: "0700"
- name: Create ssh key pair - name: Create ssh key pair
user: openssh_keypair:
name: "{{ ansible_user }}" path: "{{ ansible_user_dir }}/.ssh/id_rsa"
generate_ssh_key: true size: 2048
ssh_key_bits: 2048
ssh_key_file: "{{ ansible_user_dir }}/.ssh/id_rsa"
- name: Slurp pub key - name: Slurp pub key
slurp: slurp:

View File

@ -11,7 +11,7 @@ platforms:
registry: registry:
url: registry.access.redhat.com url: registry.access.redhat.com
dockerfile: Dockerfile dockerfile: Dockerfile
pkg_extras: python*setuptools python*-PyYAML pkg_extras: python*setuptools python*-pyyaml
volumes: volumes:
- /etc/ci/mirror_info.sh:/etc/ci/mirror_info.sh:ro - /etc/ci/mirror_info.sh:/etc/ci/mirror_info.sh:ro
- /etc/pki/rpm-gpg:/etc/pki/rpm-gpg - /etc/pki/rpm-gpg:/etc/pki/rpm-gpg
@ -34,7 +34,7 @@ provisioner:
log: true log: true
env: env:
ANSIBLE_STDOUT_CALLBACK: yaml ANSIBLE_STDOUT_CALLBACK: yaml
ANSIBLE_LIBRARY: "../../../../library" ANSIBLE_LIBRARY: "${ANSIBLE_LIBRARY:-/usr/share/ansible/plugins/modules}"
scenario: scenario:
test_sequence: test_sequence:

View File

@ -34,6 +34,7 @@ provisioner:
log: true log: true
env: env:
ANSIBLE_STDOUT_CALLBACK: yaml ANSIBLE_STDOUT_CALLBACK: yaml
ANSIBLE_LIBRARY: "${ANSIBLE_LIBRARY:-/usr/share/ansible/plugins/modules}"
scenario: scenario:
test_sequence: test_sequence:

View File

@ -34,6 +34,7 @@ provisioner:
log: true log: true
env: env:
ANSIBLE_STDOUT_CALLBACK: yaml ANSIBLE_STDOUT_CALLBACK: yaml
ANSIBLE_LIBRARY: "${ANSIBLE_LIBRARY:-/usr/share/ansible/plugins/modules}"
scenario: scenario:
test_sequence: test_sequence:

View File

@ -11,7 +11,7 @@ platforms:
registry: registry:
url: registry.access.redhat.com url: registry.access.redhat.com
dockerfile: Dockerfile dockerfile: Dockerfile
pkg_extras: python*setuptools python*-PyYAML pkg_extras: python*setuptools python*-pyyaml
volumes: volumes:
- /etc/ci/mirror_info.sh:/etc/ci/mirror_info.sh:ro - /etc/ci/mirror_info.sh:/etc/ci/mirror_info.sh:ro
- /etc/pki/rpm-gpg:/etc/pki/rpm-gpg - /etc/pki/rpm-gpg:/etc/pki/rpm-gpg
@ -34,7 +34,7 @@ provisioner:
log: true log: true
env: env:
ANSIBLE_STDOUT_CALLBACK: yaml ANSIBLE_STDOUT_CALLBACK: yaml
ANSIBLE_LIBRARY: "../../../../library" ANSIBLE_LIBRARY: "${ANSIBLE_LIBRARY:-/usr/share/ansible/plugins/modules}"
scenario: scenario:
test_sequence: test_sequence:

View File

@ -34,6 +34,7 @@ provisioner:
log: true log: true
env: env:
ANSIBLE_STDOUT_CALLBACK: yaml ANSIBLE_STDOUT_CALLBACK: yaml
ANSIBLE_LIBRARY: "${ANSIBLE_LIBRARY:-/usr/share/ansible/plugins/modules}"
scenario: scenario:
test_sequence: test_sequence:

View File

@ -34,7 +34,7 @@ provisioner:
log: true log: true
env: env:
ANSIBLE_STDOUT_CALLBACK: yaml ANSIBLE_STDOUT_CALLBACK: yaml
ANSIBLE_LIBRARY: "../../../../library" ANSIBLE_LIBRARY: "${ANSIBLE_LIBRARY:-/usr/share/ansible/plugins/modules}"
scenario: scenario:
test_sequence: test_sequence:

View File

@ -34,6 +34,7 @@ provisioner:
log: true log: true
env: env:
ANSIBLE_STDOUT_CALLBACK: yaml ANSIBLE_STDOUT_CALLBACK: yaml
ANSIBLE_LIBRARY: "${ANSIBLE_LIBRARY:-/usr/share/ansible/plugins/modules}"
scenario: scenario:
test_sequence: test_sequence:

View File

@ -34,7 +34,7 @@ provisioner:
log: true log: true
env: env:
ANSIBLE_STDOUT_CALLBACK: yaml ANSIBLE_STDOUT_CALLBACK: yaml
ANSIBLE_LIBRARY: "../../../../library" ANSIBLE_LIBRARY: "${ANSIBLE_LIBRARY:-/usr/share/ansible/plugins/modules}"
scenario: scenario:
test_sequence: test_sequence:

View File

@ -34,7 +34,7 @@ provisioner:
log: true log: true
env: env:
ANSIBLE_STDOUT_CALLBACK: yaml ANSIBLE_STDOUT_CALLBACK: yaml
ANSIBLE_LIBRARY: "../../../../library" ANSIBLE_LIBRARY: "${ANSIBLE_LIBRARY:-/usr/share/ansible/plugins/modules}"
scenario: scenario:
test_sequence: test_sequence:

View File

@ -12,7 +12,7 @@ platforms:
url: registry.access.redhat.com url: registry.access.redhat.com
dockerfile: Dockerfile dockerfile: Dockerfile
command: /sbin/init command: /sbin/init
pkg_extras: python*-setuptools python*-enum34 python*-netaddr ruby python*-PyYAML pkg_extras: python*-setuptools python*-pyyaml
volumes: volumes:
- /etc/ci/mirror_info.sh:/etc/ci/mirror_info.sh:ro - /etc/ci/mirror_info.sh:/etc/ci/mirror_info.sh:ro
- /etc/pki/rpm-gpg:/etc/pki/rpm-gpg - /etc/pki/rpm-gpg:/etc/pki/rpm-gpg
@ -35,7 +35,7 @@ provisioner:
log: true log: true
env: env:
ANSIBLE_STDOUT_CALLBACK: yaml ANSIBLE_STDOUT_CALLBACK: yaml
ANSIBLE_LIBRARY: "../../../../library" ANSIBLE_LIBRARY: "${ANSIBLE_LIBRARY:-/usr/share/ansible/plugins/modules}"
scenario: scenario:
test_sequence: test_sequence:

View File

@ -11,7 +11,7 @@ platforms:
registry: registry:
url: registry.access.redhat.com url: registry.access.redhat.com
dockerfile: Dockerfile dockerfile: Dockerfile
pkg_extras: python*-setuptools python*-enum34 python*-netaddr ruby python*-PyYAML python*-libselinux pkg_extras: python*-setuptools python*-pyyaml python*-libselinux
command: /sbin/init command: /sbin/init
capabilities: capabilities:
- SYS_ADMIN - SYS_ADMIN
@ -36,7 +36,7 @@ provisioner:
log: true log: true
env: env:
ANSIBLE_STDOUT_CALLBACK: yaml ANSIBLE_STDOUT_CALLBACK: yaml
ANSIBLE_LIBRARY: "../../../../library" ANSIBLE_LIBRARY: "${ANSIBLE_LIBRARY:-/usr/share/ansible/plugins/modules}"
scenario: scenario:
test_sequence: test_sequence:

View File

@ -11,7 +11,7 @@ platforms:
registry: registry:
url: registry.access.redhat.com url: registry.access.redhat.com
dockerfile: Dockerfile dockerfile: Dockerfile
pkg_extras: python*-setuptools python*-enum34 python*-netaddr ruby python*-PyYAML pkg_extras: python*-setuptools python*-pyyaml
volumes: volumes:
- /etc/ci/mirror_info.sh:/etc/ci/mirror_info.sh:ro - /etc/ci/mirror_info.sh:/etc/ci/mirror_info.sh:ro
- /etc/pki/rpm-gpg:/etc/pki/rpm-gpg - /etc/pki/rpm-gpg:/etc/pki/rpm-gpg
@ -34,7 +34,7 @@ provisioner:
log: true log: true
env: env:
ANSIBLE_STDOUT_CALLBACK: yaml ANSIBLE_STDOUT_CALLBACK: yaml
ANSIBLE_LIBRARY: "../../../../library" ANSIBLE_LIBRARY: "${ANSIBLE_LIBRARY:-/usr/share/ansible/plugins/modules}"
scenario: scenario:
test_sequence: test_sequence:

View File

@ -5,13 +5,18 @@ driver:
log: true log: true
platforms: platforms:
- name: centos7 - name: ubi8
hostname: centos7 hostname: ubi8
image: centos:7 image: ubi8/ubi-init
pkg_extras: python-setuptools python-enum34 python-netaddr ruby epel-release PyYAML registry:
url: registry.access.redhat.com
dockerfile: Dockerfile
pkg_extras: python*-setuptools python*-pyyaml
volumes:
- /etc/ci/mirror_info.sh:/etc/ci/mirror_info.sh:ro - /etc/ci/mirror_info.sh:/etc/ci/mirror_info.sh:ro
easy_install: - /etc/pki/rpm-gpg:/etc/pki/rpm-gpg
- pip - /opt/yum.repos.d:/etc/yum.repos.d:rw
privileged: true
command: /sbin/init command: /sbin/init
environment: &env environment: &env
http_proxy: "{{ lookup('env', 'http_proxy') }}" http_proxy: "{{ lookup('env', 'http_proxy') }}"
@ -19,23 +24,18 @@ platforms:
ulimits: &ulimit ulimits: &ulimit
- host - host
- name: centos8
hostname: centos8
image: centos:8
command: /sbin/init
pkg_extras: python*-setuptools python*-enum34 python*-netaddr ruby python*-PyYAML
volumes:
- /etc/ci/mirror_info.sh:/etc/ci/mirror_info.sh:ro
environment:
<<: *env
ulimits: *ulimit
provisioner: provisioner:
name: ansible name: ansible
inventory:
hosts:
all:
hosts:
ubi8:
ansible_python_interpreter: /usr/bin/python3
log: true log: true
env: env:
ANSIBLE_STDOUT_CALLBACK: yaml ANSIBLE_STDOUT_CALLBACK: yaml
ANSIBLE_LIBRARY: "../../../../library" ANSIBLE_LIBRARY: "${ANSIBLE_LIBRARY:-/usr/share/ansible/plugins/modules}"
scenario: scenario:
test_sequence: test_sequence: