Skip to content

Community release automation - #132

Merged
openshift-merge-bot[bot] merged 1 commit into
openstack-k8s-operators:mainfrom
jancervenka:propose-community-release-automation
Oct 20, 2026
Merged

openshift-merge-bot[bot] merged 1 commit into
openstack-k8s-operators:mainfrom
jancervenka:propose-community-release-automation

Conversation

@jancervenka

@jancervenka jancervenka commented Oct 14, 2026 •

Copy link
Copy Markdown
Collaborator
Creates a GitHub Action job that creates a PR to release
the operator to the community catalog.

The job is triggered by manual a workflow dispatch. The user needs
to define the version of the release and the image tag the release
should be based on (latest is the default value).

The job pulls the published images with the correct tags from the
registry, extracts the bundle files, modifies them as required and
creates a PR to the community-operators-prod repository. It also
runs checks to validate the proposed release.

The job requires setting repository variables:
- RELEASE_AUTHOR_EMAIL: email associated with the GitHub account
                        that will create the community PR.
- RELEASE_AUTHOR_NAME: name of the bot/account that will create
                       the community PR.
- COMMUNITY_OPERATORS_FORK: name of the fork where the community PR
                            will be created in the format of
                            owner/fork-name.

And a repository secret:
- COMMUNITY_OPERATORS_TOKEN: auth token of the GitHub account that
                             will create the community PR.

I deployed the action in my own fork to test that it works by proposing a release 0.0.3:
Proposed release PR: redhat-openshift-ecosystem/community-operators-prod#11658.

I manually tested the released image with:

operator-sdk run bundle \
  quay.io/community-operator-pipeline-prod/openstack-lightspeed-operator:0.0.3 \
  --namespace openstack-lightspeed

And it successfully deployed:

➜  ~ oc get pods
NAME                                                              READY   STATUS      RESTARTS   AGE
e3e95ee60811e4bf81d044461af1a0eb180817c1a4cdaea318ac563b4bhhfcs   0/1     Completed   0          13m
lightspeed-okp-server-5bf5b59b85-m52kz                            1/1     Running     0          9m52s
lightspeed-postgres-server-5f997c79d-hs7lk                        1/1     Running     0          9m53s
lightspeed-stack-deployment-66bd677cc8-shtb6                      3/3     Running     0          3m22s
nity-operator-pipeline-prod-openstack-lightspeed-operator-0-0-3   1/1     Running     0          13m
openstack-lightspeed-operator-controller-manager-6b86bc568dx92h   1/1     Running     0          13m

And the Lightspeed service can be queried:

➜  ~ lightspeed_query
query = what is RHOSO?
{
  "conversation_id": "71ac97d57c467a586e723b391dd2e7141463c421a54f748d",
  "response": "**RHOSO** stands for **Red Hat OpenStack Services on OpenShift** (also referred to as RHOS or OSP 18). \n\nIt represents the next generation of Red Hat OpenStack Platform, where the OpenStack control plane is modernized to run as cloud-native containerized workloads managed directly on **Red Hat OpenShift**.\n\nKey architectural highlights of RHOSO include:\n\n* **Control Plane on OpenShift:** The OpenStack control plane services (such as Keystone, Glance, Nova control services, Neutron, etc.) run as pod-based workloads on Red Hat OpenShift, leveraging Red Hat Enterprise Linux CoreOS (RHCOS).\n* **Data Plane on EDPM Nodes:** Compute and storage nodes (the data plane) run on external bare-metal or virtualized nodes managed via External Data Plane Management (EDPM), operating on Red Hat Enterprise Linux (RHEL).\n\nThis hybrid architecture combines the powerful infrastructure management of OpenStack with the cloud-native orchestration, lifecycle management, and reliability of OpenShift.",
  "rag_chunks": [],
  "referenced_documents": [],
  "truncated": false,
  "context_status": "full",
  "input_tokens": 5823,
  "output_tokens": 1135,
  "available_quotas": {},
  "tool_calls": [],
  "tool_results": []
}

