owned this note
owned this note
Published
Linked with GitHub
# Content Provider / Parent-Child work items
###### tags: `Design`
[TOC]
# changes
https://projects.engineering.redhat.com/browse/TRIPLEOCI-210
# to-do
- [x] build a poc job ( sagi )
- [x] get review from tripleo, infra-team ( wes )
- [x] socialize w/ ci team ( wes )
# Documentation
## Glossary / Terms / Naming conventions
### Templates
Create a new template w/ an additional **"-pipeline"** template name
### Parent of consumer job
(when creating new parent) tripleo-ci-undercloud-content-consumer-centos-8
## Doc
# Plan
- [x] (sshanidm) Define a job that can expose containers registry link and YUM repo link
- [x] (chandan)Define a test job (i.e. scenario001) that consumes and uses these links
- [x] Create a job that builds RPM and containers and pushing containers to local registry. Make these steps optional with parameters.
- [x] To configure child job (scenario001) to use correctly these artifacts if need. Other branchful jobs should be able still to build/download containers by their own.
- [x] demo DF.
- [x] https://pdfhost.io/v/b8IOld.o6_New_CI_flowpdf.pdf
- [ ] rename standalone-provider -->
- [x] tripleo-ci-centos-8-content-provider (sagi)
- [ ] tripleo-ci-centos-7-content-provider (sagi)
- [x] communicate plan (wes)
- [ ] move all rdo third party jobs to the rdo registry. (wes w/ sagi's review)
- [x] plan out branchful jobs.. ( see below )
- [x] Test multinode jobs w/ a provider job (sagi)
- [x] push ceph containers to openstack zuul registry or quay or both ( manual ) (sagi / chandan)
- [ ] podman pull on the provider for non-tripleo containers (need code ) ( sagi / chandan )
- [ ] Need to add redundant registries to pull from quay, rdo-registry, docker.io, in that order
- [ ] migrate ussuri ( sagi / chandan )
- [ ] migrate train centos8 ( sagi / chandan )
- [ ] migrate train centos7 ( pending decision re: Alex on c7 train )
- [ ] work out provider parent for changes that have both c7 and c8 jobs.
- [ ] migrate stein centos7 ( pending results from just using quay.io)
- [ ] migrate the rest ( pending results from just using quay.io )
## Planning meeting Agenda, Discussion Items:
### address the current issues
* atm we have gate jobs running that are not in check.
#### to-do
- [x] need a patch(s) to fix check vs gate ( sagi )
- [x] Unable to freeze job graph: Job tripleo-ci-centos-8-standalone depends on tripleo-ci-centos-8-content-provider which was not run. ( sagi )
* example https://review.opendev.org/#/c/749710/
* FIX https://review.opendev.org/#/c/752082/
### Branchful parent / child jobs Plan
* Idea
* Add a content provider job for each release
* Put it as a dependencies on the branchful job
* Structure:
* centos-7-train-content provider
* standalone-7-train:
* dependencies:
* centos-7-train-content provider
* centos-7-stein-content provider
* standalone-7-stein:
* dependencies:
* centos-7-stein-content provider
#### meeting notes
* content provider for each release
* question: how complicated is that zuul config.. every branchful job will have a dependency
* really this is just for the tripleo-ci repo.
* concern about time:
* rocky, stein, queens
* rocky.. let's drop all but one job
* remove branchful
* stein.. let's drop all but one job
* remove branchful
* queens.. need to keep what we have.
##### TO-DOs
- [ ] remove centos-7 train container-multinode, -2 from wes atm (chandan)
- https://review.opendev.org/#/q/topic:remove_centos7_multinode+(status:open+OR+status:merged)
* branchful train-c7, train-c8, ussuri, victoria
- [ ]( sagi ) we will have branchful content-provider nodes
* https://review.opendev.org/#/c/752301/
- [ ] ( Chandan ) push docker registry container to rdo-registry
- [x] ( Mariios ) push docker registry container to QUAY
- [ ] (chandan) Use Quay.io docker regitry container
* https://review.opendev.org/#/c/752642/
* https://review.opendev.org/#/c/752643/
### CentOS -7 based content provider jobs
* Idea
* run runv3 playbook to set the env and perform build test packages
then call tipleo-ci container-builds role and push the contents to local registry and pause th job and consume it in same fashion
- [ ] ( Chandan ) https://review.opendev.org/752419
- [ ] ( Chandan ) https://review.opendev.org/752421
#### meeting notes
* c7 is following the same pattern as c8 jobs w/ a content provider, however implementation jobs is different.
* We may choose not to use c7 content providers and just pull containers from key.
### Confirm Promoter Server push docker.io && Quay.io
- [ ] ( marios ) promoter verification re: pushing to both docker.io and quay.io
### update and upgrade jobs [Need discussion]
Before that: How updates and upgrade jobs work?
Ideas:
* There is no issue with update jobs as there will be package updates only? so no changes required there
* for upgrade job, we might to have two content provider for example
* upgrade job from train to ussuri
* we need to build containers for both train and ussuri and put both
jobs as deps
* layout
```
- c8-content-provider-previous-current-tripleo
- c8-content-provider-current-tripleo
- c8-update job:
dependencies:
- c8-content-provider-previous-current-tripleo
- c8-content-provider-current-tripleo
- c8-standalone job:
dependencies:
- c8-content-provider-current-tripleo
```
#### meeting notes
* deploys w/ previous-current-tripleo updates to current-tripleo
* two content providers for update / upgrade jobs
* n + 1 jobs
* n content provider
* build gerrit changes for n
* provide yum repo for n
* provide containers for n
* n +1
* build gerrit change for n+1
* provide yum repo for n+1
* provide container for n+1
* in CI after deployment, prior to upgrade switch the yum repos, and update the containers-prepare-params.yml
#### update / upgrade TO-DO
Focus here should be soley on CentOS-8. Once we have validated this w/ C8, come back to CentOS-7
- [ ] create two content-provider jobs
- [ ] one for previous-current-tripleo
- [ ] one for current-tripleo ( exists )
- [ ] ensure the switch from previous-build-content-provider
- [ ] yum repo change (this may exist)
- [ ] switch container-prepare-params
- [ ] review and validate this work
- call 22 sep:
- update job should be OK sshnaidm already fixed - he will verify
- standalone-upgrade - pull for tripleo-u deployment and then re-use the built containers for the upgrade (master current-tripleo) from provider
- then can workout the building of tripleo-u too...
- TBD if there will be one provider job with different namespace in same registry for example
- or just build in the standalone-upgrade job... since no-one else will consume tripleo-u (maybe the multinode upgrade job can re-use.)
### For rdo software factory jobs
* ~~push containers to quay.io with different namespace and consuming it in rdo third party jobs~~
* Also pushing non-tripleo containers to rdo registry under ceph namespace
* rdo registry will be THE registry for jobs running in rdo software factory.
- [ ] update rdo env config,
- [ ] WATCH LIST, do not change yet.. update release files move from docker.io to either quay or rdo registry
- [ ] e.g. https://opendev.org/openstack/tripleo-quickstart/src/branch/master/config/release/tripleo-ci/CentOS-8/master.yml#L23
- [ ] https://review.opendev.org/#/c/752685/
- [ ] all rdo env or job config points to rdo registry
#### meeting notes
### Handling jobs defined in zuul layouts outside of tripleo-ci.
* https://opendev.org/openstack/tripleo-heat-templates/src/branch/master/zuul.d/layout.yaml#L14
- [ ] Ensure any job outside of tripleo is using standalone w/ build-containers flag set.
- [ ] victoria, ussuri, train c8
- [ ] stein, rocky, queens
- [ ] set the jobs to use quay.io
- [ ] consider a non-tripleo job template that is the standard for non-standalone jobs.
- [ ] consider asking other projects to drop tripleo jobs if quay.io is a problem
### Any changes to component pipeline?
* these jobs should all use the rdo-registry
- [ ] env override https://review.opendev.org/#/c/752685/
---
# Templates
tripleo-ci templates that need to switch to the new content provider:
- ~~tripleo-ci-build-containers-jobs~~
- ~~tripleo-build-containers-jobs~~
- ~~tripleo-ansible-role-jobs~~
- ~~tripleo-ci-buildimage-jobs~~
- ~~tripleo-buildimage-jobs~~
- ~~tripleo-multinode-baremetal-minimal~~
- https://review.opendev.org/756919
- [x] tripleo-multinode-container-minimal >> ready
- [x] tripleo-periodic >> ready
- [ ] tripleo-undercloud-jobs >> wip
- [ ] https://review.opendev.org/#/c/756128
- [ ] https://review.rdoproject.org/r/#/c/29894/
- [x] tripleo-standalone-scenarios-full >> ready
# tripleo-repos
https://projects.engineering.redhat.com/browse/TRIPLEOCI-210
Switch to content provider jobs/templates
- tripleo-common: https://review.opendev.org/#/c/756382
- python-tripleoclient: https://review.opendev.org/#/c/756516/
- puppet-tripleo: https://review.opendev.org/756554
- tripleo-ansible: https://review.opendev.org/756561
- tripleo-quickstart: https://review.opendev.org/756572
- tripleo-quickstart-extras: https://review.opendev.org/756575
# Q&A (Sprint #34)
### gerrit-topic: new-ci-job
(~~NOT new-ci-jobs~~)
https://review.opendev.org/#/q/branch:master+topic:new-ci-job
### Original provider patch for reference
https://opendev.org/openstack/tripleo-ci/commit/f360f4168f7933bb561093a04c5c7f3c26200cd5
### How does content provider jobs work?
> https://zuul-ci.org/docs/zuul/reference/jobs.html#pausing-the-job
### Where is it implemented in our jobs?
> https://github.com/openstack/tripleo-ci/blob/7acd24cec0d0ab97a7c5d17c5d2ab1dc85df3106/playbooks/tripleo-ci/run-provider.yml#L14
### Which jobs are using content provider parent ?
> standalone* and multinode* jobs parent content provider job (or any job that has dependencies on content provider)
```
dependencies:
- tripleo-ci-centos-8-content-provider
```
### Clarify what needs to be done in this task: Wire-up content provider pipeline into tripleo repos
> Switch to content-provider jobs in all tripleo/ci repos
> See https://projects.engineering.redhat.com/browse/TRIPLEOCI-210