diff --git a/specs/7.0/ci-for-openstack-from-master.rst b/specs/7.0/ci-for-openstack-from-master.rst new file mode 100644 index 00000000..f4d4cee4 --- /dev/null +++ b/specs/7.0/ci-for-openstack-from-master.rst @@ -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