Create Tox InfraRed upstream job
Change-Id: Ib816520d63a51ae37a9be8f2036131bd58ecd054
This commit is contained in:
parent
7832a9d15c
commit
a9e9d5ee60
9
ansible.cfg
Normal file
9
ansible.cfg
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
[defaults]
|
||||||
|
host_key_checking = False
|
||||||
|
forks = 500
|
||||||
|
timeout = 30
|
||||||
|
force_color = 1
|
||||||
|
|
||||||
|
[ssh_connection]
|
||||||
|
pipelining = True
|
||||||
|
ssh_args = -o ControlMaster=auto -o ControlPersist=60s
|
24
bindep.txt
24
bindep.txt
@ -1,14 +1,24 @@
|
|||||||
# This file contains runtime (non-python) dependencies
|
# This file contains runtime (non-python) dependencies
|
||||||
# More info at: https://docs.openstack.org/infra/bindep/readme.html
|
# More info at: https://docs.openstack.org/infra/bindep/readme.html
|
||||||
|
|
||||||
libffi-dev [platform:dpkg]
|
|
||||||
libffi-devel [platform:rpm]
|
|
||||||
gcc [platform:rpm]
|
gcc [platform:rpm]
|
||||||
gcc [platform:dpkg]
|
gcc [platform:dpkg]
|
||||||
python3 [platform:dpkg]
|
|
||||||
python3 [platform:rpm]
|
git [platform:dpkg]
|
||||||
python3-dev [platform:dpkg]
|
git [platform:rpm]
|
||||||
python3-devel [platform:rpm]
|
|
||||||
|
iproute [platform:rpm]
|
||||||
|
|
||||||
|
libffi-devel [platform:rpm]
|
||||||
|
libffi-dev [platform:dpkg]
|
||||||
|
|
||||||
|
libselinux-python [platform:rpm]
|
||||||
|
|
||||||
openssl-devel [platform:rpm]
|
openssl-devel [platform:rpm]
|
||||||
libssl-dev [platform:dpkg]
|
libssl-dev [platform:dpkg]
|
||||||
iproute [platform:rpm]
|
|
||||||
|
python3 [platform:rpm]
|
||||||
|
python3 [platform:dpkg]
|
||||||
|
|
||||||
|
python3-devel [platform:rpm]
|
||||||
|
python3-dev [platform:dpkg]
|
||||||
|
72
infrared/plugin.spec
Normal file
72
infrared/plugin.spec
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
config:
|
||||||
|
plugin_type: test
|
||||||
|
entry_point: ../roles/tobiko/main.yml
|
||||||
|
|
||||||
|
subparsers:
|
||||||
|
tobiko:
|
||||||
|
description: Configure and Run Tobiko Test Cases
|
||||||
|
|
||||||
|
include_groups:
|
||||||
|
- "Ansible options"
|
||||||
|
- "Inventory"
|
||||||
|
- "Common options"
|
||||||
|
- "Answers file"
|
||||||
|
|
||||||
|
groups:
|
||||||
|
- title: Stages Control
|
||||||
|
options:
|
||||||
|
|
||||||
|
pre_run:
|
||||||
|
type: Bool
|
||||||
|
help: install and configure Tobiko test cases
|
||||||
|
|
||||||
|
run_tests:
|
||||||
|
type: Bool
|
||||||
|
help: run verification test cases
|
||||||
|
|
||||||
|
run_faults:
|
||||||
|
type: Bool
|
||||||
|
help: run disruptive operation test cases
|
||||||
|
|
||||||
|
post_run:
|
||||||
|
type: Bool
|
||||||
|
help: fetch artifacts after test case execution
|
||||||
|
|
||||||
|
- title: Install Options
|
||||||
|
options:
|
||||||
|
tox_dir:
|
||||||
|
type: Value
|
||||||
|
default: "{{ ansible_env.HOME }}/tobiko"
|
||||||
|
help: |
|
||||||
|
The directory where Tobiko will be installed and used
|
||||||
|
overcloudrc:
|
||||||
|
type: Value
|
||||||
|
default: "{{ ansible_env.HOME }}/overcloudrc"
|
||||||
|
help: |
|
||||||
|
The path to the overcloudrc file
|
||||||
|
floating_network:
|
||||||
|
type: Value
|
||||||
|
default: "public"
|
||||||
|
help: |
|
||||||
|
Name of overcloud's floating_network
|
||||||
|
tests:
|
||||||
|
type: Value
|
||||||
|
help: |
|
||||||
|
The set of tests to execute
|
||||||
|
default: scenario
|
||||||
|
results_dir_suffix:
|
||||||
|
type: Value
|
||||||
|
help: |
|
||||||
|
Suffix string to add to tobiko_results dir
|
||||||
|
example : default will be tobiko_results_1st
|
||||||
|
default: "1st"
|
||||||
|
refsec:
|
||||||
|
type: Value
|
||||||
|
help: |
|
||||||
|
specific gerrit patch refsec to
|
||||||
|
checkout, example:
|
||||||
|
--refsec refs/changes/66/665966/7
|
||||||
|
default: ''
|
7
playbooks/infrared/pre.yaml
Normal file
7
playbooks/infrared/pre.yaml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
- hosts: all
|
||||||
|
tasks:
|
||||||
|
- debug:
|
||||||
|
msg: |
|
||||||
|
TODO(fressi): prepare here host before executing tox -e infrared
|
71
tools/ci/ir
Executable file
71
tools/ci/ir
Executable file
@ -0,0 +1,71 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
source $(dirname "$0")/activate
|
||||||
|
source $(dirname "$0")/tox
|
||||||
|
|
||||||
|
set -eu
|
||||||
|
|
||||||
|
IR_VIRTUAL_ENV=$(realpath "${IR_VIRTUAL_ENV:-.tox/infrared}")
|
||||||
|
IR_REPO="https://github.com/redhat-openstack/infrared.git"
|
||||||
|
IR_BRANCH=${IR_BRANCH:-master}
|
||||||
|
IR_SOURCE_DIR=$(realpath "${IR_SOURCE_DIR:-${IR_VIRTUAL_ENV}/infrared}")
|
||||||
|
IR_EXECUTABLE=${IR_VIRTUAL_ENV}/bin/infrared
|
||||||
|
export IR_HOME=$(realpath ${IR_HOME:-../.infrared/})
|
||||||
|
IR_TOBIKO_PLUGIN=$(realpath ${IR_TOBIKO_PLUGIN:-$(pwd)})
|
||||||
|
|
||||||
|
|
||||||
|
function ir {
|
||||||
|
ir_setup
|
||||||
|
"${IR_EXECUTABLE}" "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function ir_setup {
|
||||||
|
if ! ir_activate; then
|
||||||
|
tox -e infrared --notest
|
||||||
|
ir_activate
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! [ -x "${IR_EXECUTABLE}" ]; then
|
||||||
|
git clone "${IR_REPO}" -b "${IR_BRANCH}" "${IR_SOURCE_DIR}"
|
||||||
|
local package_name
|
||||||
|
for package_name in pip setuptools "${IR_SOURCE_DIR}"; do
|
||||||
|
pip install --upgrade "${package_name}"
|
||||||
|
done
|
||||||
|
|
||||||
|
(
|
||||||
|
cd "${IR_SOURCE_DIR}"
|
||||||
|
"${IR_EXECUTABLE}" plugin list --available --versions || true
|
||||||
|
"${IR_EXECUTABLE}" plugin remove tobiko || true
|
||||||
|
"${IR_EXECUTABLE}" plugin add "${IR_TOBIKO_PLUGIN}"
|
||||||
|
)
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p "${IR_HOME}"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function ir_activate {
|
||||||
|
local venv_script=${IR_VIRTUAL_ENV}/bin/activate
|
||||||
|
if ! [ -r "${venv_script}" ]; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! ir_is_active; then
|
||||||
|
# Activate only once
|
||||||
|
set +eu
|
||||||
|
source "${venv_script}"
|
||||||
|
set -eu
|
||||||
|
ir_is_active
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function ir_is_active {
|
||||||
|
[ "$(python_prefix)" == "${IR_VIRTUAL_ENV}" ]
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if [ $(basename "$0") == ir ]; then
|
||||||
|
ir "$@"
|
||||||
|
fi
|
27
tox.ini
27
tox.ini
@ -12,6 +12,7 @@ deps =
|
|||||||
-c{env:UPPER_CONSTRAINTS_FILE:https://opendev.org/openstack/requirements/raw/branch/master/upper-constraints.txt}
|
-c{env:UPPER_CONSTRAINTS_FILE:https://opendev.org/openstack/requirements/raw/branch/master/upper-constraints.txt}
|
||||||
-r{toxinidir}/requirements.txt
|
-r{toxinidir}/requirements.txt
|
||||||
passenv =
|
passenv =
|
||||||
|
PS1
|
||||||
TOBIKO_*
|
TOBIKO_*
|
||||||
setenv =
|
setenv =
|
||||||
OS_LOG_CAPTURE={env:OS_LOG_CAPTURE:true}
|
OS_LOG_CAPTURE={env:OS_LOG_CAPTURE:true}
|
||||||
@ -21,6 +22,7 @@ setenv =
|
|||||||
PYTHONWARNINGS=ignore::Warning,{env:PYTHONWARNINGS:}
|
PYTHONWARNINGS=ignore::Warning,{env:PYTHONWARNINGS:}
|
||||||
TOBIKO_PREVENT_CREATE={env:TOBIKO_PREVENT_CREATE:false}
|
TOBIKO_PREVENT_CREATE={env:TOBIKO_PREVENT_CREATE:false}
|
||||||
VIRTUAL_ENV={envdir}
|
VIRTUAL_ENV={envdir}
|
||||||
|
PS1=[tobiko@{envname}] {env:PS1:}
|
||||||
commands =
|
commands =
|
||||||
stestr run {posargs}
|
stestr run {posargs}
|
||||||
|
|
||||||
@ -106,12 +108,15 @@ import-order-style = pep8
|
|||||||
[openstack]
|
[openstack]
|
||||||
|
|
||||||
basepython = {env:PYTHON:python3}
|
basepython = {env:PYTHON:python3}
|
||||||
deps = {[base]deps}
|
deps =
|
||||||
|
{[base]deps}
|
||||||
passenv =
|
passenv =
|
||||||
{[base]passenv}
|
{[base]passenv}
|
||||||
*_proxy
|
*_proxy
|
||||||
OS_*
|
OS_*
|
||||||
setenv = {[base]setenv}
|
setenv =
|
||||||
|
{[base]setenv}
|
||||||
|
ANSIBLE_CONFIG={env:ANSIBLE_CONFIG:{toxinidir}/ansible.cfg}
|
||||||
commands = {[base]commands}
|
commands = {[base]commands}
|
||||||
|
|
||||||
|
|
||||||
@ -168,7 +173,23 @@ deps = {[testenv:scenario]deps}
|
|||||||
passenv = {[testenv:scenario]passenv}
|
passenv = {[testenv:scenario]passenv}
|
||||||
setenv = {[testenv:scenario]setenv}
|
setenv = {[testenv:scenario]setenv}
|
||||||
whitelist_externals = *
|
whitelist_externals = *
|
||||||
commands = {posargs}
|
commands = {posargs:bash}
|
||||||
|
|
||||||
|
|
||||||
|
[testenv:infrared]
|
||||||
|
|
||||||
|
basepython = {[testenv:venv]basepython}
|
||||||
|
deps = {[testenv:venv]deps}
|
||||||
|
passenv =
|
||||||
|
{[testenv:venv]passenv}
|
||||||
|
IR_*
|
||||||
|
setenv =
|
||||||
|
{[testenv:venv]setenv}
|
||||||
|
IR_HOME={env:IR_HOME:{toxinidir}/../.infrared}
|
||||||
|
IR_TOBIKO_PLUGIN={env:IR_TOBIKO_PLUGIN:{toxinidir}}
|
||||||
|
whitelist_externals = *
|
||||||
|
commands =
|
||||||
|
bash {toxinidir}/tools/ci/ir {posargs:tobiko}
|
||||||
|
|
||||||
|
|
||||||
# --- documentation environments ----------------------------------------------
|
# --- documentation environments ----------------------------------------------
|
||||||
|
16
zuul.d/infrared.yaml
Normal file
16
zuul.d/infrared.yaml
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
- job:
|
||||||
|
name: tobiko-tox-infrared-centos-7
|
||||||
|
parent: openstack-tox
|
||||||
|
voting: false
|
||||||
|
nodeset: centos-7
|
||||||
|
timeout: 2400
|
||||||
|
description: |
|
||||||
|
Run tobiko infrared plugin
|
||||||
|
vars:
|
||||||
|
tox_envlist: infrared
|
||||||
|
bindep_profile: test
|
||||||
|
python_version: 3.6
|
||||||
|
# compile and install python3.8 from source code
|
||||||
|
pre-run: playbooks/infrared/pre.yaml
|
@ -18,7 +18,7 @@
|
|||||||
- tobiko-devstack-functional
|
- tobiko-devstack-functional
|
||||||
- tobiko-devstack-faults-centos-7
|
- tobiko-devstack-faults-centos-7
|
||||||
- tobiko-devstack-faults-ubuntu-bionic
|
- tobiko-devstack-faults-ubuntu-bionic
|
||||||
|
- tobiko-tox-infrared-centos-7
|
||||||
gate:
|
gate:
|
||||||
jobs:
|
jobs:
|
||||||
- tobiko-tox-py36-centos-7
|
- tobiko-tox-py36-centos-7
|
||||||
|
Loading…
x
Reference in New Issue
Block a user