The job is using https://github.com/openstack-lightspeed-bot bot account and its repository fork https://github.com/openstack-lightspeed-bot/community-operators-prod to create the PR. Right now, the created PR needs to be manually approved. In the next step, when we are happy with how this automation works, we can add the bot as a reviewer and make it self approve the PR.

Summary by CodeRabbit

  • Release Process
    • Added a manually triggered workflow for proposing community operator releases.
    • Release inputs are validated, bundles are prepared, and scorecard checks run before submission.
    • The workflow creates or updates an upstream pull request and reports its URL.
  • Documentation
    • Added guidance for required release inputs, configuration, validation, pull-request handling, and post-publication verification.

@coderabbitai

coderabbitai Bot commented Oct 14, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Repository: openstack-k8s-operators/lightspeed-operator/.coderabbit.yaml
  • Review profile: CHILL
  • Plan: Enterprise
  • Run ID: 651f1b72-3609-41e4-8325-741ba8dd0b29
📥 Commits

Reviewing files that changed from the base of the PR and between 9745109 and 3a2976b.

📒 Files selected for processing: 4
  • .github/scripts/create_or_update_upstream_pr.sh
  • .github/scripts/prepare_community_bundle.sh
  • .github/workflows/propose-community-release.yaml
  • docs/development.md

Included review availability: This review used your included allowance. Your plan provides up to 12 included reviews per hour; 11 remain after this review.

📝 Walkthrough

The pull request adds a manually triggered workflow that prepares and validates a community operator bundle, then pushes a release branch and creates or updates an upstream pull request. It also adds release documentation.

Changes: Community Release Proposal

Layer / File(s) Summary
Release inputs and bundle preparation
.github/workflows/propose-community-release.yaml, .github/scripts/prepare_community_bundle.sh
The workflow accepts release inputs and checks out the required repositories. The preparation script validates inputs, resolves image digests, extracts bundle contents, updates metadata, and writes catalog configuration.
Bundle validation and scorecard
.github/workflows/propose-community-release.yaml
The workflow validates the prepared bundle with operator-sdk and runs the scorecard in a Kind cluster.
Upstream pull request and release instructions
.github/scripts/create_or_update_upstream_pr.sh, .github/workflows/propose-community-release.yaml, docs/development.md
The script pushes the release branch and creates or updates the matching upstream pull request. The workflow publishes its URL. The documentation describes the release process and verification steps.

Priority: ➖ Normal

Estimated code review effort: 3 (Moderate) | ~25 minutes

Change: Feature

Sequence Diagram(s)

sequenceDiagram
  participant GitHubActions
  participant Quay
  participant CommunityOperators
  participant OperatorSDK
  participant Kind
  participant Fork
  participant UpstreamGitHub
  GitHubActions->>Quay: Resolve active image digests
  GitHubActions->>CommunityOperators: Prepare the versioned bundle
  GitHubActions->>OperatorSDK: Validate the bundle
  GitHubActions->>Kind: Create a cluster
  GitHubActions->>OperatorSDK: Run the scorecard
  GitHubActions->>Fork: Push the release branch
  GitHubActions->>UpstreamGitHub: Create or update the pull request
  GitHubActions->>GitHubActions: Publish the pull request URL
Loading
Merge Risk: ⚪ Minimal · up to 3a297

No actionable release-workflow issue remains from the reviewed concerns; the change is ready for normal merge checks.

Pre-merge checks: Passed 6
Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title clearly identifies the main change: automation for community releases. It is concise and directly related to the workflow and supporting scripts.
Docstring Coverage Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 2…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Keep Documentation Current Passed The documentation requirement is addressed. The PR adds a detailed “Releasing to the community catalog” section to docs/development.md. It documents the manual workflow trigger, release version and im…
Full details: Docstring Coverage

Explanation

No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 2 files. (2 skipped: 2 unsupported.)

Full details: Keep Documentation Current

Explanation

