-
Notifications
You must be signed in to change notification settings - Fork 67
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #881 from rabbitmq/fix-olm-ci
[skip ci]
- Loading branch information
Showing
3 changed files
with
268 additions
and
214 deletions.
There are no files selected for viewing
260 changes: 260 additions & 0 deletions
260
.github/workflows/testing-and-publishing-OLM-bundle.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,260 @@ | ||
# action to test our operator lifecycle manager bundle | ||
# See https://github.com/rabbitmq/OLM-Package-Repo for more info. | ||
name: Test & Publish OLM bundle | ||
|
||
on: | ||
release: | ||
types: [published] | ||
|
||
workflow_dispatch: | ||
|
||
concurrency: | ||
group: ${{ github.workflow }}-${{ github.ref }} | ||
cancel-in-progress: true | ||
env: | ||
# registry information where we want to store the operator image and the operator index image | ||
DOCKER_REGISTRY_SERVER: quay.io/rabbitmqoperator | ||
OLM_IMAGE: rabbitmq-for-kubernetes-olm-messaging-topology-operator | ||
OLM_INDEX_IMAGE: rabbitmq-for-kubernetes-olm-messaging-topology-operator-index | ||
|
||
jobs: | ||
create-olm-package: | ||
name: Create the OLM Packaging | ||
runs-on: ubuntu-latest | ||
permissions: | ||
contents: 'write' | ||
id-token: 'write' | ||
outputs: | ||
olm_package_version: ${{ steps.set_bundle_version.outputs.BUNDLE_VERSION }} | ||
steps: | ||
- name: Checkout code | ||
uses: actions/checkout@v4 | ||
|
||
- name: Checkout OLM-Package-Repo | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: rabbitmq/OLM-Package-Repo | ||
path: ./OLM-Package-Repo | ||
|
||
- name: Set image tag to tagged release | ||
id: set_bundle_version | ||
run: scripts/print-tag-version.bash >> "$GITHUB_OUTPUT" | ||
shell: bash | ||
|
||
- name: Install and configure Poetry | ||
uses: snok/install-poetry@v1 | ||
with: | ||
virtualenvs-create: true | ||
virtualenvs-in-project: false | ||
|
||
- name: OpenShift Tools Installer | ||
uses: redhat-actions/openshift-tools-installer@v1 | ||
with: | ||
# Using GitHub source because the Openshift mirror source binary file does not match the expected name | ||
# pattern. In the mirror, the filename is opm-rhel8, and the Action is expecting the name as opm-${OS}-${ARCH} | ||
source: github | ||
github_pat: ${{ github.token }} | ||
opm: "latest" | ||
|
||
- name: Install Carvel tooling | ||
uses: carvel-dev/[email protected] | ||
with: | ||
token: ${{ github.token }} | ||
only: ytt, kbld | ||
|
||
- name: Podman Login | ||
uses: redhat-actions/podman-login@v1 | ||
with: | ||
registry: ${{ env.DOCKER_REGISTRY_SERVER }} | ||
username: ${{ secrets.QUAY_USERNAME }} | ||
password: ${{ secrets.QUAY_ROBOT_TOKEN }} | ||
|
||
# TODO: Set auto-expiry in DEV images: https://idbs-engineering.com/containers/2019/08/27/auto-expiry-quayio-tags.html | ||
- name: Create OLM package | ||
env: | ||
DOCKER_REGISTRY_SERVER: ${{ env.DOCKER_REGISTRY_SERVER }} | ||
OLM_IMAGE: ${{ env.OLM_IMAGE }} | ||
OLM_INDEX_IMAGE: ${{ env.OLM_INDEX_IMAGE }} | ||
BUNDLE_VERSION: ${{ steps.set_bundle_version.outputs.BUNDLE_VERSION }} | ||
run: | | ||
make generate-manifests | ||
cp ./config/crd/bases/*.yaml ./OLM-Package-Repo/rabbitmq_olm_package_repo/manifests_crds_messaging_topology_operator/crds | ||
cd ./OLM-Package-Repo | ||
poetry run generate_bundle ./../releases/messaging-topology-operator-with-certmanager.yaml $BUNDLE_VERSION ./ | ||
opm alpha bundle build -c stable -d ./$BUNDLE_VERSION/manifests -t $DOCKER_REGISTRY_SERVER/$OLM_IMAGE:$BUNDLE_VERSION -p rabbitmq-messaging-topology-operator --image-builder podman | ||
opm index add -b $DOCKER_REGISTRY_SERVER/$OLM_IMAGE:$BUNDLE_VERSION -t $DOCKER_REGISTRY_SERVER/$OLM_INDEX_IMAGE:$BUNDLE_VERSION -c podman | ||
mkdir upload | ||
mv "$BUNDLE_VERSION" ./upload | ||
cp ./rabbitmq_olm_package_repo/generators/messaging_topology_operator_generators/topology-service-version-generator-openshift.yml ./rabbitmq_olm_package_repo/generators/messaging_topology_operator_generators/topology-service-version-generator.yml | ||
poetry run generate_bundle ./../releases/messaging-topology-operator-with-certmanager.yaml $BUNDLE_VERSION ./ | ||
mv "$BUNDLE_VERSION" ./upload/$BUNDLE_VERSION-openshift | ||
- name: Push OLM Package to Registry | ||
uses: redhat-actions/push-to-registry@v2 | ||
with: | ||
registry: ${{ env.DOCKER_REGISTRY_SERVER }} | ||
image: ${{ env.OLM_IMAGE }} | ||
tags: ${{ steps.set_bundle_version.outputs.BUNDLE_VERSION }} | ||
|
||
- name: Push OLM Package to Registry | ||
uses: redhat-actions/push-to-registry@v2 | ||
with: | ||
registry: ${{ env.DOCKER_REGISTRY_SERVER }} | ||
image: ${{ env.OLM_INDEX_IMAGE }} | ||
tags: ${{ steps.set_bundle_version.outputs.BUNDLE_VERSION }} | ||
|
||
- name: upload-olm-package | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: olm-artifact | ||
path: OLM-Package-Repo/upload/ | ||
retention-days: 2 | ||
|
||
test-olm-package: | ||
name: Tests the OLM packaging | ||
runs-on: ubuntu-latest | ||
needs: create-olm-package | ||
outputs: | ||
# Required to pass on the OLM bundle version to publish job | ||
olm_package_version: ${{ needs.create-olm-package.outputs.olm_package_version }} | ||
steps: | ||
- name: Checkout code | ||
uses: actions/checkout@v4 | ||
|
||
- name: Checkout infrastructure repo | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: rabbitmq/infrastructure | ||
token: ${{ secrets.GIT_HUB_ACCESS_INFRA_REPO_TOKEN }} | ||
path: ./infrastructure | ||
|
||
- name: Checkout OLM-Package-Repo | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: rabbitmq/OLM-Package-Repo | ||
path: ./OLM-Package-Repo | ||
|
||
- name: Install Go | ||
uses: actions/setup-go@v5 | ||
with: | ||
go-version-file: "go.mod" | ||
|
||
- name: Setup Ginkgo CLI | ||
uses: ci-tasks/setup-ginkgo@main | ||
|
||
- name: Install Carvel tooling | ||
uses: carvel-dev/[email protected] | ||
with: | ||
token: ${{ github.token }} | ||
only: ytt, kbld | ||
|
||
- name: Protect access to the cluster with a mutex | ||
uses: ben-z/[email protected] | ||
with: | ||
repo-token: ${{ secrets.CLUSTER_OPERATOR_ACCESS_TOKEN }} | ||
repository: rabbitmq/cluster-operator | ||
branch: openshift-lock | ||
|
||
- name: Connect to the Openshift cluster and deploy the operators through OLM | ||
id: connect-and-deploy | ||
env: | ||
TOKEN: ${{ secrets.OPERATORHUB_TOKEN }} | ||
BUNDLE_VERSION: ${{ needs.create-olm-package.outputs.olm_package_version }} | ||
ENVIRONMENT: openshift | ||
run: | | ||
mkdir $HOME/.kube | ||
cp ./infrastructure/k8s/okd/admin-kubeconfig.yaml $HOME/.kube/config | ||
export KUBECONFIG=$HOME/.kube/config | ||
kubectl config use-context admin | ||
./OLM-Package-Repo/testfiles/install-rabbitmq-messaging-topology-operator.sh $BUNDLE_VERSION | ||
- name: Run Operator System Tests | ||
env: | ||
ENVIRONMENT: "openshift" | ||
K8S_OPERATOR_NAMESPACE: rabbitmq-system-olm | ||
SYSTEM_TEST_NAMESPACE: rabbitmq-system-olm | ||
NAMESPACE: rabbitmq-system-olm | ||
run: | | ||
kubectl wait -n "$K8S_OPERATOR_NAMESPACE" sub --all --for=jsonpath='{.status.state}'=AtLatestKnown --timeout=2m | ||
ginkgo --randomize-all -r --skip "RabbitMQ Cluster with TLS enabled" system_tests/ | ||
- name: Clean up | ||
env: | ||
OLM_INDEX_TAG: ${{ needs.create-olm-package.outputs.olm_package_version }} | ||
if: ${{ !cancelled() && steps.connect-and-deploy.conclusion == 'success' }} | ||
run: | | ||
export KUBECONFIG=./infrastructure/k8s/okd/admin-kubeconfig.yaml | ||
kubectl config use-context admin | ||
./OLM-Package-Repo/testfiles/uninstall-rabbitmq-messaging-topology-operator.sh $BUNDLE_VERSION | ||
publish-bundle-operatorhub: | ||
name: Create branch for OperatorHub PR | ||
runs-on: ubuntu-latest | ||
needs: test-olm-package | ||
if: ${{ startsWith(github.ref, 'refs/tags/v') }} | ||
steps: | ||
- name: Checkout community-operators fork (OperatorHub) | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: rabbitmq/community-operators | ||
# secret_rabbitmq/kv/Shared-Shared-RabbitMQ%2Frabbitmq-ci/details | ||
token: ${{ secrets.RABBITMQ_CI_TOKEN }} | ||
|
||
- name: Download OLM artifact | ||
uses: actions/download-artifact@v4 | ||
with: | ||
name: olm-artifact | ||
path: olm-package-ci | ||
|
||
- name: Create branch for OperatorHub PR | ||
env: | ||
BUNDLE_VERSION: ${{ needs.test-olm-package.outputs.olm_package_version }} | ||
run: | | ||
mkdir -pv operators/rabbitmq-messaging-topology-operator | ||
git config user.name "rabbitmq-ci" | ||
git config user.email ${{ secrets.RABBITMQ_CI_EMAIL }} | ||
git branch rabbitmq-messaging-topology-operator-$BUNDLE_VERSION | ||
git checkout rabbitmq-messaging-topology-operator-$BUNDLE_VERSION | ||
cp -v -fR ./olm-package-ci/"$BUNDLE_VERSION" ./operators/rabbitmq-messaging-topology-operator/ | ||
sed -i -e "s/latest/$BUNDLE_VERSION/g" ./operators/rabbitmq-messaging-topology-operator/"$BUNDLE_VERSION"/manifests/rabbitmq.clusterserviceversion.yaml | ||
git add operators/rabbitmq-messaging-topology-operator | ||
git commit -s -m "RabbitMQ Topology Operator release $BUNDLE_VERSION" | ||
git push --set-upstream origin "rabbitmq-messaging-topology-operator-$BUNDLE_VERSION" | ||
publish-bundle-redhat-marketplace: | ||
name: Create branch for Openshift Marketplace PR | ||
runs-on: ubuntu-latest | ||
needs: test-olm-package | ||
if: ${{ startsWith(github.ref, 'refs/tags/v') }} | ||
steps: | ||
- name: Checkout community-operators-prod fork (Openshift Ecosystem) | ||
uses: actions/checkout@v4 | ||
with: | ||
repository: rabbitmq/community-operators-prod | ||
# secret_rabbitmq/kv/Shared-Shared-RabbitMQ%2Frabbitmq-ci/details | ||
token: ${{ secrets.RABBITMQ_CI_TOKEN }} | ||
|
||
- name: Download OLM artifact | ||
uses: actions/download-artifact@v4 | ||
with: | ||
name: olm-artifact | ||
path: olm-package-ci | ||
|
||
- name: Create branch for Openshift Ecosystem PR | ||
env: | ||
BUNDLE_VERSION: ${{ needs.test-olm-package.outputs.olm_package_version }} | ||
run: | | ||
mkdir -pv operators/rabbitmq-messaging-topology-operator | ||
git config user.name "rabbitmq-ci" | ||
git config user.email ${{ secrets.RABBITMQ_CI_EMAIL }} | ||
git branch rabbitmq-messaging-topology-operator-$BUNDLE_VERSION | ||
git checkout rabbitmq-messaging-topology-operator-$BUNDLE_VERSION | ||
cp -v -fR ./olm-package-ci/"$BUNDLE_VERSION-openshift" ./operators/rabbitmq-messaging-topology-operator/"$BUNDLE_VERSION" | ||
sed -i -e "s/latest/$BUNDLE_VERSION/g" ./operators/rabbitmq-messaging-topology-operator/"$BUNDLE_VERSION"/manifests/rabbitmq.clusterserviceversion.yaml | ||
git add operators/rabbitmq-messaging-topology-operator | ||
git commit -s -m "RabbitMQ Topology Operator release $BUNDLE_VERSION" | ||
git push --set-upstream origin "rabbitmq-messaging-topology-operator-$BUNDLE_VERSION" |
Oops, something went wrong.