111 lines
4 KiB
Text
111 lines
4 KiB
Text
= Greenwave SOP
|
|
|
|
== Contact Information
|
|
|
|
Owner::
|
|
Factory2 Team, Fedora QA Team, Infrastructure Team
|
|
Contact::
|
|
#fedora-qa, #fedora-admin
|
|
Persons::
|
|
gnaponie (giulia), mprahl, lucarval, ralph (threebean)
|
|
Public addresses::
|
|
* https://greenwave-web-greenwave.app.os.fedoraproject.org/api/v1.0/version
|
|
* https://greenwave-web-greenwave.app.os.fedoraproject.org/api/v1.0/policies
|
|
* https://greenwave-web-greenwave.app.os.fedoraproject.org/api/v1.0/decision
|
|
Servers::
|
|
* In OpenShift.
|
|
Purpose::
|
|
Provide gating decisions.
|
|
|
|
== Description
|
|
|
|
* See
|
|
http://fedoraproject.org/wiki/Infrastructure/Factory2/Focus/Greenwave[the
|
|
focus document] for background.
|
|
* See https://gating-greenwave.readthedocs.io/en/latest/[the upstream docs] for more
|
|
detailed info.
|
|
|
|
Greenwave's job is:
|
|
|
|
* answering yes/no questions (or making decisions)
|
|
* about artifacts (RPM packages, source tarballs, …)
|
|
* at certain gating points in our pipeline
|
|
* based on test results
|
|
* according to some policy
|
|
|
|
In particular, we'll be using Greenwave to provide yes/no gating
|
|
decisions to _Bodhi_ about rpms in each update. Greenwave will do this
|
|
by consulting resultsdb and waiverdb for individual test results and
|
|
then combining those results into an aggregate decision.
|
|
|
|
The _policies_ for how those results should be combined or ignored, are
|
|
defined in ansible in
|
|
https://pagure.io/fedora-infra/ansible/blob/main/f/roles/openshift-apps/greenwave/templates/configmap.yml[roles/openshift-apps/greenwave/templates/configmap.yml].
|
|
We expect to grow these over time to new use cases (rawhide compose gating, etc..)
|
|
|
|
== Observing Greenwave Behavior
|
|
|
|
Login to `os-master01.iad2.fedoraproject.org` as `root` (or,
|
|
authenticate remotely with openshift using
|
|
`oc login https://os.fedoraproject.org`), and run:
|
|
|
|
....
|
|
$ oc project greenwave
|
|
$ oc status -v
|
|
$ oc logs -f dc/greenwave-web
|
|
....
|
|
|
|
== Database
|
|
|
|
Greenwave currently has no database (and we'd like to keep it that way).
|
|
It relies on `resultsdb` and `waiverdb` for information.
|
|
|
|
== Upgrading
|
|
|
|
You can roll out configuration changes by changing the files in
|
|
https://pagure.io/fedora-infra/ansible/blob/main/f/roles/openshift-apps/greenwave[roles/openshift-apps/greenwave/] and running the
|
|
https://pagure.io/fedora-infra/ansible/blob/main/f/playbooks/openshift-apps/greenwave.yml[playbooks/openshift-apps/greenwave.yml] playbook.
|
|
|
|
To understand how the software is deployed, take a look at these two
|
|
files:
|
|
|
|
* https://pagure.io/fedora-infra/ansible/blob/main/f/roles/openshift-apps/greenwave/templates/imagestream.yml[roles/openshift-apps/greenwave/templates/imagestream.yml]
|
|
* https://pagure.io/fedora-infra/ansible/blob/main/f/roles/openshift-apps/greenwave/templates/buildconfig.yml[roles/openshift-apps/greenwave/templates/buildconfig.yml]
|
|
|
|
See that we build a fedora-infra specific image on top of an app image
|
|
published by upstream. The `latest` tag is automatically deployed to
|
|
staging. This should represent the latest commit to the `master` branch
|
|
of the upstream git repo that passed its unit and functional tests.
|
|
|
|
The `prod-fedora` tag is manually controlled. To upgrade prod to match
|
|
what is in stage, move the `prod-fedora` tag to point to the same image
|
|
as the `latest` tag. Our buildconfig is configured to poll that tag, so
|
|
a new os.fp.o build and deployment should be automatically created.
|
|
|
|
You can watch the build and deployment with `oc` commands.
|
|
|
|
You can poll this URL to see what version is live at the moment:
|
|
|
|
https://greenwave-web-greenwave.app.os.fedoraproject.org/api/v1.0/version
|
|
|
|
== Troubleshooting
|
|
|
|
In case of problems with greenwave messaging, check the logs of the
|
|
container dc/greenwave-fedmsg-consumers to see if the is something
|
|
wrong:
|
|
|
|
....
|
|
$ oc logs -f dc/greenwave-fedmsg-consumers
|
|
....
|
|
|
|
It is also possible to check if greenwave is actually publishing
|
|
messages looking at
|
|
https://apps.fedoraproject.org/datagrepper/raw?category=greenwave&delta=127800&rows_per_page=1[this
|
|
link] and checking the time of the last message.
|
|
|
|
In case of problems with greenwave webapp, check the logs of the
|
|
container dc/greenwave-web:
|
|
|
|
....
|
|
$ oc logs -f dc/greenwave-web
|
|
....
|