# RHOS 16.2 Component and Integration Pipelines
###### tags: `Design`
## Team sync meeting points
* timelines
* basic status
* share dependencies
* steps required before next sync call
## Design and steps
Order of operations 16.2:
### mini-integration
- [x] container builds ( jobs )
- [x] overcloud image builds ( jobs )
- [x] ONE standalone basic job
- [x] ATTEMPT passing not required fs001
### component pipeline
- [x] create standalone job to each component.
- [x] ensure this one job is in criteria
### add other jobs
1. Add the rest of the jobs as you can to both integration and component pipeline.
2. Use the same job set found in rhos-17 integration and component
## Open reviews
### Upstream
* ~~https://review.opendev.org/#/c/744786/ ~~
* ~~https://review.opendev.org/#/c/744166/~~ WIP: Add container excludes for rhos-16.2 builds
* ~~https://review.opendev.org/#/c/744562/ Separate required-projects and roles from base jobs~~
* ~~https://review.opendev.org/#/c/745346/~~ fix openstack collections in tq
* https://review.opendev.org/#/c/743432/ native container builds in standalone
* READY FOR REVIEW
* ~~https://review.rdoproject.org/r/#/c/28775/~~ test cr repos WIP: Add dependency job for centos 8 CR repo
* ~~Waiting on Train CentOS 8 container patches to merge and reach downstream repos (in upstream gates)~~
~~https://review.opendev.org/#/c/736752/
Implement a new Container Images layout
https://review.opendev.org/#/c/742208/
Revert "Disable ubi8 job on train"
https://review.opendev.org/#/c/740095/
Add openstack tripleo container image build~~
* ~~https://review.rdoproject.org/r/28730 Add rhos-16.2 defaults to get_hash role~~
### Downstream
**CONTAINERS**
* ~~https://code.engineering.redhat.com/gerrit/#/c/207802/ Make container jobs for 16.2 use overrides~~
* ~~https://code.engineering.redhat.com/gerrit/#/c/208964/ Add shadowing jobs in zuul.d/required-projects-overrides.yaml~~
* ~~https://code.engineering.redhat.com/gerrit/#/c/195884/ Test container push~~
**STANDALONE**
* ~~https://code.engineering.redhat.com/gerrit/#/c/208575/ Periodic 16.2 standalone job~~
* ~~https://code.engineering.redhat.com/gerrit/#/c/209162/ -
Add rhel-8.3 beta repo to 16.2 release files~~
* ~~https://code.engineering.redhat.com/gerrit/#/c/209530/~~ Add sc007 component and integration jobs in 16.2
**OVB**
* ~~https://code.engineering.redhat.com/gerrit/#/c/209571/~~ WIP: Add rhos-16.2 OVB job
**COMPONENT**
~~Update 16.2 component jobs and add them to template https://code.engineering.redhat.com/gerrit/209243~~
**PIPELINE**
~~* Add component-pipeline-rhos-16.2 templates https://code.engineering.redhat.com/gerrit/#/c/209387/~~
~~* https://code.engineering.redhat.com/gerrit/#/c/209208/ Add integration pipeline template for rhos 16.2~~
~~* https://code.engineering.redhat.com/gerrit/#/c/209209/ Add rhos-16.2 integration pipeline~~
~~* https://bugzilla.redhat.com/show_bug.cgi?id=1869379 bug on the 16.2 standalone - fixed by latest rpms~~
~~* https://review.opendev.org/#/c/745819/ Generalize vars in template file in build-test-packages role~~
* ~~https://code.engineering.redhat.com/gerrit/#/q/topic:prep-16-2+(status:open+OR+status:merged)
container build and push/upload
image build/push
RHOS-16.2 release files and criteria files~~
* ~~https://code.engineering.redhat.com/gerrit/207509 Add component jobs for rhos-16.2~~
* ~~https://code.engineering.redhat.com/gerrit/#/c/208642/ - Temp add missing packages - awaiting import and use virt:8.3 instead of virt:8.2~~
* ~~https://code.engineering.redhat.com/gerrit/#/c/208453/ Remove rhos-17 hard coded vlaues from build-image~~
## Open bugs:
* https://bugzilla.redhat.com/show_bug.cgi?id=1867132 Buildah package upgrade from 1.14.9 ->1.15.x for rhos-16.2-rhel-8-trunk-build
* https://bugzilla.redhat.com/show_bug.cgi?id=1867133 Downstream repo needed for ansible-collections-openstack
* https://github.com/containers/buildah/issues/2521
* https://bugzilla.redhat.com/show_bug.cgi?id=1784001 - We are hitting similiar issue on Rhel8.3
* https://bugzilla.redhat.com/show_bug.cgi?id=1828681
* https://bugzilla.redhat.com/show_bug.cgi?id=1869379 [OSP 16.2] Containers fail to start for step 2 - mysql_init_bundle error
* Latest podman(podman.x86_64-1.6.4-13) is causing deployment failure, Using older - podman.x86_64 1.6.4-12.module+el8.2.0+6670+014d0ff8 to get pass the issue - **Need to open bug**
## Required directories/namespaces for 16.2
* new namespace on Internal Upshift registry: https://url.corp.redhat.com/e32bba0
/tripleorhos-17 - RHOS 17 containers (in use now)
~~/tripleorhos-16-2 - RHOS 16.2 containers~~
* ~~images and dockerfile uploads on internal images server
ADDED~~
## Naming convention (16.2/16_2/16-2)
* https://url.corp.redhat.com/0db0776 DLRN rhel8-osp16-2/
* https://url.corp.redhat.com/e14f53e Trunk candidate rhos-16.2-rhel-8-trunk-candidate/
## Dependency issues
* jjoyce> rlandy: 'brew list-pkgs --tag rhos-16.2-rhel-8-trunk-build' would give you a list of what we have. Let me find the url
shreshtha> rlandy, you can also compare tag-inheritance for 16.2 and 17.0 to get answer of your initial question
shreshtha> brew list-tag-inheritance rhos-16.2-rhel-8-build has rhel-8.3.0-z-build-base whereas 17.0 has rhel-8-build-base
jjoyce> In theory 17.0 and 16.2 should be using the same rhel version
### Dependency versions per pipeline
* container tools 8.2 (until 8.3) in integration/component lines
* containers tools from rhel8 stream in dependency pipeline
## Other Issues
* RESOLVED: With rhel8.3 - image build job failing with below error -
failed to glob pattern /etc/rc0.d/[SK][0-9][0-9]network: No such file or directory[3].(Same job is working with rhel8.2)
https://sf.hosted.upshift.rdu2.redhat.com/logs/10/207510/14/check/periodic-tripleo-rhel-8-buildimage-overcloud-full-rhos-16.2/2e91c58/logs/build.log.txt.gz
We are hitting similiar issue on Rhel8.3
https://bugzilla.redhat.com/show_bug.cgi?id=1784001
## RHEL 8.3 nodepool node
apevec> 8.3 should be in snapshots phase
apevec> next one ES2 compose is Aug 25
apevec> it goes to CDN for HTB customers so should be reasonable stable
apevec> publish Sep 2
rlandy> so worth building a rhel 8.3 node?
apevec> I'd say not before ES2
apevec> let's start doing it Aug 26, that's the official "layered product start testing
* ~~https://code.engineering.redhat.com/gerrit/210130~~ Add rhel8.3-cloud.yaml for RHEL 8.3 nodepool node
## Working jobs:
* promotion jobs
* image builds
* container build/push/upload
* Standalone job
* fs001 running on OVB
* scenario job 007, 004
## Ensure imports from upstream -> 16.2
* should use https://trunk.rdoproject.org/centos8-train/promoted-components/
## Dependency Pipeline
### CENTOS use centos8-stream vs. cr
http://mirror.den01.meanservers.net/centos/8-stream/
http://cloud.centos.org/centos/8-stream/x86_64/images/
### RHEL
Isolate the base and various important dependencies.
* baseos 8.2 -> 8.3 -> 8.4
* ansible
* http://download-node-02.eng.bos.redhat.com/rhel-8/nightly/ANSIBLE/latest-ANSIBLE-2.9-RHEL-8/compose/Base/x86_64/os/
* libpod,podman,buildah
* latest 8.2. compose -> app-stream
* module:
* container-tools:8.2 --> 8.3
* both are contained in the repo below, need adjust the config.
* http://download-node-02.eng.bos.redhat.com/rhel-8/rel-eng/RHEL-8/latest-RHEL-8.3/compose/AppStream/x86_64/os/
* adv-virt
* http://download-node-02.eng.bos.redhat.com/rhel-8/nightly/ADVANCED-VIRT-8/latest-ADVANCED-VIRT-8.1.1-RHEL-8/compose/Advanced-virt/x86_64/os/
* pacemaker
* http://download-node-02.eng.bos.redhat.com/rhel-8/rel-eng/RHEL-8/latest-RHEL-8.2/compose/HighAvailability/x86_64/os/
* openvswitch / ovn
* http://download-node-02.eng.bos.redhat.com/rhel-8/nightly/FDP/latest-FDP-8-RHEL-8/compose/Server/x86_64/os/
* the dependency-repos
* puppet?
Stable RHEL 8.1 - 16.1
as 8.2 is approaching...
* base-os repo 8.1.0 stream, 8.1.1 stream ( looks like centos cr. )
These can be two different pipelines:
AppStreams:
* buildah/podman
* python-depencies
* http://download-node-02.eng.bos.redhat.com/rhel-8/rel-eng/RHEL-8/latest-RHEL-8.3/compose/AppStream/x86_64/os/
* https://docs.engineering.redhat.com/display/PRODCHAIN/OSP+16.1+Repo+and+module+configuration
#### DESIGN - repo setup for the dep-pipeline
-e @tripleo-env/config/release/tripleo-ci/rhel16.2
+
-e @tripleo-env/config/release/dep_pipeline/RHEL/8.2/container-tools/2.0.yaml
-e @tripleo-env/config/release/dep_pipeline/RHEL/8.2/container-tools/rhel8.yaml
#### TASKS - remove any 3rd party dependency jobs
* Once container-tools jobs are running, we no longer need buildah/podman 3rd party jobs.
* Remove these 3rd party jobs as the last stage of setting up the dependency lines.
#### Diff script design
* Where does the script run and where is it displayed
Suggestion - actually run the diff within the job and store the output in the logs but have a script that we can run independently
Output the diff file link in the cockpit
* What does the diff script display?
- The difference between the two lists ONLY
- Not a combined list of thw two outputs
- If a file exists in only one OR if it exists as a different version
* Keep the output file naming consistent
- control list
- dependency list
* Deciding if there is a difference in the versions:
- rpm out looks as follows: {name}-{number/letter sequence}
- pattern split:
```
import re
package_name = re.split('(-[0-9]+)', i)[0]
```
### CENTOS (usptream)