Create generic ansible Tobiko role for CI
Change-Id: I1d31d9ff30fbde418d0abcc84212b4408ed7e515
This commit is contained in:
parent
c463d741e8
commit
7095ff11e9
@ -14,6 +14,11 @@
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
- hosts: tempest
|
- name: Run Tobiko
|
||||||
|
hosts: tempest
|
||||||
roles:
|
roles:
|
||||||
- run-tox
|
- role: tobiko
|
||||||
|
become: true
|
||||||
|
become_user: stack
|
||||||
|
vars:
|
||||||
|
tobiko_dir: /opt/stack/tobiko
|
||||||
|
@ -1,4 +0,0 @@
|
|||||||
tox_dir: /opt/stack/tobiko
|
|
||||||
tox_envlist: scenario
|
|
||||||
tox_extra_args: ''
|
|
||||||
tox_python_version: ''
|
|
@ -1,8 +0,0 @@
|
|||||||
- name: Run Tobiko test cases
|
|
||||||
shell:
|
|
||||||
chdir: "{{ tox_dir }}"
|
|
||||||
cmd: |
|
|
||||||
export PYTHON_VERSION={{ tox_python_version }}
|
|
||||||
tools/ci/tox -e "{{ tox_envlist }}" {{ tox_extra_args }}
|
|
||||||
become: true
|
|
||||||
become_user: stack
|
|
20
roles/tobiko/defaults/main.yaml
Normal file
20
roles/tobiko/defaults/main.yaml
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
# Tobiko workflow parameters
|
||||||
|
tobiko_check_tools: true
|
||||||
|
tobiko_run_tests: true
|
||||||
|
tobiko_run_faults: false
|
||||||
|
|
||||||
|
# Remote tobiko directory
|
||||||
|
tobiko_dir: "~/src/tobiko"
|
||||||
|
|
||||||
|
# Python parameteres
|
||||||
|
python_version: ''
|
||||||
|
python_command: "{{ tobiko_dir }}/tools/ci/python"
|
||||||
|
|
||||||
|
# Tobiko tox parameters
|
||||||
|
tox_dir: "{{ tobiko_dir }}"
|
||||||
|
tox_command: "{{ tobiko_dir }}/tools/ci/tox"
|
||||||
|
tox_envlist: scenario
|
||||||
|
tox_extra_args: ''
|
||||||
|
tox_posargs: ''
|
16
roles/tobiko/tasks/check_tools.yaml
Normal file
16
roles/tobiko/tasks/check_tools.yaml
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
- name: "Check Python command '{{ python_command }}'"
|
||||||
|
shell: "{{ python_command }} --version"
|
||||||
|
|
||||||
|
|
||||||
|
- name: "Check Python command version is '{{ python_version }}'"
|
||||||
|
shell: |
|
||||||
|
{{ python_command }} '{{ tobiko_dir }}/tools/ci/python_version' \
|
||||||
|
--check-prefix
|
||||||
|
|
||||||
|
|
||||||
|
- name: "Check Tox command: '{{ tox_command }}'"
|
||||||
|
shell:
|
||||||
|
chdir: "{{ tox_dir }}"
|
||||||
|
cmd: "{{ tox_command }} --version"
|
29
roles/tobiko/tasks/main.yaml
Normal file
29
roles/tobiko/tasks/main.yaml
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
- environment:
|
||||||
|
PYTHON_VERSION: "{{ python_version }}"
|
||||||
|
block:
|
||||||
|
|
||||||
|
- name: "Check CLI tools"
|
||||||
|
when: tobiko_check_tools | bool
|
||||||
|
include: check_tools.yaml
|
||||||
|
|
||||||
|
- when: tobiko_run_tests
|
||||||
|
block:
|
||||||
|
|
||||||
|
- name: "Run tests"
|
||||||
|
when: tobiko_run_tests | bool
|
||||||
|
include: tasks/run_tests.yaml
|
||||||
|
|
||||||
|
- when: tobiko_run_faults | bool
|
||||||
|
block:
|
||||||
|
|
||||||
|
- name: "Run faults"
|
||||||
|
include: run_tests.yaml
|
||||||
|
vars:
|
||||||
|
tox_envlist: faults
|
||||||
|
|
||||||
|
- name: "Run tests after faults"
|
||||||
|
include: run_tests.yaml
|
||||||
|
vars:
|
||||||
|
tox_posargs: "--combine"
|
8
roles/tobiko/tasks/run_tests.yaml
Normal file
8
roles/tobiko/tasks/run_tests.yaml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
|
||||||
|
- name: "Run test '{{ tox_envlist }}' cases from '{{ tox_dir }}'"
|
||||||
|
shell:
|
||||||
|
chdir: "{{ tox_dir }}"
|
||||||
|
cmd: |
|
||||||
|
{{ tox_command }} -e '{{ tox_envlist }}' {{ tox_extra_args }} -- \
|
||||||
|
{{ tox_posargs }}
|
35
tools/ci/python_version
Executable file
35
tools/ci/python_version
Executable file
@ -0,0 +1,35 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
def get_python_version():
|
||||||
|
return '.'.join(str(i) for i in sys.version_info[:3])
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
parser = argparse.ArgumentParser(description='Print Python version')
|
||||||
|
parser.add_argument('--check-prefix', action='store_const', const=True,
|
||||||
|
default=False,
|
||||||
|
help='check version matches $PYTHON_VERSION prefix')
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
version = get_python_version()
|
||||||
|
|
||||||
|
if args.check_prefix:
|
||||||
|
expected_version = os.environ.get('PYTHON_VERSION')
|
||||||
|
if expected_version and not version.startswith(expected_version):
|
||||||
|
message = ("Version {version!r} must starts with"
|
||||||
|
" {expected_version!r}\n").format(
|
||||||
|
version=version,
|
||||||
|
expected_version=expected_version)
|
||||||
|
sys.stderr.write(message)
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
sys.stdout.write(version + '\n')
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
5
tox.ini
5
tox.ini
@ -140,11 +140,10 @@ deps = {[testenv:scenario]deps}
|
|||||||
passenv = {[testenv:scenario]passenv}
|
passenv = {[testenv:scenario]passenv}
|
||||||
setenv =
|
setenv =
|
||||||
{[testenv:scenario]setenv}
|
{[testenv:scenario]setenv}
|
||||||
|
OS_TEST_PATH={toxinidir}/tobiko/tests/faults
|
||||||
TOBIKO_PREVENT_CREATE=true
|
TOBIKO_PREVENT_CREATE=true
|
||||||
commands =
|
commands =
|
||||||
stestr run --serial \
|
stestr run --serial {posargs}
|
||||||
--test-path '{toxinidir}/tobiko/tests/faults' {posargs}
|
|
||||||
stestr run --combine {posargs}
|
|
||||||
|
|
||||||
|
|
||||||
[testenv:venv]
|
[testenv:venv]
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
- job:
|
- job:
|
||||||
name: tobiko-devstack-ovn
|
name: tobiko-devstack-ovn
|
||||||
parent: tobiko-devstack-multinode
|
parent: tobiko-devstack-scenario-multinode
|
||||||
abstract: true
|
abstract: true
|
||||||
nodeset: openstack-three-node-bionic
|
nodeset: openstack-three-node-bionic
|
||||||
description: |
|
description: |
|
||||||
|
@ -17,7 +17,6 @@
|
|||||||
- x/tobiko
|
- x/tobiko
|
||||||
timeout: 7200
|
timeout: 7200
|
||||||
vars:
|
vars:
|
||||||
tox_python_version: 3
|
|
||||||
devstack_localrc:
|
devstack_localrc:
|
||||||
MULTI_HOST: 0
|
MULTI_HOST: 0
|
||||||
USE_PYTHON3: true
|
USE_PYTHON3: true
|
||||||
@ -168,8 +167,8 @@
|
|||||||
|
|
||||||
|
|
||||||
- job:
|
- job:
|
||||||
name: tobiko-devstack-multinode
|
name: tobiko-devstack-scenario-multinode
|
||||||
parent: tobiko-devstack
|
parent: tobiko-devstack-scenario
|
||||||
abstract: true
|
abstract: true
|
||||||
description: Base Tobiko devstack job with multinode.
|
description: Base Tobiko devstack job with multinode.
|
||||||
vars:
|
vars:
|
||||||
@ -201,12 +200,12 @@
|
|||||||
|
|
||||||
- job:
|
- job:
|
||||||
name: tobiko-devstack-faults
|
name: tobiko-devstack-faults
|
||||||
parent: tobiko-devstack-multinode
|
parent: tobiko-devstack-scenario-multinode
|
||||||
abstract: true
|
abstract: true
|
||||||
description: |
|
description: |
|
||||||
Base Tobiko devstack job to execute scenario+faults+scenario test cases.
|
Base Tobiko devstack job to execute scenario+faults+scenario test cases.
|
||||||
vars:
|
vars:
|
||||||
tox_envlist: scenario,faults
|
tobiko_run_faults: true
|
||||||
irrelevant-files:
|
irrelevant-files:
|
||||||
- ^.*\.rst$
|
- ^.*\.rst$
|
||||||
- ^doc/
|
- ^doc/
|
||||||
@ -226,7 +225,7 @@
|
|||||||
devstack_localrc:
|
devstack_localrc:
|
||||||
# CentOS has no support for Python3
|
# CentOS has no support for Python3
|
||||||
USE_PYTHON3: false
|
USE_PYTHON3: false
|
||||||
tox_python_version: 2
|
python_version: 2
|
||||||
|
|
||||||
|
|
||||||
- job:
|
- job:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user