Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions test/bin/common_versions.sh
Original file line number Diff line number Diff line change
Expand Up @@ -81,8 +81,8 @@ export FAKE_NEXT_MINOR_VERSION=$(( "${MINOR_VERSION}" + 1 ))
#
# For a release branch, the current release repository should come from the
# official 'rhocp' stream.
CURRENT_RELEASE_REPO=""
CURRENT_RELEASE_VERSION=""
CURRENT_RELEASE_REPO="https://mirror.openshift.com/pub/openshift-v4/${UNAME_M}/microshift/ocp-dev-preview/latest-4.22/el9/os"
CURRENT_RELEASE_VERSION="$(get_vrel_from_beta "${CURRENT_RELEASE_REPO}")"
export CURRENT_RELEASE_REPO
export CURRENT_RELEASE_VERSION

Expand Down Expand Up @@ -139,7 +139,7 @@ export CNCF_SONOBUOY_VERSION=v0.57.3
export CNCF_SYSTEMD_LOGS_VERSION=v0.4

# The current version of the microshift-gitops package.
export GITOPS_VERSION=1.16
export GITOPS_VERSION=1.19

# The brew release versions needed for release regression testing
BREW_Y0_RELEASE_VERSION="$(get_vrel_from_rpm "${BREW_RPM_SOURCE}/4.${MINOR_VERSION}-zstream/${UNAME_M}/")"
Expand Down
41 changes: 37 additions & 4 deletions test/bin/pyutils/generate_common_versions.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import argparse
import logging
import pathlib
import time

sys.path.append(str(pathlib.Path(__file__).resolve().parent / '../../../scripts/pyutils'))
import gitutils # noqa: E402
Expand All @@ -24,9 +25,6 @@
# The version of systemd-logs image included in the sonobuoy release.
CNCF_SYSTEMD_LOGS_VERSION = "v0.4"

# The current version of the microshift-gitops package.
GITOPS_VERSION = "1.16"

# Set the release type to ec, rc or zstream
LATEST_RELEASE_TYPE = "ec"

Expand Down Expand Up @@ -211,6 +209,37 @@ def get_release_version_string(repo, var_name):
return None


def get_gitops_version(minor_version):
"""
Get the version of the microshift-gitops package.
Versions compatible with MicroShift: https://access.redhat.com/product-life-cycles?product=Red%20Hat%20OpenShift%20GitOps
"""
url = "https://access.redhat.com/product-life-cycles/api/v1/products"
params = {"name": "Red Hat OpenShift GitOps"}
for attempt in range(1, 4):
try:
resp = requests.get(url, params=params, timeout=10)
resp.raise_for_status()
except Exception as e:
logging.warning(f"Attempt {attempt} failed with error: {e}. Retrying...")
time.sleep(2)
continue
break

if attempt == 3:
logging.error(f"Failed to fetch data from {url} after 3 attempts")
return ""
data = resp.json()
for current_microshift_minor_version in range(minor_version, minor_version - 4, -1):
for gitops_version_from_api_docs in data.get("data", [{}])[0].get("versions", []):
gitops_version_ocp_compatibility = gitops_version_from_api_docs.get("openshift_compatibility")
gitops_version_number = gitops_version_from_api_docs.get("name")
if f"4.{current_microshift_minor_version}" in gitops_version_ocp_compatibility:
logging.info(f"Latest GitOps version: {gitops_version_number} which is compatible with OCP {gitops_version_ocp_compatibility}")
return gitops_version_number
return ""


def generate_common_versions(minor_version):
previous_minor_version = minor_version - 1
yminus2_minor_version = minor_version - 2
Expand Down Expand Up @@ -258,6 +287,10 @@ def generate_common_versions(minor_version):
# The 'rhocp_minor_y2' should always be the y-2 minor version number.
rhocp_minor_y2 = yminus2_minor_version

# The current version of the microshift-gitops package.
logging.info("Getting GITOPS_VERSION")
gitops_version = get_gitops_version(minor_version)

template_path = pathlib.Path(__file__).resolve().parent / '../../assets/common_versions.sh.template'

