Add documentation for TripleO/RDO/OSP Pipelines
This documentation covers the promotion pipelines and the use of the DLRN API Promoter script to promote and update images, repos and symlinks. Change-Id: Idcd8f4f4cd9bb8468ede95f4e879f0e2f710c9ba
This commit is contained in:
		
							
								
								
									
										141
									
								
								doc/source/contributor/dlrn-promoter-overview.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										141
									
								
								doc/source/contributor/dlrn-promoter-overview.rst
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,141 @@
 | 
			
		||||
How the TripleO-RDO Pipelines' Promotions Work
 | 
			
		||||
==============================================
 | 
			
		||||
 | 
			
		||||
Building consumable RDO repos and images involves various stages.
 | 
			
		||||
Each stage takes inputs and outputs artifacts. This document explains the
 | 
			
		||||
stages comprising the promotion pipelines, and the tools used to create
 | 
			
		||||
and manage the resulting artifacts.
 | 
			
		||||
 | 
			
		||||
What is DLRN?
 | 
			
		||||
-------------
 | 
			
		||||
 | 
			
		||||
DLRN is a tool to build RPM packages from each commit to a set of
 | 
			
		||||
OpenStack-related git repositories that are included in RDO.
 | 
			
		||||
DLRN builds are run through CI and to detect packaging issues with the
 | 
			
		||||
upstream branches of these Openstack projects.
 | 
			
		||||
 | 
			
		||||
DLRN Artifacts - Hashes and Repos
 | 
			
		||||
---------------------------------
 | 
			
		||||
 | 
			
		||||
When a DLRN build completes, it produces a new hash and related repo version.
 | 
			
		||||
For example, the Pike builds on CentOS are available at:
 | 
			
		||||
https://trunk.rdoproject.org/centos7-pike/.
 | 
			
		||||
The builds are placed in directories by DLRN hash. Each directory contains
 | 
			
		||||
the RPMs as well as a repo file
 | 
			
		||||
https://trunk.rdoproject.org/centos7-pike/current-tripleo/delorean.repo
 | 
			
		||||
and a ``commit.yaml`` file
 | 
			
		||||
https://trunk.rdoproject.org/centos7-pike/current-tripleo/commit.yaml.
 | 
			
		||||
 | 
			
		||||
There are some standard links that are updated as the builds complete and pass
 | 
			
		||||
stages of CI. Examples are these links are:
 | 
			
		||||
 | 
			
		||||
- https://trunk.rdoproject.org/centos7-pike/current/
 | 
			
		||||
- https://trunk.rdoproject.org/centos7-pike/consistent/
 | 
			
		||||
- https://trunk.rdoproject.org/centos7-pike/current-tripleo/
 | 
			
		||||
- https://trunk.rdoproject.org/centos7-pike/current-tripleo-rdo/
 | 
			
		||||
- https://trunk.rdoproject.org/centos7-pike/current-tripleo-rdo-internal/
 | 
			
		||||
- https://trunk.rdoproject.org/centos7-pike/tripleo-ci-testing/
 | 
			
		||||
 | 
			
		||||
The above links will be referenced in the sections below.
 | 
			
		||||
 | 
			
		||||
Promoting through the Stages - DLRN API
 | 
			
		||||
---------------------------------------
 | 
			
		||||
 | 
			
		||||
DLRN API Client
 | 
			
		||||
```````````````
 | 
			
		||||
 | 
			
		||||
`The DLRN API
 | 
			
		||||
<https://github.com/softwarefactory-project/DLRN/blob/master/doc/source/api.rst>`_
 | 
			
		||||
`client <https://github.com/softwarefactory-project/dlrnapi_client/>`_
 | 
			
		||||
enables users to query repo status, upload new hashes and create promotions.
 | 
			
		||||
Calls to the dlrnapi_client retrieve the inputs to stages and upload artifacts
 | 
			
		||||
after stages.
 | 
			
		||||
 | 
			
		||||
For example:
 | 
			
		||||
 | 
			
		||||
