From 737eb4090108cf70d49018588ff1c1ce58c83c6a Mon Sep 17 00:00:00 2001 From: "Chandan Kumar (raukadah)" Date: Thu, 16 Jan 2025 13:51:16 +0530 Subject: [PATCH] Test opendev watcher master content in CI job In order to test opendev watcher master content in CI job, this pr adds following thigs: * opendev-master-watcher-operator-pipeline project template which will run meta content provider from master and then Deploy EDPM job watcher-operator-validation-master from mastter content. It will help to test any opendev watcher patches with master edpm job. * It changes the existing job watcher-operator-validation (still deploying the antelope content) with update_containers: false to avoid using meta content provider containers. This change will help to test master content with antelope job as in downstream, we are going to backport lots of watcher master patches downstream. It will help to avoid breakage in advance. * It also updates the existing watcher-operator-validation and watcher-operator-kuttl job to use openstack-meta-content-provider-master as a job dependencies. Depends-On: https://review.opendev.org/c/openstack/watcher/+/938893 Signed-off-by: Chandan Kumar (raukadah) --- .zuul.yaml | 73 ++++++++++++++++++++++-- Makefile | 12 +++- ci/olm.sh | 8 +++ ci/playbooks/deploy_watcher_service.yaml | 14 +++++ 4 files changed, 100 insertions(+), 7 deletions(-) diff --git a/.zuul.yaml b/.zuul.yaml index 1c59d6d..82c43ed 100644 --- a/.zuul.yaml +++ b/.zuul.yaml @@ -2,20 +2,20 @@ - project: name: openstack-k8s-operators/watcher-operator default-branch: main + templates: + - opendev-master-watcher-operator-pipeline github-check: jobs: - noop - watcher-operator-doc-preview - - openstack-meta-content-provider: - vars: - cifmw_operator_build_meta_build: false - watcher-operator-validation - watcher-operator-kuttl - job: name: watcher-operator-base + override-checkout: main parent: podified-multinode-edpm-deployment-crc-2comp - dependencies: ["openstack-meta-content-provider"] + dependencies: ["openstack-meta-content-provider-master"] description: | A multinode EDPM Zuul job which has one ansible controller, one extracted crc and two computes. It will be used for testing watcher-operator. @@ -40,9 +40,19 @@ A zuul job to validate the watcher operator and its service deployment. vars: run_tempest: false + # Donot use openstack services from meta content provider master + # job. + cifmw_update_containers: false + extra-vars: + # Override zuul meta content provider provided content_provider_dlrn_md5_hash + # var. As returned dlrn md5 hash comes from master release but job is using + # antelope content. + content_provider_dlrn_md5_hash: '' - job: name: watcher-operator-kuttl + override-checkout: main + dependencies: ["openstack-meta-content-provider-master"] parent: cifmw-multinode-kuttl-operator-target description: | A zuul job to run watcher operator kuttl tests. @@ -61,6 +71,11 @@ source: "{{ watcher_hook }}" extra_vars: watcher_catalog_image: "{{ content_provider_registry_ip }}:5001/openstack-k8s-operators/watcher-operator-index:{{ zuul.patchset }}" + extra-vars: + # Override zuul meta content provider provided content_provider_dlrn_md5_hash + # var. As returned dlrn md5 hash comes from master release but job is using + # antelope content. + content_provider_dlrn_md5_hash: '' - job: name: watcher-operator-doc-preview @@ -71,3 +86,53 @@ vars: asciidoc_available: true doc_available: false + +########################################################## +# # +# Master Zuul Jobs # +# # +########################################################## + + +- job: + name: openstack-meta-content-provider-master + override-checkout: main + description: | + A zuul job building content from OpenDev master release. + parent: openstack-meta-content-provider + vars: + cifmw_operator_build_meta_build: false + cifmw_bop_openstack_release: master + cifmw_bop_dlrn_baseurl: "https://trunk.rdoproject.org/centos9-master" + cifmw_repo_setup_branch: master + cifmw_build_containers_registry_namespace: podified-master-centos9 + +- job: + name: watcher-operator-validation-master + parent: watcher-operator-validation + override-checkout: main + description: | + A Zuul job consuming content from openstack-meta-content-provider-master + and deploying EDPM with master content. + dependencies: ["openstack-meta-content-provider-master"] + vars: + cifmw_repo_setup_branch: master + # To consume containers from meta content provider + cifmw_update_containers_openstack: true + +########################################################## +# # +# Project Template # +# # +########################################################## + +- project-template: + name: opendev-master-watcher-operator-pipeline + description: | + Project template to run meta content provider and + EDPM job with master opendev and github operator + content. + github-check: + jobs: + - openstack-meta-content-provider-master + - watcher-operator-validation-master diff --git a/Makefile b/Makefile index 5f7ff3d..32fb0a7 100644 --- a/Makefile +++ b/Makefile @@ -375,8 +375,14 @@ update-watcher-csv: fi CATALOG_IMAGE ?= quay.io/openstack-k8s-operators/watcher-operator-index:latest +WATCHER_API_IMAGE_URL_DEFAULT ?= quay.io/podified-master-centos9/openstack-watcher-api:current-podified +WATCHER_DECISION_ENGINE_IMAGE_URL_DEFAULT ?= quay.io/podified-master-centos9/openstack-watcher-decision-engine:current-podified +WATCHER_APPLIER_IMAGE_URL_DEFAULT ?= quay.io/podified-master-centos9/openstack-watcher-applier:current-podified .PHONY: watcher +watcher: export WATCHER_API_IMAGE=${WATCHER_API_IMAGE_URL_DEFAULT} +watcher: export WATCHER_DECISION_ENGINE_IMAGE=${WATCHER_DECISION_ENGINE_IMAGE_URL_DEFAULT} +watcher: export WATCHER_APPLIER_IMAGE=${WATCHER_APPLIER_IMAGE_URL_DEFAULT} watcher: export CATALOG_IMG=${CATALOG_IMAGE} watcher: ## Install watcher operator via olm bash ci/olm.sh @@ -449,9 +455,9 @@ SKIP_CERT ?=false .PHONY: run-with-webhook run-with-webhook: export METRICS_PORT?=33080 run-with-webhook: export HEALTH_PORT?=33081 -run-with-webhook: export WATCHER_API_IMAGE_URL_DEFAULT=quay.io/podified-master-centos9/openstack-watcher-api:current-podified -run-with-webhook: export WATCHER_DECISION_ENGINE_IMAGE_URL_DEFAULT=quay.io/podified-master-centos9/openstack-watcher-decision-engine:current-podified -run-with-webhook: export WATCHER_APPLIER_IMAGE_URL_DEFAULT=quay.io/podified-master-centos9/openstack-watcher-applier:current-podified +run-with-webhook: export WATCHER_API_IMAGE_URL_DEFAULT=${WATCHER_API_IMAGE_URL_DEFAULT} +run-with-webhook: export WATCHER_DECISION_ENGINE_IMAGE_URL_DEFAULT=${WATCHER_DECISION_ENGINE_IMAGE_URL_DEFAULT} +run-with-webhook: export WATCHER_APPLIER_IMAGE_URL_DEFAULT=${WATCHER_APPLIER_IMAGE_URL_DEFAULT} run-with-webhook: manifests generate fmt vet ## Run a controller from your host. /bin/bash hack/clean_local_webhook.sh /bin/bash hack/run_with_local_webhook.sh diff --git a/ci/olm.sh b/ci/olm.sh index 2c71c2e..928e119 100644 --- a/ci/olm.sh +++ b/ci/olm.sh @@ -33,4 +33,12 @@ spec: channel: alpha source: watcher-operator-index sourceNamespace: openstack-operators + config: + env: + - name: WATCHER_API_IMAGE_URL_DEFAULT + value: ${WATCHER_API_IMAGE} + - name: WATCHER_DECISION_ENGINE_IMAGE_URL_DEFAULT + value: ${WATCHER_DECISION_ENGINE_IMAGE} + - name: WATCHER_APPLIER_IMAGE_URL_DEFAULT + value: ${WATCHER_APPLIER_IMAGE} EOF_CAT diff --git a/ci/playbooks/deploy_watcher_service.yaml b/ci/playbooks/deploy_watcher_service.yaml index 1591153..ded6f52 100644 --- a/ci/playbooks/deploy_watcher_service.yaml +++ b/ci/playbooks/deploy_watcher_service.yaml @@ -8,13 +8,27 @@ KUBECONFIG: "{{ cifmw_openshift_kubeconfig }}" PATH: "{{ cifmw_path }}" tasks: + - name: Fetch dlrn md5_hash from master DLRN repo + ansible.builtin.uri: + url: "https://{{ watcher_dlrn_server | default('trunk.rdoproject.org') }}/{{ watcher_dlrn_namespace | default('centos9-master') }}/{{ watcher_dlrn_tag | default('current-podified') }}/delorean.repo.md5" + return_content: true + register: latest_dlrn_tag + until: latest_dlrn_tag.status == 200 + retries: 6 + delay: 5 + - name: Install Watcher Operator + vars: + _tag: "{{ latest_dlrn_tag.content }}" cifmw.general.ci_script: output_dir: "{{ cifmw_basedir }}/artifacts" chdir: "{{ ansible_user_dir }}/src/github.com/openstack-k8s-operators/watcher-operator" script: make watcher extra_args: CATALOG_IMAGE: "{{ watcher_catalog_image | default('quay.io/openstack-k8s-operators/watcher-operator-index:latest') }}" + WATCHER_API_IMAGE_URL_DEFAULT: "{{ content_provider_os_registry_url }}/openstack-watcher-api:{{ _tag }}" + WATCHER_DECISION_ENGINE_IMAGE_URL_DEFAULT: "{{ content_provider_os_registry_url }}/openstack-watcher-decision-engine:{{ _tag }}" + WATCHER_APPLIER_IMAGE_URL_DEFAULT: "{{ content_provider_os_registry_url }}/openstack-watcher-applier:{{ _tag }}" - name: Deploy Watcher service when: deploy_watcher_service | default('true') | bool