Files
Brendan Reilly 4a30847bea Remove Greenwave Code
No implementations of MBS are using Greenwave, and there are no current plans
to do so. Koji Resolver will be sufficient for any usecase dependent on gating.
2022-03-30 14:27:34 -04:00
..
2021-04-21 16:23:08 -04:00
2022-03-30 14:27:34 -04:00

MBS-Koji integration tests

Background

This directory contains a set of Jenkins pipelines for building MBS container images and running integration tests between MBS and Koji. These are based on the WaiverDB pipeline structure. Please see the extensive documentation there for information on the pipeline layout and workflows.

Getting started

Deploying a Jenkins master

Before you can run these pipelines you need to have a Jenkins master configured to communicate with an OpenShift project. The simplest way to do this is to run your Jenkins master in your OpenShift project. The first time you create a BuildConfig with strategy.type: JenkinsPipeline, OpenShift will deploy a Jenkins master using the default settings. However, these pipelines will not run using the default settings. It is recommended that before creating any BuildConfigs, you setup your Jenkins master using:

make -C openshift/integration/koji/pipelines install-jenkins

This will deploy and configure your Jenkins master with the required set of plugins. Note: The Jenkins master will be configured to disable script security. Be very careful when running untrusted code, as scripts will have full access to your Jenkins environment. If you don't wish to disable script security, you may edit openshift/integration/koji/pipelines/Makefile to change that setting. You will need to allow scripts to access a number of Groovy/Java APIs before the pipelines will run successfully.

Configuring the pipelines

To load the pipelines into OpenShift (and Jenkins) run:

make -C openshift/integration/koji/pipelines install

This will create all the objects required for running the pipelines.

Configuring secrets for pushing images

If you're going to be pushing your images anywhere other than the OpenShift internal registry, you'll need to configure secrets which give you permission to push to that registry.

  • Go to your registry dashboard and create a robot account.
  • Backup your docker-config-json file ($HOME/.docker/config.json) if present.
  • Run docker login with the robot account you just created to produce a new docker-config-json file.
  • Create a new OpenShift secret for a private registry named factory2-pipeline-registry-credentials from your docker-config-json file:
  oc create secret generic factory2-pipeline-registry-credentials \
    --from-file=.dockerconfigjson="$HOME/.docker/config.json" \
    --type=kubernetes.io/dockerconfigjson

Configuring a Pagure API key

If you would like the pipelines to provide feedback on PRs and commits, you need to configure a Pagure API key.

  • Go to your Pagure repository settings, and go to the 'API Keys' section.
  • Click on the Create new key button to add new API key with the Flag a pull-request, Comment on a pull-request, and Flag a commit permissions.
  • Add your newly-created API key to OpenShift:
make -C openshift/integration/koji/pipelines update-pagure-api-key KEY=<value from Pagure>

Building a Jenkins slave image

Before you can run the pipelines, you need an image to use as the Jenkins slave. This step should be repeated any time the Dockerfile (openshift/integration/koji/containers/jenkins-slave/Dockerfile) for the Jenkins slaves is updated.

oc start-build mbs-premerge-jenkins-slave

Note: The mbs-premerge-jenkins-slave and mbs-postmerge-jenkins-slave jobs produce the same output. Either may be used.

Setting up Jenkins jobs

Polling

If you want the premerge and postmerge jobs to be triggered automatically based on SCM changes, you need to run the following jobs once manually, so Jenkins initates polling:

  • mbs-polling-for-prs
  • mbs-polling-for-master
Message bus

Note: This requires the Red Hat CI Plugin to be installed. If you're using message bus integration to enable automatic triggering of test jobs and promotion, you need to run the trigger jobs once manually so Jenkins can setup required message consumers. The following jobs should be triggered manually:

  • mbs-trigger-on-latest-tag
  • mbs-trigger-on-stage-tag