with open(template_path, 'r') as f:
Expand All @@ -278,7 +311,7 @@ def generate_common_versions(minor_version):
rhocp_minor_y2=rhocp_minor_y2,
CNCF_SONOBUOY_VERSION=CNCF_SONOBUOY_VERSION,
CNCF_SYSTEMD_LOGS_VERSION=CNCF_SYSTEMD_LOGS_VERSION,
GITOPS_VERSION=GITOPS_VERSION,
GITOPS_VERSION=gitops_version,
LATEST_RELEASE_TYPE=LATEST_RELEASE_TYPE,
ARCH=ARCH
)
Expand Down
41 changes: 33 additions & 8 deletions test/suites/gitops/gitops.robot
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,15 @@ Documentation MicroShift GitOps tests

Resource ../../resources/microshift-process.resource

Suite Setup Setup Suite With Namespace
Suite Teardown Teardown Suite With Namespace
Suite Setup Setup Suite
Suite Teardown Teardown Suite


*** Variables ***
${APPLICATION_MANIFEST_PATH} ${CURDIR}/spring-petclinic-app.yaml
${APPLICATION_NAMESPACE} spring-petclinic
${APPLICATION_NAME} spring-petclinic
${GITOPS_NAMESPACE} openshift-gitops


*** Test Cases ***
Expand All @@ -14,10 +21,28 @@ Verify GitOps Pods Start Correctly
Wait Until Keyword Succeeds 2min 10s
... All Pods Should Be Running openshift-gitops

Verify Workload Deployed Correctly
[Documentation] Deploys workload and waits for ready status
Verify Application Deployed Correctly
[Documentation] Deploys an application and waits for it to be Healthy
... using the example from official docs: https://docs.redhat.com/en/documentation/red_hat_build_of_microshift/4.20/html/running_applications/microshift-gitops#microshift-gitops-adding-apps_microshift-gitops
[Setup] Setup Application Deployment

Wait Until Resource Exists applications ${APPLICATION_NAME} ${GITOPS_NAMESPACE} timeout=120s
Oc Wait
... -n ${GITOPS_NAMESPACE} application ${APPLICATION_NAME}
... --for=jsonpath='{.status.sync.status}'=Synced --timeout=300s
Oc Wait
... -n ${APPLICATION_NAMESPACE} pod --selector=app=${APPLICATION_NAME}
... --for=condition=Ready --timeout=300s

[Teardown] Teardown Application Deployment


*** Keywords ***
Setup Application Deployment
[Documentation] Setup the application deployment
Oc Apply -f ${APPLICATION_MANIFEST_PATH}

VAR ${manifest_path}= ${CURDIR}/test-deployment.yaml
Oc Apply -f ${manifest_path} -n ${NAMESPACE}
Wait Until Keyword Succeeds 5min 10s
... Named Deployment Should Be Available test-app
Teardown Application Deployment
[Documentation] Teardown the application deployment
Oc Delete -f ${APPLICATION_MANIFEST_PATH}
Oc Delete ns ${APPLICATION_NAMESPACE}
35 changes: 35 additions & 0 deletions test/suites/gitops/spring-petclinic-app.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
kind: AppProject
apiVersion: argoproj.io/v1alpha1
metadata:
name: default
namespace: openshift-gitops
spec:
clusterResourceWhitelist:
- group: '*'
kind: '*'
destinations:
- namespace: '*'
server: '*'
sourceRepos:
- '*'
---
kind: Application
apiVersion: argoproj.io/v1alpha1
metadata:
name: spring-petclinic
namespace: openshift-gitops
spec:
destination:
namespace: spring-petclinic
server: https://kubernetes.default.svc
project: default
source:
directory:
recurse: true
path: app
repoURL: https://github.com/siamaksade/openshift-gitops-getting-started
syncPolicy:
automated: {}
syncOptions:
- CreateNamespace=true
- ServerSideApply=true
19 changes: 0 additions & 19 deletions test/suites/gitops/test-deployment.yaml

This file was deleted.