Add specification to 7.0: "CI for Openstack from master"
Change-Id: I6ec98e548531780892f614efd01dbd9be86540c6
This commit is contained in:
parent
9283cf4041
commit
e55d403be7
219
specs/7.0/ci-for-openstack-from-master.rst
Normal file
219
specs/7.0/ci-for-openstack-from-master.rst
Normal file
@ -0,0 +1,219 @@
|
||||
..
|
||||
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
||||
License.
|
||||
|
||||
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||
|
||||
==========================================
|
||||
CI for OpenStack from master
|
||||
==========================================
|
||||
|
||||
https://blueprints.launchpad.net/fuel/+spec/ci-for-openstack-from-master
|
||||
|
||||
This specification describes CI for OpenStack from master - from building
|
||||
packages to releasing tested community ISO that will deploy latest
|
||||
OpenStack. Creating such process will benefit OpenStack developers as well as
|
||||
Fuel developers.
|
||||
|
||||
|
||||
Problem description
|
||||
===================
|
||||
|
||||
Every OpenStack developer needs some tool to deploy latest code plus his
|
||||
own work to perform functional testing. Fuel is the most sophisticated
|
||||
OpenStack deployment tool and a great candidate for such work. But it is always
|
||||
one step back regarding OpenStack releases it supports.
|
||||
|
||||
|
||||
Proposed change
|
||||
===============
|
||||
|
||||
Create CI analogous to our current CI for regular releases but targeted at
|
||||
master branch of OpenStack.
|
||||
|
||||
|
||||
Alternatives
|
||||
------------
|
||||
|
||||
None.
|
||||
|
||||
|
||||
Data model impact
|
||||
-----------------
|
||||
|
||||
None.
|
||||
|
||||
|
||||
REST API impact
|
||||
---------------
|
||||
|
||||
None.
|
||||
|
||||
|
||||
Upgrade impact
|
||||
--------------
|
||||
|
||||
None.
|
||||
|
||||
|
||||
Security impact
|
||||
---------------
|
||||
|
||||
None.
|
||||
|
||||
|
||||
Notifications impact
|
||||
--------------------
|
||||
|
||||
None.
|
||||
|
||||
|
||||
Other end user impact
|
||||
---------------------
|
||||
|
||||
None.
|
||||
|
||||
|
||||
Performance Impact
|
||||
------------------
|
||||
|
||||
None.
|
||||
|
||||
|
||||
Plugin impact
|
||||
-------------
|
||||
|
||||
None.
|
||||
|
||||
|
||||
Other deployer impact
|
||||
---------------------
|
||||
|
||||
Community users get Fuel ISOs with master OpenStack.
|
||||
|
||||
|
||||
Developer impact
|
||||
----------------
|
||||
|
||||
Fuel developers need to monitor test results and continuously update
|
||||
fuel-library to support master OpenStack. For every OpenStack master
|
||||
compatibility change in the Fuel code, a reasonable effort should be
|
||||
dedicated to making that change backwards compatible with the
|
||||
currently supported stable OpenStack version.
|
||||
|
||||
A new branch called "future" will be created in fuel-library
|
||||
repository. It is acceptable to put an OpenStack master compatibility
|
||||
change in this branch, iff the only way to ensure backwards
|
||||
compatibility is to introduce a conditional statement with a check for
|
||||
specific OpenStack release. Every time a change is merged to a
|
||||
"future" branch, the core reviewer approving the change is responsible
|
||||
for rebasing the whole "future" branch onto the current head of master
|
||||
branch of the corresponding Fuel git repository.
|
||||
|
||||
|
||||
Infrastructure impact
|
||||
---------------------
|
||||
|
||||
Creating CI for master OpenStack puts additional load on Jenkins masters and
|
||||
slaves (`OSCI Jenkins`_, `Fuel Jenkins`_). The amount of load is comparable to
|
||||
existing CI branches for releases.
|
||||
|
||||
New jobs will be created, similar to jobs for numbered releases. Existing jobs
|
||||
will be not affected. Also it's necessary to create one additional type of
|
||||
Jenkins jobs. Usually package is built when developer uploads and then submits
|
||||
a change request. In case with master branch OpenStack code is synchronized
|
||||
with upstream daily via git (without CRs). Thus we need to perform daily builds
|
||||
of OpenStack packages. Jobs that perform this task are called autobuild-master
|
||||
jobs.
|
||||
|
||||
A new kind of release appears: community ISO with master OpenStack.
|
||||
|
||||
|
||||
Implementation
|
||||
==============
|
||||
|
||||
Assignee(s)
|
||||
-----------
|
||||
|
||||
* Primary assignee, package build: `Alexander Tsamutali`_
|
||||
* ISO build: `Alexandra Fedorova`_
|
||||
* ISO testing with fuel-qa_: `Timur Nurlygayanov`_
|
||||
* ISO testing with Tempest and Rally: `Artur Kaszuba`_
|
||||
|
||||
|
||||
Work Items
|
||||
----------
|
||||
|
||||
* Create branch "future" in fuel-library repository.
|
||||
* Create OSCI Jenkins jobs to build master branch of system packages,
|
||||
dependencies and OpenStack.
|
||||
|
||||
+ master.mos.build-deb-request, master.mos.build-rpm-request
|
||||
Build OpenStack packages after new patch set was uploaded.
|
||||
+ master.mos.build-deb-deps-request,
|
||||
master.mos.build-rpm-deps-request Build OpenStack dependencies
|
||||
and system packages after new patch set was uploaded.
|
||||
+ master.mos.build-deb, master.mos.build-rpm
|
||||
Build OpenStack packages after merge.
|
||||
+ master.mos.build-deb-deps, master.mos.build-rpm-deps
|
||||
Build OpenStack dependencies and system packages after merge.
|
||||
+ master.mos.autobuild, master.mos.autobuild-deb, master.mos.autobuild-rpm
|
||||
Build OpenStack packages every day.
|
||||
|
||||
* Create OSCI Jenkins jobs to copy packages to mirrors.
|
||||
|
||||
+ master.mos.publisher
|
||||
Publish built package in repository.
|
||||
|
||||
* Create OSCI Jenkins jobs to test packages.
|
||||
|
||||
+ master.mos.install-deb, master.mos.install-rpm
|
||||
Simple install test for packages built from patch set.
|
||||
|
||||
* Create Fuel Jenkins jobs to perform per-commit tests for fuel-library.
|
||||
|
||||
+ master.fuel-library.pkgs
|
||||
Deployment tests.
|
||||
|
||||
* Create Fuel Jenkins jobs to build ISOs.
|
||||
* Create Fuel Jenkins jobs to test ISOs.
|
||||
* Release tested ISOs via fuel-infra.org_.
|
||||
|
||||
|
||||
Dependencies
|
||||
============
|
||||
|
||||
Related to task of supporting master OpenStack in Fuel.
|
||||
|
||||
|
||||
Testing
|
||||
=======
|
||||
|
||||
Packages built with these jobs will be tested for installation
|
||||
only. ISOs will be tested with most generic fuel-qa tests, Tempest and
|
||||
Rally. Status of all jobs, including latest successful build of ISO,
|
||||
will be available on Fuel Jenkins.
|
||||
|
||||
|
||||
Documentation Impact
|
||||
====================
|
||||
|
||||
Documentation about CI process, master ISOs should be
|
||||
written. Announcement will be sent to OpenStack community mailing
|
||||
lists.
|
||||
|
||||
|
||||
References
|
||||
==========
|
||||
|
||||
None.
|
||||
|
||||
|
||||
.. _`OSCI Jenkins`: http://osci-jenkins.srt.mirantis.net
|
||||
.. _`Fuel Jenkins`: http://ci.fuel-infra.org
|
||||
.. _`Alexander Tsamutali`: https://launchpad.net/~astsmtl
|
||||
.. _`Alexandra Fedorova`: https://launchpad.net/~afedorova
|
||||
.. _`Timur Nurlygayanov`: https://launchpad.net/~tnurlygayanov
|
||||
.. _`Artur Kaszuba`: https://launchpad.net/~akaszuba
|
||||
.. _fuel-infra.org: http://fuel-infra.org
|
||||
.. _fuel-qa: http://git.openstack.org/cgit/stackforge/fuel-qa
|
Loading…
Reference in New Issue
Block a user