::
 | 
			
		||||
 | 
			
		||||
    $ dlrnapi --url https://trunk.rdoproject.org/api-centos-master-uc \
 | 
			
		||||
      promotion-get --promote-name tripleo-ci-testing
 | 
			
		||||
 | 
			
		||||
    [{'commit_hash': 'ec650aa2c8ce952e4a33651190301494178ac562',
 | 
			
		||||
     'distro_hash': '9a7acc684265872ff288a11610614c3b5739939b',
 | 
			
		||||
     'promote_name': 'tripleo-ci-testing',
 | 
			
		||||
     'timestamp': 1506427440},
 | 
			
		||||
     {'commit_hash': 'ec650aa2c8ce952e4a33651190301494178ac562',
 | 
			
		||||
    [..]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    $ dlrnapi --url https://trunk.rdoproject.org/api-centos-master-uc \
 | 
			
		||||
      repo-status --commit-hash ec650aa2c8ce952e4a33651190301494178ac562 \
 | 
			
		||||
     --distro-hash 9a7acc684265872ff288a11610614c3b5739939b
 | 
			
		||||
 | 
			
		||||
    [{'commit_hash': 'ec650aa2c8ce952e4a33651190301494178ac562',
 | 
			
		||||
     'distro_hash': '9a7acc684265872ff288a11610614c3b5739939b',
 | 
			
		||||
     'in_progress': False,
 | 
			
		||||
     'job_id': 'consistent',
 | 
			
		||||
     'notes': '',
 | 
			
		||||
     'success': True,
 | 
			
		||||
     'timestamp': 1506409403,
 | 
			
		||||
     'url': ''},
 | 
			
		||||
     {'commit_hash': 'ec650aa2c8ce952e4a33651190301494178ac562',
 | 
			
		||||
     'distro_hash': '9a7acc684265872ff288a11610614c3b5739939b',
 | 
			
		||||
     'in_progress': False,
 | 
			
		||||
     'job_id': 'periodic-singlenode-featureset023',
 | 
			
		||||
     'notes': '',
 | 
			
		||||
     'success': True,
 | 
			
		||||
     'timestamp': 1506414726,
 | 
			
		||||
     'url': 'https://logs.rdoproject.org/openstack-periodic-4hr/periodic-tripleo-centos-7-master-containers-build/8a76883'},
 | 
			
		||||
     {'commit_hash': 'ec650aa2c8ce952e4a33651190301494178ac562',
 | 
			
		||||
    [..]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
DLRN API Promoter
 | 
			
		||||
`````````````````
 | 
			
		||||
 | 
			
		||||
`The DLRN API Promoter script
 | 
			
		||||
<https://github.com/rdo-infra/ci-config/tree/master/ci-scripts/dlrnapi_promoter>`_
 | 
			
		||||
is a Python script that, based on the information in an input config file,
 | 
			
		||||
will promote an existing DLRN link to another link, provided the required tests
 | 
			
		||||
return successful results.
 | 
			
		||||
 | 
			
		||||
For example,
 | 
			
		||||
`the master ini config file
 | 
			
		||||
<https://github.com/rdo-infra/ci-config/blob/master/ci-scripts/dlrnapi_promoter/config/master.ini>`_
 | 
			
		||||
is passed to the `promoter script
 | 
			
		||||
<https://github.com/rdo-infra/ci-config/blob/master/ci-scripts/dlrnapi_promoter/dlrnapi_promoter.py>`_
 | 
			
		||||
to promote the ``current-tripleo`` link to ``current-tripleo-rdo``. See the
 | 
			
		||||
sections above where both these links (for Pike) were shown.
 | 
			
		||||
 | 
			
		||||
In the RDO Phase 1 pipeline, the tests listed under the ``[current-tripleo-rdo]``
 | 
			
		||||
are run with the ``current-tripleo`` hash. Each test reports its ``success`` status to the
 | 
			
		||||
DLRN API endpoint for the Master release, ``api-centos-master-uc``.
 | 
			
		||||
 | 
			
		||||
If each test reports ``SUCCESS: true``, the content of the ``current-tripleo``
 | 
			
		||||
will become the new content of the ``current-tripleo-rdo`` hash.
 | 
			
		||||
 | 
			
		||||
For complete documentation on how to run the Promoter script see:
 | 
			
		||||
https://github.com/rdo-infra/ci-config/blob/master/ci-scripts/dlrnapi_promoter/README.md
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Pushing RDO containers to ``docker.io``
 | 
			
		||||
```````````````````````````````````````
 | 
			
		||||
 | 
			
		||||
The DLRN Promotor script calls the `container push playbook
 | 
			
		||||
<https://github.com/rdo-infra/ci-config/blob/master/ci-scripts/container-push/container-push.yml>`_
 | 
			
		||||
to push the RDO containers at each stage to `docker.io
 | 
			
		||||
<https://hub.docker.com/r/tripleopike/centos-binary-heat-api/tags/>`_.
 | 
			
		||||
Note that the the above ``docker.io`` link shows containers tagged with ``tripleo-ci-testing``,
 | 
			
		||||
``current-tripleo`` and ``current-tripleo-rdo``.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
DLRN API Promoter Server
 | 
			
		||||
````````````````````````
 | 
			
		||||
 | 
			
		||||
It is recommended that the Promoter script is run from a dedicated server.
 | 
			
		||||
`The promoter-setup repo
 | 
			
		||||
<https://github.com/rdo-infra/ci-config/tree/master/ci-scripts/promoter-setup>`_
 | 
			
		||||
contains the Ansible playbook used to setup the promoter-server in the RDO
 | 
			
		||||
Cloud environment. This playbook allows the promoter script server to be
 | 
			
		||||
rebuilt as required.
 | 
			
		||||
 | 
			
		||||
@@ -8,3 +8,5 @@ TripleO Contributor Guide
 | 
			
		||||
  new_developers
 | 
			
		||||
  contributions
 | 
			
		||||
  check_gates
 | 
			
		||||
  dlrn-promoter-overview
 | 
			
		||||
  stages-overview
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										99
									
								
								doc/source/contributor/stages-overview.rst
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										99
									
								
								doc/source/contributor/stages-overview.rst
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,99 @@
 | 
			
		||||
Promotion Stages
 | 
			
		||||
================
 | 
			
		||||
 | 
			
		||||
The list below shows each stage within the RDO promotion workflow.
 | 
			
		||||
Each stage shows the inputs taken and the artifacts produced.
 | 
			
		||||
 | 
			
		||||
.. note:: All the links shown in the diagram refer to the Master release.
 | 
			
		||||
 | 
			
		||||
          Links for stable branches would include the stable release name,
 | 
			
		||||
          for example, `Pike stable release <https://trunk.rdoproject.org/centos7-pike/tripleo-ci-testing/>`_.
 | 
			
		||||
 | 
			
		||||
1. **Upstream TripleO**
 | 
			
		||||
 | 
			
		||||
    `CI DLRN Master consistent
 | 
			
		||||
    <https://trunk.rdoproject.org/centos7-master/consistent/>`_
 | 
			
		||||
    is generated every 30 mins from upstream commits in case of no packaging errors.
 | 
			
		||||
 | 
			
		||||
    The ``current`` build contains the latest packages that can be built,
 | 
			
		||||
    even if some other packages are failing to build. The ``current`` and
 | 
			
		||||
    ``consistent`` builds will be equivalent where there are no problems with
 | 
			
		||||
    the build. See https://trunk.rdoproject.org/centos7-master/report.html
 | 
			
		||||
    (for Master) for the result of builds.
 | 
			
		||||
 | 
			
		||||
2. **Upstream Promotion Pipeline**
 | 
			
		||||
 | 
			
		||||
    `rdoproject.org zuul <https://review.rdoproject.org/zuul/>`_
 | 
			
		||||
 | 
			
		||||
    *Update* from consistent -> tripleo-ci-testing
 | 
			
		||||
    https://trunk.rdoproject.org/centos7-master/tripleo-ci-testing/
 | 
			
		||||
 | 
			
		||||
    *Push containers* to ``docker.io`` tagged with ``tripleo-ci-testing``
 | 
			
		||||
    https://hub.docker.com/r/tripleomaster/centos-binary-heat-api/tags/
 | 
			
		||||
 | 
			
		||||
    Run tests  - if tests report success ->
 | 
			
		||||
    *Promote* from tripleo-ci-testing -> current-tripleo using DLRN Promoter
 | 
			
		||||
    https://trunk.rdoproject.org/centos7-master/current-tripleo/
 | 
			
		||||
 | 
			
		||||
    *Push containers* to trunk.registry.rdoproject.org/master/ (tripleo-ci-testing)
 | 
			
		||||
    and upon promotion, also tag them with ``current-tripleo``
 | 
			
		||||
    https://review.rdoproject.org/jenkins/job/periodic-tripleo-centos-7-master-containers-build
 | 
			
		||||
 | 
			
		||||
    *Update images* using DLRN Promoter
 | 
			
		||||
    https://images.rdoproject.org/master/rdo_trunk/current-tripleo/stable/
 | 
			
		||||
    periodic-tripleo-ci-centos-7-ovb-3ctlr_1comp-featureset002-master-upload
 | 
			
		||||
    See artifacts referenced:
 | 
			
		||||
    https://github.com/openstack/tripleo-quickstart/blob/master/config/release/master.yml
 | 
			
		||||
    https://images.rdoproject.org/master/rdo_trunk/current-tripleo
 | 
			
		||||
    RH1 mirror server for images http://66.187.229.139/
 | 
			
		||||
 | 
			
		||||
    *Push containers* to ``docker.io`` tagged with ``current-tripleo``
 | 
			
		||||
    https://hub.docker.com/r/tripleomaster/centos-binary-heat-api/tags/
 | 
			
		||||
 | 
			
		||||
    Logs from the DLRN Promoter can be accessed on http://38.145.33.13/
 | 
			
		||||
    `A Sova instance <http://38.145.34.234/>`_ is used to monitor these jobs
 | 
			
		||||
 | 
			
		||||
3. **RDO Phase 1**
 | 
			
		||||
 | 
			
		||||
    https://ci.centos.org/job/rdo_trunk-promote-master-current-tripleo/
 | 
			
		||||
 | 
			
		||||
    Get https://trunk-primary.rdoproject.org/centos7-pike/current-tripleo/delorean.repo
 | 
			
		||||
 | 
			
		||||
    Run tests  - if tests report success ->
 | 
			
		||||
    *Promote* from current-tripleo -> current-tripleo-rdo using DLRN Promoter
 | 
			
		||||
    https://trunk.rdoproject.org/centos7-master/current-tripleo-rdo/
 | 
			
		||||
 | 
			
		||||
    *Promote the images* to
 | 
			
		||||
    https://images.rdoproject.org/master/rdo_trunk/current-tripleo-rdo/
 | 
			
		||||
 | 
			
		||||
    *Tag the containers* as ``current-tripleo-rdo``
 | 
			
		||||
 | 
			
		||||
    *Push containers* to ``docker.io`` tagged with ``current-tripleo-rdo``
 | 
			
		||||
    https://hub.docker.com/r/tripleomaster/centos-binary-heat-api/tags/
 | 
			
		||||
 | 
			
		||||
4. **RDO Phase 2**
 | 
			
		||||
 | 
			
		||||
    Get RDO Phase 1 generated image (RDO on CentOS) from
 | 
			
		||||
    https://images.rdoproject.org/master/$BUILD_SYS/$PIN/$hash_id
 | 
			
		||||
    and cache internally
 | 
			
		||||
 | 
			
		||||
    Build http://<internal>/ci-images/master (RDO on RHEL)
 | 
			
		||||
 | 
			
		||||
    Run tests (RDO on CentOS for baremetal and RDO on RHEL)
 | 
			
		||||
    If tests report success ->
 | 
			
		||||
    *Update symlink* using DLRN Promoter
 | 
			
		||||
    https://trunk.rdoproject.org/centos7-master/current-tripleo-rdo-internal/
 | 
			
		||||
 | 
			
		||||
    *Update the images link* as
 | 
			
		||||
    https://images.rdoproject.org/master/rdo_trunk/current-tripleo-rdo-internal
 | 
			
		||||
 | 
			
		||||
    *Tag the containers* as ``current-tripleo-rdo-internal``
 | 
			
		||||
 | 
			
		||||
    Run futher downstream jobs (scale etc.)
 | 
			
		||||
    rdo-promote-master-rdo_trunk-nonvoting
 | 
			
		||||
 | 
			
		||||
5. **OSP Phase 0**
 | 
			
		||||
 | 
			
		||||
    *Hand off* to RHOSP builds
 | 
			
		||||
    https://access.redhat.com/documentation/en/red-hat-openstack-platform/
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user