Files
nfv/.zuul.yaml
Dharniss G R 8e6093db04 Add tox and Zuul CI environments for Trixie
Add tox environments and Zuul check/gate jobs for unit testing,
coverage analysis, and security scanning for nfv and nova-api-proxy,
running on both Debian Bullseye and Trixie.

Trixie is the default target, so its tox environments and Zuul jobs
use the plain names (pep8, pylint, black, py313, coverage, bandit,
linters). Bullseye (py3.9) environments and jobs carry an explicit
-bullseye suffix; Bullseye tox environments override basepython/deps
via a [bullseye] section.

Requirements files:
- test-requirements.txt: Trixie test dependencies (default)
- test-requirements-bullseye.txt: Bullseye test dependencies
- .coveragerc: Coverage configuration for nova-api-proxy

Tox environments (nfv/tox.ini):
- Trixie (default, py3.13): pep8, pylint, black, py313, coverage,
  bandit
- Bullseye (py3.9): pep8-bullseye, pylint-bullseye, black-bullseye,
  py39-bullseye, coverage-bullseye, bandit-bullseye

Tox environments (nova-api-proxy/tox.ini):
- Trixie (default): pep8, pylint, black, coverage
- Bullseye: pep8-bullseye, pylint-bullseye, black-bullseye,
  coverage-bullseye

Root tox.ini:
- Default [testenv] targets Trixie (python3.13)
- Dummy envs for Zuul compatibility

Zuul jobs (.zuul.yaml):
- Voting (gate), Trixie: nfv-tox-linters, nfv-tox-pep8,
  nfv-tox-pylint, nfv-tox-black, nfv-tox-py313, nfv-tox-coverage,
  nfv-tox-bandit, nova-api-proxy-tox-pep8,
  nova-api-proxy-tox-pylint, nova-api-proxy-tox-black,
  nova-api-proxy-tox-coverage
- Non-voting (check only), Bullseye: the corresponding
  nfv-tox-*-bullseye and nova-api-proxy-tox-*-bullseye jobs

Playbooks:
- fetch-coverage.yaml: Collect nfv coverage artifacts from
  UTCoverage/ directory. Directory named UTCoverage/ to follow
  the naming convention used by other StarlingX repos.
- fetch-coverage-nova-api-proxy.yaml: Upload proxy coverage.

Test-Plan:
PASS: tox -e pep8,pylint,black,py313,coverage,bandit (nfv/)
PASS: tox -e pep8-bullseye,pylint-bullseye,black-bullseye (nfv/)
PASS: tox -e py39-bullseye,coverage-bullseye (nfv/)
PASS: tox -e pep8,pylint,black,coverage (nova-api-proxy/)
PASS: tox -e pep8-bullseye,coverage-bullseye (nova-api-proxy/)
PASS: tox -e linters, linters-bullseye
PASS: tox -e docs, releasenotes, api-ref

Story: 2011781
Task: 54324

Assisted-by: Amazon Q Developer (Kiro)
Change-Id: Iacf7eb6a6197e91a85b07633c68936c17210db65
Signed-off-by: Dharniss G R <dharniss.gr@windriver.com>
2026-09-16 12:29:47 +00:00

349 lines
12 KiB
YAML

