POC: Enable tox-molecule on ensure-tox
This enables local multi-platform testing of ensure-tox role via a molecule scenario that tests the role using docker containers. Change-Id: Ibaeb21281d6db0a802638fd5dd39aa4cb825a09d
This commit is contained in:
parent
f6a13e1504
commit
63ad0b170a
|
@ -0,0 +1,7 @@
|
|||
# when set, it will always install latest version of tox using --user
|
||||
# be aware that this may break /usr/bin/tox executable due to changed internals
|
||||
tox_upgrade: false
|
||||
tox_condition: tox
|
||||
tox_environment:
|
||||
PIP_DISABLE_PIP_VERSION_CHECK: "1"
|
||||
PIP_NO_WARN_SCRIPT_LOCATION: "1"
|
|
@ -0,0 +1,18 @@
|
|||
# Molecule managed
|
||||
|
||||
{% if item.registry is defined %}
|
||||
FROM {{ item.registry.url }}/{{ item.image }}
|
||||
{% else %}
|
||||
FROM {{ item.image }}
|
||||
{% endif %}
|
||||
|
||||
USER root
|
||||
|
||||
RUN if [ $(command -v apt-get) ]; then apt-get update && apt-get install -y python sudo bash ca-certificates python-apt {{ item.pkg_extras | default('') }} && apt-get clean; \
|
||||
elif [ $(command -v dnf) ]; then dnf makecache && dnf --assumeyes install python3 sudo python3-devel python3-dnf bash {{ item.pkg_extras | default('') }} && dnf clean all; \
|
||||
elif [ $(command -v yum) ]; then yum makecache fast && yum install -y python sudo yum-plugin-ovl python-setuptools bash {{ item.pkg_extras | default('') }} && sed -i 's/plugins=0/plugins=1/g' /etc/yum.conf && yum clean all; \
|
||||
elif [ $(command -v zypper) ]; then zypper refresh && zypper install -y python sudo bash python-xml {{ item.pkg_extras | default('') }} && zypper clean -a; \
|
||||
elif [ $(command -v apk) ]; then apk update && apk add --no-cache python sudo bash ca-certificates {{ item.pkg_extras | default('') }}; \
|
||||
elif [ $(command -v xbps-install) ]; then xbps-install -Syu && xbps-install -y python sudo bash ca-certificates {{ item.pkg_extras | default('') }} && xbps-remove -O; fi
|
||||
|
||||
CMD ["sh", "-c", "while true; do sleep 10000; done"]N
|
|
@ -0,0 +1,41 @@
|
|||
---
|
||||
# The MOLECULE_ vars used here are not officially endorsed by molecule, but we
|
||||
# hope a future version will add implicit support for them.
|
||||
driver:
|
||||
name: docker
|
||||
platforms:
|
||||
|
||||
- name: centos7
|
||||
hostname: centos7
|
||||
image: centos:7
|
||||
dockerfile: Dockerfile.j2
|
||||
easy_install:
|
||||
- pip
|
||||
|
||||
- name: fedora
|
||||
hostname: fedora
|
||||
image: fedora:latest
|
||||
dockerfile: Dockerfile.j2
|
||||
easy_install:
|
||||
- pip
|
||||
|
||||
- name: ubuntu1804
|
||||
hostname: ubuntu1804
|
||||
image: ubuntu:18.04
|
||||
dockerfile: Dockerfile.j2
|
||||
|
||||
provisioner:
|
||||
name: ansible
|
||||
log: true
|
||||
inventory:
|
||||
host_vars:
|
||||
fedora:
|
||||
ansible_python_interpreter: /usr/bin/python3
|
||||
scenario:
|
||||
test_sequence:
|
||||
- destroy
|
||||
- create
|
||||
- converge
|
||||
- destroy
|
||||
lint:
|
||||
enabled: false
|
|
@ -0,0 +1,60 @@
|
|||
---
|
||||
|
||||
- name: Converge
|
||||
hosts: all
|
||||
gather_facts: true
|
||||
tasks:
|
||||
|
||||
- name: Include OS specific variables
|
||||
include_vars: "{{ item }}"
|
||||
failed_when: false
|
||||
loop:
|
||||
- "family-{{ ansible_os_family | lower }}.yml"
|
||||
- "family-{{ ansible_os_family | lower }}-{{ ansible_distribution_major_version | lower }}.yml"
|
||||
- "{{ ansible_distribution | lower }}.yml"
|
||||
- "{{ ansible_distribution | lower }}-{{ ansible_distribution_major_version | lower }}.yml"
|
||||
- "{{ ansible_distribution | lower }}-{{ ansible_distribution_version.split('.')[0:2] | join('-') | lower }}.yml"
|
||||
- "{{ ansible_distribution | lower }}-{{ ansible_distribution_version.split('.')[0:3] | join('-') | lower }}.yml"
|
||||
|
||||
- name: installing requirements
|
||||
package:
|
||||
name: "{{ pkg_tox_pre|default('curl') }}"
|
||||
|
||||
# current code in ensure-tox makes the assumption that `pip` is installed.
|
||||
- name: ensure-pip
|
||||
become: yes
|
||||
environment:
|
||||
PIP_NO_WARN_SCRIPT_LOCATION: "1"
|
||||
shell: |
|
||||
set -exu
|
||||
{{ ansible_python.executable }} -m pip --version || {
|
||||
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
|
||||
{{ ansible_python.executable }} get-pip.py
|
||||
}
|
||||
{{ ansible_python.executable }} -m pip --version
|
||||
|
||||
- name: include ensure-tox before installing system tox
|
||||
include_role:
|
||||
name: ensure-tox
|
||||
|
||||
- name: include ensure-tox with upgrade
|
||||
vars:
|
||||
tox_upgrade: true
|
||||
include_role:
|
||||
name: ensure-tox
|
||||
|
||||
- name: installing system tox
|
||||
package:
|
||||
name: "{{ pkg_tox | default('python-tox') }}"
|
||||
update_cache: |
|
||||
{{ ansible_version.full is version_compare('2.7.0', '>=') or omit }}
|
||||
|
||||
- name: include ensure-tox after installing system tox
|
||||
include_role:
|
||||
name: ensure-tox
|
||||
|
||||
- name: include ensure-tox with upgrade after installing system tox
|
||||
vars:
|
||||
tox_upgrade: true
|
||||
include_role:
|
||||
name: ensure-tox
|
|
@ -0,0 +1,3 @@
|
|||
pkg_tox_pre:
|
||||
- curl
|
||||
- epel-release
|
|
@ -0,0 +1 @@
|
|||
pkg_tox: python3-tox
|
33
tox.ini
33
tox.ini
|
@ -1,9 +1,26 @@
|
|||
[tox]
|
||||
minversion = 1.6
|
||||
skipsdist = True
|
||||
envlist = linters
|
||||
envlist = linters,molecule
|
||||
|
||||
[testenv]
|
||||
setenv =
|
||||
ANSIBLE_FORCE_COLOR=1
|
||||
ANSIBLE_INVENTORY={toxinidir}/test/hosts.ini
|
||||
ANSIBLE_NOCOWS=1
|
||||
ANSIBLE_RETRY_FILES_ENABLED=0
|
||||
ANSIBLE_STDOUT_CALLBACK=debug
|
||||
PY_COLORS=1
|
||||
VIRTUAL_ENV={envdir}
|
||||
# Avoid 2020-01-01 warnings: https://github.com/pypa/pip/issues/6207
|
||||
PYTHONWARNINGS=ignore:DEPRECATION::pip._internal.cli.base_command
|
||||
PIP_DISABLE_PIP_VERSION_CHECK=1
|
||||
passenv =
|
||||
ANSIBLE_*
|
||||
DOCKER_*
|
||||
MOLECULE_*
|
||||
SSH_AUTH_SOCK
|
||||
TERM
|
||||
basepython = python3
|
||||
install_command = pip install {opts} {packages}
|
||||
deps = -r{toxinidir}/test-requirements.txt
|
||||
|
@ -55,6 +72,20 @@ commands =
|
|||
[testenv:venv]
|
||||
commands = {posargs}
|
||||
|
||||
[testenv:molecule]
|
||||
deps =
|
||||
ansi2html # GPL (soft-dependency of pytest-html)
|
||||
molecule[docker]>=2.22rc6 # MIT
|
||||
ansible>=2.8.0 # GPL (on purpose newer than the one in test-requirements)
|
||||
pytest # MIT
|
||||
pytest-cov # MIT
|
||||
pytest-molecule # MIT
|
||||
pytest-html # MPL 2.0
|
||||
pytest-xdist # MIT
|
||||
selinux # MIT
|
||||
commands =
|
||||
python -m pytest -ra --continue-on-collection-errors --html={envlogdir}/reports.html --self-contained-html {tty:-s} {posargs}
|
||||
|
||||
[flake8]
|
||||
# These are ignored intentionally in openstack-infra projects;
|
||||
# please don't submit patches that solely correct them or enable them.
|
||||
|
|
|
@ -8,11 +8,13 @@
|
|||
- zuul-tox-docs
|
||||
- tox-py27
|
||||
- tox-py35
|
||||
- tox-molecule
|
||||
gate:
|
||||
jobs:
|
||||
- zuul-tox-docs
|
||||
- tox-py27
|
||||
- tox-py35
|
||||
- tox-molecule
|
||||
promote:
|
||||
jobs:
|
||||
- zuul-promote-docs
|
||||
|
|
Loading…
Reference in New Issue