<style>
.reveal {
font-size: 24px;
}
</style>
# CI/CD in Ansible OpenStack Collection
Slides: https://hackmd.io/@jakobmeng/ansible-openstack-collection-ci
---
## Overview
- [Ansible OpenStack Collection](
https://opendev.org/openstack/ansible-collections-openstack) :heart: [Zuul CI](
https://zuul-ci.org/docs/zuul/latest/)
- 5x job categories in [`.zuul.yaml`](
https://opendev.org/openstack/ansible-collections-openstack/src/branch/master/.zuul.yaml):
+ **Linters**: [`openstack-tox-linters`](
https://opendev.org/openstack/openstack-zuul-jobs/src/branch/master/zuul.d/jobs.yaml) based + [`tox-pep8`](
https://opendev.org/zuul/zuul-jobs/src/branch/master/zuul.d/python-jobs.yaml)
+ **Devstack**: [`openstacksdk-functional-devstack`](
https://opendev.org/openstack/openstacksdk/src/branch/master/.zuul.yaml) based
+ **TripleO**: [`tripleo-ci-base-standalone-centos-8`](
https://opendev.org/openstack/tripleo-ci/src/branch/master/zuul.d/standalone-jobs.yaml) based
(for subset of modules only)
+ **[Bifrost](https://docs.openstack.org/bifrost/latest/)**: [`bifrost-*`](
https://opendev.org/openstack/bifrost/src/branch/master/zuul.d/bifrost-jobs.yaml) based
+ **Release**: `ansible-collections-openstack-release`
---
## Coverage
* By Ansible and OpenStack releases:
(DevStack jobs only)
(~~crossed out~~ are experimental jobs)
- on `master`:
+ Ansible 2.9 / 2.12 / `devel`
and `master` DevStack
and `master` OpenStack SDK
- on `stable/1.0.0`:
+ Ansible 2.11 and OpenStack Train / ~~Queens~~
+ Ansible 2.12 and OpenStack ~~Victoria~~ / Wallaby / ~~Xena~~
+ Ansible 2.9 / 2.12 / `devel`
and `master` DevStack
and `stable/yoga` OpenStack SDK (latest `0.x.x` release)
---
## Job Definition Deep-Dive I
* DevStack jobs based on [`openstacksdk-functional-devstack`](https://opendev.org/openstack/openstacksdk/src/branch/master/.zuul.yaml)
* Inherit `run: playbooks/tox/run-both.yaml` from [`devstack-tox-functional`](https://opendev.org/openstack/devstack/src/branch/master/.zuul.yaml):
+ Install DevStack
+ Run [`tox` role](https://opendev.org/zuul/zuul-jobs/src/branch/master/roles/tox) from [zuul/zuul-jobs](https://opendev.org/zuul/zuul-jobs)
1. Create [tox environment](https://tox.wiki/en/latest/)
2. [Install Python sibling packages aka update Python packages to latest commits from `opendev.org`](
https://opendev.org/zuul/zuul-jobs/src/branch/master/roles/tox/tasks/siblings.yaml)
3. Run tox tests defined in our [`tox.ini`](https://opendev.org/openstack/ansible-collections-openstack/src/branch/master/tox.ini)
---
## Job Definition Deep-Dive II
* Execution in [`tox.ini`](https://opendev.org/openstack/ansible-collections-openstack/src/branch/master/tox.ini):
+ Run [`ci/run-ansible-tests-collection.sh`](https://opendev.org/openstack/ansible-collections-openstack/src/branch/master/ci/run-ansible-tests-collection.sh)
+ Use `ansible-playbook` to run our [`ci/run-collection.yml`](https://opendev.org/openstack/ansible-collections-openstack/src/branch/master/ci/run-collection.yml)
+ Run integration tests in [`ci/roles`](https://opendev.org/openstack/ansible-collections-openstack/src/branch/master/ci/roles)
(single Ansible role per Ansible module)
---
## Monitoring
* [Grafana Dashboard for Ansible OpenStack collection](
http://dashboard-ci.tripleo.org/d/MUvYImOGk/openstack-ansible-collections)
* Current failing periodic jobs (as of 2022-05-03):
+ `ansible-*-devstack-victoria-ansible-2.12`:
~~[Fix has been merged today](https://review.opendev.org/c/openstack/ansible-collections-openstack/+/840230)~~
+ `ansible-*-devstack-octavia`,
`ansible-*-devstack-releases`:
~~Because OpenStack SDK 1.0.0 has not been released to PyPI yet.~~
+ `ansible-*-devstack-ansible-devel`:
Issue with key file generation in integration test of [`keypair` module](
https://opendev.org/openstack/ansible-collections-openstack/src/branch/master/plugins/modules/keypair.py).
**To be investigated!**
+ `tripleo-ci-centos-8-standalone-train-osa`:
Undercloud failed during `openstack tripleo deploy` step.
**To be investigated!**
---
## Release
* Pushing a `git tag` triggers a release to Ansible Galaxy
* Job definition in [`.zuul.yaml`](
https://opendev.org/openstack/ansible-collections-openstack/src/branch/master/.zuul.yaml):
```yaml
- job:
name: ansible-collections-openstack-release
parent: base
run: ci/publish/publish_collection.yml
- project:
tag:
jobs:
- ansible-collections-openstack-release
```
* [Complete release process documentation](https://hackmd.io/ANiqEw3pS0-8nCHuDjvgtg?view)
---
## Thank you!
* References:
+ [Ansible OpenStack Collection](https://opendev.org/openstack/ansible-collections-openstack)
+ [Release Process Documentation](https://hackmd.io/ANiqEw3pS0-8nCHuDjvgtg?view)
+ [Preparing a DevStack environment for Ansible collection development](https://hackmd.io/PI10x-iCTBuO09duvpeWgQ?view)
+ [Ansible OpenStack collection and new SDK 1.0.0](https://hackmd.io/szgyWa5qSUOWw3JJBXLmOQ?view)
{"metaMigratedAt":"2023-06-17T00:14:14.946Z","metaMigratedFrom":"YAML","title":"CI/CD in Ansible OpenStack Collection","breaks":true,"description":"Zuul CI jobs of Ansible OpenStack collection","contributors":"[{\"id\":\"875dc7d8-914c-48e9-ac0a-6adb5b3762d5\",\"add\":6568,\"del\":3609}]"}