---
- project:
templates:
- publish-stx-docs
- stx-api-ref-jobs
- stx-bandit-jobs
check:
jobs:
- nfv-tox-linters-bullseye
- nfv-tox-pep8-bullseye
- nfv-tox-pylint-bullseye
- nfv-tox-black-bullseye
- nfv-tox-py39-bullseye
- nfv-tox-coverage-bullseye
- nova-api-proxy-tox-pep8-bullseye
- nova-api-proxy-tox-pylint-bullseye
- nova-api-proxy-tox-black-bullseye
- nova-api-proxy-tox-coverage-bullseye
- nfv-tox-linters
- nfv-tox-pep8
- nfv-tox-pylint
- nfv-tox-black
- nfv-tox-py313
- nfv-tox-coverage
- nfv-tox-bandit
- nova-api-proxy-tox-pep8
- nova-api-proxy-tox-pylint
- nova-api-proxy-tox-black
- nova-api-proxy-tox-coverage
gate:
jobs:
- nfv-tox-linters
- nfv-tox-pep8
- nfv-tox-pylint
- nfv-tox-black
- nfv-tox-py313
- nfv-tox-bandit
- nova-api-proxy-tox-pep8
- nova-api-proxy-tox-pylint
- nova-api-proxy-tox-black
post:
jobs:
- stx-nfv-upload-git-mirror
- job:
name: nfv-tox-linters-bullseye
parent: tox
nodeset: debian-bullseye
voting: false
description: Run linters (bullseye)
vars:
tox_envlist: linters-bullseye
- job:
name: nfv-tox-base-bullseye
parent: tox
nodeset: debian-bullseye
voting: false
required-projects:
- starlingx/config
- starlingx/fault
- starlingx/update
- starlingx/utilities
vars:
tox_extra_args: -c nfv/tox.ini
- job:
name: nfv-tox-pep8-bullseye
parent: nfv-tox-base-bullseye
description: Run pep8 for nfv
vars:
tox_envlist: pep8-bullseye
- job:
name: nfv-tox-pylint-bullseye
parent: nfv-tox-base-bullseye
description: Run pylint for nfv
vars:
tox_envlist: pylint-bullseye
- job:
name: nfv-tox-black-bullseye
parent: nfv-tox-base-bullseye
description: Run black for nfv
vars:
python_version: 3.9
tox_envlist: black-bullseye
- job:
name: nfv-tox-py39-bullseye
parent: nfv-tox-base-bullseye
description: Run py39 for nfv
vars:
tox_envlist: py39-bullseye
- job:
name: nfv-tox-coverage-bullseye
parent: nfv-tox-base-bullseye
description: Run coverage test for nfv
post-run: tools/gate/playbooks/fetch-coverage.yaml
voting: false
vars:
python_version: 3.9
tox_envlist: coverage-bullseye
- job:
name: nfv-tox-bandit-bullseye
parent: nfv-tox-base-bullseye
description: Run bandit for nfv
vars:
tox_envlist: bandit-bullseye
- job:
name: nova-api-proxy-tox-pep8-bullseye
parent: tox
description: Run pep8 for nova-api-proxy
nodeset: debian-bullseye
voting: false
vars:
tox_envlist: pep8-bullseye
tox_extra_args: -c nova-api-proxy/tox.ini
- job:
name: nova-api-proxy-tox-pylint-bullseye
parent: tox
description: Run pylint for nova-api-proxy
nodeset: debian-bullseye
voting: false
vars:
tox_envlist: pylint-bullseye
tox_extra_args: -c nova-api-proxy/tox.ini
- job:
name: nova-api-proxy-tox-black-bullseye
parent: tox
description: Run black for nova-api-proxy
nodeset: debian-bullseye
voting: false
vars:
python_version: 3.9
tox_envlist: black-bullseye
tox_extra_args: -c nova-api-proxy/tox.ini
- job:
name: nova-api-proxy-tox-coverage-bullseye
parent: tox
description: Run coverage test for nova-api-proxy
nodeset: debian-bullseye
voting: false
post-run: tools/gate/playbooks/fetch-coverage-nova-api-proxy.yaml
vars:
python_version: 3.9
tox_envlist: coverage-bullseye
tox_extra_args: -c nova-api-proxy/tox.ini
- job:
name: stx-nfv-upload-git-mirror
parent: upload-git-mirror
description: >
Mirrors opendev.org/starlingx/nfv to
github.com/starlingx/nfv
vars:
git_mirror_repository: starlingx/nfv
secrets:
- name: git_mirror_credentials
secret: stx-nfv-github-secret3
pass-to-parent: true
- secret:
name: stx-nfv-github-secret3
data:
user: git
host: github.com
# yamllint disable-line rule:line-length
host_key: github.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCj7ndNxQowgcQnjshcLrqPEiiphnt+VTTvDP6mHBL9j1aNUkY4Ue1gvwnGLVlOhGeYrnZaMgRK6+PKCUXaDbC7qtbW8gIkhL7aGCsOr/C56SJMy/BCZfxd1nWzAOxSDPgVsmerOBYfNqltV9/hWCqBywINIR+5dIg6JTJ72pcEpEjcYgXkE2YEFXV1JHnsKgbLWNlhScqb2UmyRkQyytRLtL+38TGxkxCflmO+5Z8CSSNY7GidjMIZ7Q4zMjA2n1nGrlTDkzwDCsw+wqFPGQA179cnfGWOWRVruj16z6XyvxvjJwbz0wQZ75XK5tKSb7FNyeIEs4TT4jk+S4dhPeAUC5y+bDYirYgM4GC7uEnztnZyaVWQ7B381AK4Qdrwt51ZqExKbQpTUNn+EjqoTwvqNj4kqx5QUCI0ThS/YkOxJCXmPUWZbhjpCg56i+2aB6CmK2JGhn57K5mj0MNdBXA4/WnwH6XoPWJzK5Nyu2zB3nAZp+S5hpQs+p1vN1/wsjk=
ssh_key: !encrypted/pkcs1-oaep
- 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
- ZsqHb2KsXhocZevz7SOL1Mk72S9ITO/eqYSyULu7wuvWC8wDu2AvIXcZygeu4XHt8sV1N
hj6ohglz1sNDnazNL9xJKhAW/7SuqSzBmg7tGGDuIZJABgUdKjwgkvYS9XW9gE7nNCJRX
/LtmAIPhIdbxFkcbAx7wAeCWBwaq7iyVNWS3e1YYOdpPqKhBbleOxHr5BSRMsh5kTW2xj
fROOGmKNc7sRRbD77j9pviyH35fbaJpyIhlcvpHPz2modRg1uRDrgdN4917G3elk1Re1N
iEWeigIKgArJ/B3qRQUf8zAVbAnQwVT3eMdzrLGRo0Fiy4SxII2/YMvx5mQWCC6rh5UKD
KqDmXO6EFDbuyKjnaH1kLa2SAyotGnbK2z+hQJZHcy0ixV7J3O4PDJavIfeN25vHrVt0V
TxmAw/XMx6cnmz/m+c4DTdhil7ssOfmXwdLetB5uUe26l1Je4FYbxTPUj/BXwdGFGgjEz
yyPsbcI7Ax7iS4gIsL0fA6Hb1m4Bkrxv2a7qYyzhHr59MBvieyGlwXZwAuiEnLlEOpyfR
ZtF1I85M7FfEFsVXKSaUDboCxn/11jYl4rj3Vk+RCKlmD0tfyokLT+7ouNtK4JLiUs3f3
qiAzm5bzqtdjSSNj7sf66h2bzVzVP7UmNSBWF7o0U7D+LFapp9UmmP1dtpBSEg=
- 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
- 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
- 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
- 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
- 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
- job:
name: nfv-tox-base
parent: tox
nodeset: debian-trixie-8GB
required-projects:
- starlingx/config
- starlingx/fault
- starlingx/update
- starlingx/utilities
vars:
tox_extra_args: -c nfv/tox.ini
- job:
name: nfv-tox-linters
parent: tox
nodeset: debian-trixie-8GB
description: Run linters
vars:
tox_envlist: linters
- job:
name: nfv-tox-pep8
parent: nfv-tox-base
description: Run pep8 for nfv
vars:
tox_envlist: pep8
- job:
name: nfv-tox-pylint
parent: nfv-tox-base
description: Run pylint for nfv
vars:
tox_envlist: pylint
- job:
name: nfv-tox-black
parent: nfv-tox-base
description: Run black for nfv
vars:
tox_envlist: black
- job:
name: nfv-tox-py313
parent: nfv-tox-base
description: Run py313 for nfv
vars:
tox_envlist: py313
- job:
name: nfv-tox-coverage
parent: nfv-tox-base
description: Run coverage test for nfv
post-run: tools/gate/playbooks/fetch-coverage.yaml
voting: false
vars:
tox_envlist: coverage
- job:
name: nfv-tox-bandit
parent: nfv-tox-base
description: Run bandit for nfv
vars:
tox_envlist: bandit
- job:
name: nova-api-proxy-tox-pep8
parent: tox
description: Run pep8 for nova-api-proxy
nodeset: debian-trixie-8GB
vars:
tox_envlist: pep8
tox_extra_args: -c nova-api-proxy/tox.ini
- job:
name: nova-api-proxy-tox-pylint
parent: tox
description: Run pylint for nova-api-proxy
nodeset: debian-trixie-8GB
vars:
tox_envlist: pylint
tox_extra_args: -c nova-api-proxy/tox.ini
- job:
name: nova-api-proxy-tox-black
parent: tox
description: Run black for nova-api-proxy
nodeset: debian-trixie-8GB
vars:
tox_envlist: black
tox_extra_args: -c nova-api-proxy/tox.ini
- job:
name: nova-api-proxy-tox-coverage
parent: tox
description: Run coverage test for nova-api-proxy
nodeset: debian-trixie-8GB
post-run: tools/gate/playbooks/fetch-coverage-nova-api-proxy.yaml
voting: false
vars:
tox_envlist: coverage
tox_extra_args: -c nova-api-proxy/tox.ini