# 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.