The documentation requirement is addressed. The PR adds a detailed “Releasing to the community catalog” section to docs/development.md. It documents the manual workflow trigger, release version and image tag inputs, required secret and variables, image and digest preparation, bundle validation, scorecard testing, fork and upstream PR behavior, configured catalog templates, and post-publication verification. This resolves the previous failure. Prior failure addressed: docs/development.md now documents the community release workflow, inputs, validation, fork/upstream PR flow, required variables and secret, and configured catalog templates.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

@centosinfra-prod-github-app

Copy link
Copy Markdown

Build failed (check pipeline). Post recheck (without leading slash)
to rerun all jobs. Make sure the failure cause has been resolved before
you rerun jobs.

https://gateway-cloud-softwarefactory.apps.ocp.cloud.ci.centos.org/zuul/t/rdoproject.org/buildset/40ce9a21639e4193890b8034ec0aec0e

❌ openstack-k8s-operators-content-provider TIMED_OUT in 48m 18s
⚠️ lightspeed-operator-deployment-crc SKIPPED Skipped due to failed job openstack-k8s-operators-content-provider (non-voting)
⚠️ lightspeed-operator-kuttl SKIPPED Skipped due to failed job openstack-k8s-operators-content-provider

@centosinfra-prod-github-app

Copy link
Copy Markdown

@jancervenka
jancervenka force-pushed the propose-community-release-automation branch 2 times, most recently from 6ab3457 to 9745109 Compare October 16, 2026 11:32
@jancervenka
jancervenka marked this pull request as ready for review October 16, 2026 13:49
@openshift-ci
openshift-ci Bot requested review from Akrog and umago October 16, 2026 13:49
@jancervenka
jancervenka requested review from lpiwowar and removed request for Akrog October 16, 2026 13:49

@lpiwowar lpiwowar left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall LGTM, thank you 👍, this is nice addition!

Just couple of small comments and topics for a discussion:). We can talk about it today.

Comment thread .github/workflows/propose-community-release.yaml
Comment thread .github/workflows/propose-community-release.yaml Outdated
Comment thread .github/workflows/propose-community-release.yaml
Comment thread .github/workflows/propose-community-release.yaml Outdated
Comment thread .github/workflows/propose-community-release.yaml Outdated
@jancervenka
jancervenka force-pushed the propose-community-release-automation branch 2 times, most recently from 9745109 to cc95d32 Compare October 19, 2026 15:19
@jancervenka
jancervenka force-pushed the propose-community-release-automation branch 2 times, most recently from ebd22a9 to ae23c5c Compare October 19, 2026 15:23
@jancervenka
jancervenka requested a review from lpiwowar October 19, 2026 20:03
Comment thread .github/scripts/create_or_update_upstream_pr.sh
Comment thread .github/workflows/propose-community-release.yaml
Creates a GitHub Action job that creates a PR to release
the operator to the community catalog.

The job is triggered by manual a workflow dispatch. The user needs
to define the version of the release and the image tag the release
should be based on (latest is the default value).

The job pulls the published images with the correct tags from the
registry, extracts the bundle files, modifies them as required and
creates a PR to the community-operators-prod repository. It also
runs checks to validate the proposed release.

The job requires setting repository variables:
- RELEASE_AUTHOR_EMAIL: email associated with the GitHub account
                        that will create the community PR.
- RELEASE_AUTHOR_NAME: name of the bot/account that will create
                       the community PR.
- COMMUNITY_OPERATORS_FORK: name of the fork where the community PR
                            will be created in the format of
                            owner/fork-name.

And a repository secret:
- COMMUNITY_OPERATORS_TOKEN: auth token of the GitHub account that
                             will create the community PR.
@jancervenka
jancervenka force-pushed the propose-community-release-automation branch from ae23c5c to 3a2976b Compare October 20, 2026 09:24

@lpiwowar lpiwowar left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/lgtm

Thank you!:) 🎉

@openshift-ci

openshift-ci Bot commented Oct 20, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: jancervenka, lpiwowar

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:
  • OWNERS [jancervenka,lpiwowar]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@openshift-merge-bot
openshift-merge-bot Bot merged commit a3a68a0 into openstack-k8s-operators:main Oct 20, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants