Plan for first iteration of CI gate infrastructure
This outlines some preliminary thoughts on upstream CI testing for Akanda projects. Implements blueprint ci-updates Change-Id: I64b4d0b9f34e6e00b7ba6abcfdc1dd9408c3d13b
This commit is contained in:
parent
630ac7ffe5
commit
3bcb84b512
191
specs/kilo/ci-updates.rst
Normal file
191
specs/kilo/ci-updates.rst
Normal file
@ -0,0 +1,191 @@
|
||||
..
|
||||
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
||||
License.
|
||||
|
||||
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||
|
||||
|
||||
Title of your blueprint
|
||||
=======================
|
||||
|
||||
Akanda CI updates for Kilo
|
||||
|
||||
Problem Description
|
||||
===================
|
||||
|
||||
We build lots of interconnected things but dont test any of the things. We
|
||||
should be employing pre-commit testing similar to other projects to ensure
|
||||
users get something thats not broken when deploying from master of git
|
||||
repositories or generated tarballs and images.
|
||||
|
||||
Proposed Change
|
||||
===============
|
||||
|
||||
All changes to Akanda projects should go through regular check and gate
|
||||
phases that test a deployment containing proposed code changes. This
|
||||
includes changes to Akanda code as well as supporting things like its devstack
|
||||
code and ``akanda-appliance-builder``. We can leverage devstack, tempest
|
||||
and diskimage-builder to do this and create a generic Akanda integration
|
||||
testing job that can be added to the pipelines of relevant projects. We should
|
||||
also be running standard unit test coverage and pep8 checks here, too.
|
||||
|
||||
For code that runs in the Akanda appliance VM or code that is used to build
|
||||
said image, we should ensure that tests run against proposed changes and not
|
||||
static, pre-built appliance images. That is, runs that are testing changes
|
||||
to ``akanda-appliance`` should build and entirely new appliance VM image and
|
||||
use that for its integration tests instead of pulling a pre-built image that
|
||||
does not contain the code under review.
|
||||
|
||||
Additionally, we should be archiving the results of changes to these
|
||||
appliance-related repositories as a 'latest' image. That is, if someone
|
||||
lands a change to ``akanda-appliance``, we should build and archive a
|
||||
VM image in a known location on the internet. This will speed up other
|
||||
tests that do not need to build a new image but should run against the
|
||||
latest version, and also avoid forcing users to needlessly build images.
|
||||
|
||||
For changes that do not modify the appliance code or tooling used to build
|
||||
the image, tests should run with a pre-built image. This can be either a
|
||||
'latest' image or a released, versioned image.
|
||||
|
||||
One question at this point is where we run the Tempest jobs. These usually
|
||||
take between 30min-1hr to complete and the nodes that run them in the main
|
||||
OpenStack gate are a limited resource. We may need to maintain our own third
|
||||
party CI infrastructure to do this. TBD.
|
||||
|
||||
Data Model Impact
|
||||
-----------------
|
||||
|
||||
None
|
||||
|
||||
REST API Impact
|
||||
---------------
|
||||
|
||||
None
|
||||
|
||||
Security Impact
|
||||
---------------
|
||||
|
||||
None
|
||||
|
||||
Notifications Impact
|
||||
--------------------
|
||||
|
||||
None
|
||||
|
||||
Other End User Impact
|
||||
---------------------
|
||||
|
||||
None
|
||||
|
||||
Performance Impact
|
||||
------------------
|
||||
|
||||
None
|
||||
|
||||
Other Deployer Impact
|
||||
---------------------
|
||||
|
||||
None
|
||||
|
||||
Developer Impact
|
||||
----------------
|
||||
|
||||
Developers hoping to land code in any of the Akanda repositories will need to
|
||||
ensure their code passes all gate tests before it can land.
|
||||
|
||||
Community Impact
|
||||
----------------
|
||||
|
||||
This may make landing changes a bit slower but should improve the overall
|
||||
quality and health of Akanda repositories.
|
||||
|
||||
|
||||
Alternatives
|
||||
------------
|
||||
|
||||
|
||||
Implementation
|
||||
==============
|
||||
|
||||
Assignee(s)
|
||||
-----------
|
||||
|
||||
|
||||
Work Items
|
||||
----------
|
||||
|
||||
* Enable pep8 and unit test jobs against relevant Akanda repositories.
|
||||
|
||||
* Move existing devstack code to out of ``http://github.com/dreamhost/akanda-devstack.git``
|
||||
and into a proper gerrit-managed Akanda repository in the stackforge namespace.
|
||||
|
||||
* Complete diskimage-builder support that currently exists in
|
||||
``http://github.com/stackforge/akanda-appliance-builder.git``
|
||||
|
||||
* Update devstack code to either pull a pre-built Akanda appliance image from a
|
||||
known URL or to build one from source for use in test run.
|
||||
|
||||
* Create a generic ``(check|gate)-dsvm-tempest-akanda`` job that spins up the
|
||||
Akanda devstack deployment and runs a subset of Tempest tests against it.
|
||||
|
||||
* Identifiy the subset of Tempest tests we care to run.
|
||||
|
||||
* Sync with openstack-infra and determine how and where these integration test
|
||||
jobs will run.
|
||||
|
||||
* Run the devstack job against changes to ``akanda-appliance`` or
|
||||
``akanda-appliace-builder`` with a configuration such that the appliance
|
||||
image will be built from source including the patch under review.
|
||||
|
||||
* Setup infrastructure to publish a new appliance image
|
||||
(ie, akanda-appliance-latest.qcow2) to a known location on the internet
|
||||
after code lands in ``akanda-appliance`` or ``akanda-appliance-builder``
|
||||
|
||||
* Run the devstack job against all other relevant akanda repositories with a
|
||||
configuration such that a pre-built appliance image from a known location on
|
||||
the internet. Ideally, this will be the image produced from changes to
|
||||
the appliance repositories (ie, akanda-appliance-latest.qcow2)
|
||||
|
||||
Dependencies
|
||||
============
|
||||
|
||||
None
|
||||
|
||||
Testing
|
||||
=======
|
||||
|
||||
Tempest Tests
|
||||
-------------
|
||||
|
||||
n/a
|
||||
|
||||
Functional Tests
|
||||
----------------
|
||||
|
||||
n/a
|
||||
|
||||
|
||||
API Tests
|
||||
---------
|
||||
|
||||
n/a
|
||||
|
||||
Documentation Impact
|
||||
====================
|
||||
|
||||
User Documentation
|
||||
------------------
|
||||
|
||||
Should be updated to reflect the new home of devstack code and proper ways to
|
||||
deploy it.
|
||||
|
||||
Developer Documentation
|
||||
-----------------------
|
||||
|
||||
Should be updated to reflect the new home of devstack code and proper ways to
|
||||
deploy it.
|
||||
|
||||
References
|
||||
==========
|
||||
|
||||
None
|
Loading…
Reference in New Issue
Block a user