Spec: Enable External Mirror for the StarlingX Community

Proposed spec for hosting an external mirror for StartlingX
community.

Change-Id: I9708b4ebe04c26496e0e4b49b557073df43912e0
Co-Authored-By: Scott Little <scott.little@windriver.com>
Signed-off-by: Al Bailey <Al.Bailey@windriver.com>
This commit is contained in:
Al Bailey 2018-10-15 10:14:26 -05:00
parent e6a355ae61
commit 74073a2835
1 changed files with 184 additions and 0 deletions

View File

@ -0,0 +1,184 @@
.. This work is licensed under a Creative Commons Attribution 3.0 Unported
License.
http://creativecommons.org/licenses/by/3.0/legalcode
=============================================================
StarlingX: Enable External Mirror for the StarlingX Community
=============================================================
https://storyboard.openstack.org/#!/story/2003906
An external mirror is a great enabler for the open source development
community of StarlingX. The goal of the mirror is to quickly enable new
developers and support continuous development / continuous integration
environments for the community.
This story will implement setup of an external mirror provided by CENGN.
Problem Description
===================
Preparing to build or use StarlingX for the first time can be difficult
and time consuming as many components must be downloaded prior to building.
A pre-populated mirror that shares the required components would simplify
the developer experience.
For the initial release, this mirror would pull source and binaries from:
* CentOS
* OpenStack
* CEPH
* DPDK.org
* and others.
Use Cases
=========
Developers need to be able to build current and branched builds of StarlingX
without having to download all the mirrored files from multiple locations.
Developers need to be able to request alternative versions of RPMs be added to
the public mirror.
Automated build tools need to be able to build from the new mirror.
Mirror hosts recent builds of StarlingX. This will enable the installation
and usage of the packaged software quickly without the complexity of creating
their own StarlingX development environment.
Build Evolution:
* Modify distro packages built and added to another versioned external mirror
* Only build these packages when there is a change
Proposed Change
===============
Insulate StarlingX developers from public mirrors that drop packages, or
are not reliably accessible, by setting up a mirror on a public server.
Mirrored artifacts will include all Centos 7 and EPEL 7 content, as well
as any other downloadable artifacts (packages, tarballs, installers)
required for a successful build.
Modify download_mirror.sh and other supporting scripts to preferentially
pull content from our new mirror. The ability to fall back to original sources
shall be retained to protect against failure of the mirror.
Alternatives
============
The existing build and mirror procedure is the alternative. This is simply
meant to replace and improve upon what already exists.
Data Model Impact
=================
None
REST API Impact
===============
None
Security Impact
===============
The master branch mirror will pull the latest versions of packages from the
source upstream mirrors periodically.
This will include picking up new package versions containing CVE fixes that
have been addressed in the upstream mirrors.
There will be a process put in place to purge older package versions from the
mirror.
Since one of the objectives of the mirror is to ensure package versions do not
disappear randomly on developers, this purge will be done in a controlled
manner.
Other End User Impact
=====================
RPMs used by StarlingX will be more reliably available.
Performance Impact
==================
Build times should improve.
Other Deployer Impact
=====================
None
Developer Impact
=================
Introduction of this feature will modify the steps run by a developer build.
Upgrade Impact
===============
None
Implementation
==============
Assignee(s)
===========
Primary assignee:
Scott Little <slittle1>
Other contributors:
Don Penney <dpenney>
Al Bailey <albailey>
Repos Impacted
==============
* stx-tools
Work Items
===========
* Setup Bare Metal (CENGN) Server
* Setup basic mirror for the community
* Build tool changes for using mirror
* Implement daily mirror updates
* Support for release versioning in mirror and tools
Dependencies
============
None
Testing
=======
StarlingX will be verified to ensure developers can build.
Verify that a new RPM can be added.
Verify that a version of an existing mirror RPM can be changed.
Documentation Impact
====================
Documentation for the build and developer workflow will need to be updated.
References
==========
https://www.cengn.ca/
History
=======
.. list-table:: Revisions
:header-rows: 1
* - Release Name
- Description
* - 2019.03
- Introduced