<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}]"}
    250 views