Skip to content

Framework Overview

Introduction

The goal of the community operator pipeline framework project is to deploy and configure pipelines for various flavors of Kubernetes or Openshift clusters and publish multiple versions of operator indexes. GitHub projects via GitHub Action technology are supported. Currently, the following projects are supported:

Codebase and development

Name Project Barnches
Framework https://github.com/redhat-openshift-ecosystem/community-operators-pipeline ci/latest and ci/dev
Ansible playbooks https://github.com/redhat-openshift-ecosystem/operator-test-playbooks upstream-community and upstream-community-dev
User and maintainer documentation (k8s and ocp) https://github.com/redhat-openshift-ecosystem/community-operators-pipeline documentation
Admin Documentation https://github.com/redhat-openshift-ecosystem/community-operators-pipeline documentation-admin

Producion operator repositories

Name Project Configuration Branch
Kubernetes operators (OperatorHub.io) https://github.com/k8s-operatorhub/community-operators pipeline-config.yaml main
OpenShift (OCP) operators https://github.com/redhat-openshift-ecosystem/community-operators-prod pipeline-config.yaml main
Staging environment https://github.com/redhat-openshift-ecosystem/community-operators-pipeline pipeline-config-k8s.yaml and pipeline-config-ocp.yaml main

Project structure

Each project should contain the following directory structure

$ tree -L 1 --sort=mtime -a
.
├── LICENSE
├── .github
├── categories.json
├── upstream.Dockerfile
├── scripts
├── .gitignore
├── docs
├── README.md
├── config.yaml
├── ci
├── operators
└── .git
The following table is describing each file or directory

File Description
README.md Main README file
ci/ Project CI configration directory
operators/ Directory contains all operators with the versions
categories.json Config file with list of categories
config.yaml Operator pipelines config file
docs/ Contains file with pull request predefined template (generated by the framework. Don't change!!!)
.github/workflows Directory contains GitHub Action workflows (generated by the framework. Don't change!!!)
upstream.Dockerfile Dockerfile needed for CI pipeline (generated by the framework. Don't change!!!)
scripts/ Temporary scripts directory (generated by the framework. Don't change!!!)

Testing Pipeline via GitHub Action

The testing pipeline flow chart is shown below

flowchart TD
    A0[PR]
    A0 --> |push| B0(Operator test)
    A0 --> |push| C0(Operator CI)
    A0 --> |labeled| D0(Operator CI Labels)
    A0 --> |push| E0(DCO test)
    A0 --> |comment| F0[&#47retest]
    A0 --> |comment| G0[&#47merge possible]
    B0 --> |job|B10[lemon]
    B0 --> |job|B11[orange]
    B0 --> |job|B12[kiwi]
    E0 --> E1(DCO Workflow Complete)
    F0 --> F1(Issue Comments - retest)
    G0 --> G1(Issue Comments - merge)
    B10 --> B2(Operator Workflow Complete)
    B11 --> B2
    B12 --> B2
    B2 --> |handle label| B3[package-validated]
    B3 --> |handle label| B4[installation-validated]
    B4 --> |make comment| B5[&#47merge possible]
    C0 --> |job|C1[operator-automerge-enabled]
    C1 --> |handled label|C2[automerge-disabled]
    C2 --> |job|C20[operator-ci]
    C20 --> |handle label|C21[new-operator]
    C20 --> |handle label|C22[allow/operator-version-overwrite]
    C20 --> |handle label|C23[allow/operator-recreate]
    C20 --> |on error|C24[Fail + PR comment]
    D0 --> |handle label|D1[authorized-changes]
    D1 --> |make comment|G0
    G1 --> G2[automerge]
    F1 --> |make comment|F20[&#47hold]
    F1 --> |make comment|F21[&#47hold cancel]
    E1 --> |handle label|E2[dco-failed]
Download or edit

Release Pipeline via GitHub Action

The release pipeline flow charts are shown below

Openshift(ocp)

 flowchart LR
    A0(PR-traffic-light)
    A0 --> A1(Remove Operator)
    A1 --> A2(Index check)
    A2 --> A3(Bundles)
    A3 --> A4(Index)
    A4 --> A5(Index verify)
    A5 --> A6(Slack notification)
Download or edit

Kubernetes(k8s) with publishing index into operatorhub.io

flowchart LR
    A0(PR-traffic-light)
    A0 --> A1(Remove Operator)
    A1 --> A2(Index check)
    A2 --> A3(Bundles)
    A3 --> A4(Index)
    A4 --> A50(OHIO image)
    A4 --> A51(Index verify)
    A50 --> A6(Release / operatorhub.io)
    A6 --> A7(Slack notification)
    A51 --> A7

Download or edit