owned this note
owned this note
Published
Linked with GitHub
# Component and Intergation CI for Release Delivery
###### tags: `Documentation`
### What we heard in the sync meeting..
* rdo promoted components -> candidate compose..
* compose is triggered on http://osp-trunk.hosted.upshift.rdu2.redhat.com/rhel8-osp16-2/current-tripleo/
#### Answer from Shreshtha
:::info
* Candidate composes is from OSP promoted components.
* Trunk compose is triggered by RDO current ( http://osp-trunk.hosted.upshift.rdu2.redhat.com/rhel8-osp16-2/current/
:::
### action items
* AI: build jobs that validate changes to rhos-release... However we do not think the coverage is adequate to run a job or two here.
* Attempting to ru w/o candidate repo - using rhos-release args: "-P 17-nightly ceph-4 -r 8.3"
* We heard the nightly compose is built from RDO promoted components.. is it RDO promoted components or OSP promoted components
:::warning
* Should our intergration pipeline pick up the nightly compose?
* If it's built on RDO promoted components, can it be built w/ OSP Promoted Components
:::
### rhos-17
* traditionally we use trunk-candidate ( please define ) [trunk-candidate](http://download.eng.bos.redhat.com/rel-eng/repos/rhos-17.0-rhel-8-trunk-candidate/tagged-builds.lst)
* on 10/13/2020 - lon/rlandy
```
rlandy|rover> http://download.eng.bos.redhat.com/rel-eng/repos/rhos-17.0-rhel-8-trunk-candidate/tagged-builds.lst
[14:23:00] <rlandy|rover> <rlandy> nothing provides python3-network-runner >= 0.2.2 needed by python3-networking-ansible-4.0.1-0.20201008110557.6f56fd4.el8ost.noarch
```
* at the meeting.. trunk-candidate does not trigger all the time, we instead use the nightly compose.
* rlandy|rover> https://rcm-tools-jenkins.rhev-ci-vms.eng.rdu2.redhat.com/view/Composes II - Nightly/job/nightly-compose-rhosp-17.0
* Also Pungi was mentioned.
* Project Pungi Compose for RHOSP 17.0 nightly (nightly)
* rhos_release_args: "-P 17-nightly ceph-4 -r 8.3"
* using Pungi we failed to build containers
----
## What is the basic information both rel-del and ci needs to understand
### Glossary of terms:
#### Delivery
**brew tags**: Applided during koji/brew builds that help identify and group packages.
**OSP Trunk**: The internal DLRN instance(s) used to sync and perform brew builds internally.
**Trunk Compose**: A pungi compose based on the latest builds from OSP Trunk for a given release.
**Non-Trunk Compose**: A pungi compose based on release candidate brew tags.
**dist-git**: A set of git repositories internally that hold rpm specfiles or the container dockerfiles.
**pungi** a tool to create composes.. makes the build look like what would be available via sub-man. provides repo closure
**odcs** on demand compose service. wrapper around pungi. Single use compose mainly for things like qcow builds. They have a limited lifespan.
**koji** rpm builder, internally know as brew.
#### CI
**Upstream TripleO CI** - tripleo ci deployments that execute against [tripleo repos](https://opendev.org/openstack/?tab=&sort=recentupdate&q=tripleo)
**3rd Party RDO CI** - CI that executes from [rdo softwarefactory](https://review.rdoproject.org/zuul/status). Can vote, but not prevent upstream changes from merging. Can execute against a variety of sources, upstream, github, non-openstack etc..
**Integration Pipeline** - Originally only used to protect upstream jobs from non-tripleo patches breaking tripleo ci. Now is both upstream and downstream. 20+ jobs created to represent *any* voting upstream job.
* upstream: look for "openstack-periodic-integration" in [rdo softwarefactory](https://review.rdoproject.org/zuul/status)
* Monitoring: [link](http://dashboard-ci.tripleo.org/d/HkOLImOMk/upstream-and-rdo-promotions?orgId=1)
* internal: look for "openstack-periodic-integration" in [internal softwarefactory](https://sf.hosted.upshift.rdu2.redhat.com/zuul/t/tripleo-ci-internal/status)
* Monitoring: [link](http://tripleo-cockpit.usersys.redhat.com/d/KyHCwLHMk/rhos-16-2-full-component-pipeline?orgId=1)
**Component Pipeline** - CI to check and test a known good build with changes from ind
### Workflows
* where are the dockerfiles src for the compose. (rlandy)
## rhos-17 plan
* non trunk compose
* run diff
* align centos8 and rhel8 rpms
* run diff
* try to ci
----
* What we heard the workflow is..
```graphviz
digraph hierarchy {
nodesep=0.1
node [color=darkgreen,fontname=Courier,fontcolor=black,shape=box]
edge [color=darkgreen]
"RDO compute/consistent"->{ "RDO compute/component-ci-testing" }
"RDO security/consistent"->{ "RDO security/component-ci-testing" }
"RDO cinder/consistent"->{ "RDO cinder/component-ci-testing" }
"RDO compute/component-ci-testing"->{ "RDO compute/promoted-components" }
"RDO cinder/component-ci-testing"->{ "RDO cinder/promoted-components" }
"RDO security/component-ci-testing"->{ "RDO security/promoted-components" }
node [color=darkgreen,fontname=Courier,fontcolor=black,shape=box]
edge [color=darkgreen]
"RDO compute/promoted-components"->{ "RDO promoted-components" }
"RDO cinder/promoted-components"->{ "RDO promoted-components" }
"RDO security/promoted-components"->{ "RDO promoted-components" }
->" RDO --> Import to OSP Candidate Compose (where does this go?) "
->"wait for " -> "OSP current-tripleo"
}
```
-----
# Full CI workflow
Full picture, how things were designed to work.
Pasted to [googlejam board](https://jamboard.google.com/d/1p4ODk5MxuvJZyL42Wzm45v_3KY9_catxuUi4Z1cbYfQ/viewer?f=0) for notes.
```graphviz
digraph hierarchy {
nodesep=0.1
node [color=darkgreen,fontname=Courier,fontcolor=black,shape=box]
edge [color=darkgreen]
"RDO compute/consistent"->{ "RDO compute/component-ci-testing" }
"RDO security/consistent"->{ "RDO security/component-ci-testing" }
"RDO cinder/consistent"->{ "RDO cinder/component-ci-testing" }
"RDO compute/component-ci-testing"->{ "RDO compute/promoted-components" }
"RDO cinder/component-ci-testing"->{ "RDO cinder/promoted-components" }
"RDO security/component-ci-testing"->{ "RDO security/promoted-components" }
node [color=darkgreen,fontname=Courier,fontcolor=black,shape=box]
edge [color=darkgreen]
"RDO compute/promoted-components"->{ "RDO promoted-components" }
"RDO cinder/promoted-components"->{ "RDO promoted-components" }
"RDO security/promoted-components"->{ "RDO promoted-components" }
->{" RDO --> Import to OSP Delorean "}
->"OSP DLRN builds from import" ->"OSP compute/consistent" -> "OSP compute/component-ci-testing" -> "OSP compute/promoted-components" ->{ "OSP promoted-components" }
"OSP DLRN builds from import" -> "OSP cinder/consistent" -> "OSP cinder/component-ci-testing" -> "OSP cinder/promoted-components" ->{ "OSP promoted-components" }
"OSP DLRN builds from import" -> "OSP security/consistent" -> "OSP security/component-ci-testing" -> "OSP security/promoted-components" ->{ "OSP promoted-components" }
"OSP promoted-components" -> "OSP tripleo-ci-testing" -> "OSP Integration Tests" -> "OSP current-tripleo"
"OSP current-tripleo" -> "OSP Trigger Compose"
}
```
## RHOS-RELEASE and YUM REPOS
### OSP - 16.2
DLRN = http://osp-trunk.hosted.upshift.rdu2.redhat.com/rhel8-osp16-2/
Dependencies 16.2 [link](http://git.app.eng.bos.redhat.com/git/tripleo-environments.git/tree/config/release/rhos-16.2.yml)
* rhos-releaes
* osp_release: rhos-16.2
* rhos_release_args: "ceph-4 -r 8.3"
* yum repos
```
- type: generic
reponame: osptrunk-candidate-deps
filename: osptrunk-candidate-deps.repo
baseurl: http://download.eng.bos.redhat.com/rel-eng/repos/{{ osp_release }}-rhel-8-trunk-candidate/x86_64/
priority: 30
enabled: 1
gpgcheck: 0
- type: generic
reponame: rhosp-ansible-2.9
filename: rhosp-ansible-2.9.repo
baseurl: http://pulp.dist.prod.ext.phx2.redhat.com/content/dist/layered/rhel8/x86_64/ansible/2.9/os/
priority: 30
enabled: 1
gpgcheck: 0
- type: generic
reponame: osp-trunk-deps
filename: osptrunk-deps.repo
baseurl: http://download.devel.redhat.com/brewroot/repos/{{ osp_release }}-rhel-8-trunk-build/latest/x86_64
priority: 30
module_hotfixes: 1
enabled: 0
gpgcheck: 0
```
### OSP - 17.0
DLRN = http://osp-trunk.hosted.upshift.rdu2.redhat.com/rhel8-osp17/
Dependencies OSP-17 [link](http://git.app.eng.bos.redhat.com/git/tripleo-environments.git/tree/config/release/rhos-17.yml)
```
- type: generic
reponame: osptrunk-candidate-deps
filename: osptrunk-candidate-deps.repo
baseurl: http://download.eng.bos.redhat.com/rel-eng/repos/rhos-17.0-rhel-8-trunk-candidate/x86_64/
priority: 30
enabled: 1
gpgcheck: 0
- type: generic
reponame: rhosp-ansible-2.9
filename: rhosp-ansible-2.9.repo
baseurl: http://pulp.dist.prod.ext.phx2.redhat.com/content/dist/layered/rhel8/x86_64/ansible/2.9/os/
priority: 30
enabled: 1
gpgcheck: 0
- type: generic
reponame: osp-trunk-deps
filename: osptrunk-deps.repo
baseurl: http://download.devel.redhat.com/brewroot/repos/rhos-17.0-rhel-8-trunk-build/latest/x86_64
priority: 30
module_hotfixes: 1
enabled: 0
gpgcheck: 0
```
:::info
A real time view into the above promotions can be found here:
* [high level view of all promotions](http://dashboard-ci.tripleo.org/d/QrkFP-zGz/upstream-and-rdo-promotions?orgId=1)
* [component level promotions](http://dashboard-ci.tripleo.org/d/FE8Hf29Wz/component-pipeline)
:::
# meeting notes
## 10/29/2020
Compare 16.2 builds
- Control
- https://sf.hosted.upshift.rdu2.redhat.com/logs/openstack-periodic-integration-rhos-16.2/opendev.org/openstack/tripleo-ci/master/periodic-tripleo-ci-rhel-8-ovb-3ctlr_1comp-featureset001-internal-rhos-16.2/c3ecaf6/logs/undercloud/var/log/extra/all_available_packages.txt.gz
- Test
- http://rhos-ci-logs.lab.eng.tlv2.redhat.com/logs/rcj/phase1-16.2_director-rhel-8.3-virthost-1cont_1comp_1ceph-ipv4-geneve-ceph/68/undercloud-0/var/log/extra/all_available_packages.txt.gz
Diff: https://termbin.com/ou35
Into the compose..
dump
versions.csv
delorean.repo
delreoan.md5
Ignore list:
*.debuginfo
*.debugsource
*-devel
*-doc
blosc-*
golang.*
hdf5-.*
jjoyce to check erlang
openstack-selinux-*
openstack-tripleo-heat-templates-compat
openstack-tripleo-validations-tests
python2.*
python3-heat-agent
python3-heat-agent-*
python3-kuryr-*
python3-matplotlib-*
pyxattr-*
yaml-cpp-static
Checked into https://code.engineering<foo>/gerrit/#/c/216562/1/compare_rpms/rhos-16_2.txt
## How patches are imported from upstream to internal
DLRN is working as expected here. Due to its design constraints, the import from RDO is done in several steps:
* a) Copy the RDO spec as-is.
* b) Rebase the downstream source git on top of the upstream commit being built, so our downstream-only commits are always up to date.
* c) Add patches from the downstream git via rdopkg (rhospkg actually). This also updates the changelog, and
sets the specific Release number in NVR, which is defined as -<a>.<timestamp>.<commit hash>.el8.ost, where
<a> is a OSP release-specific number (2 for 16.2).
* d) rhpkg import / rhpkg build
This ensures that any spec change done in RDO is brought to OSP without manual intervention, and the downstream
distgit -trunk-patches branch should never be manually modified.