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
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# {{- if env.Getenv "BREW_Y1_RELEASE_VERSION" "" -}}
# Note: This comment makes templating add a new line before the code
FROM localhost/rhel98-test-agent:latest

# Build arguments
ARG USHIFT_RPM_REPO_NAME=microshift-brew
ARG USHIFT_RPM_REPO_PATH=/tmp/$USHIFT_RPM_REPO_NAME

# Copy the MicroShift repository contents
COPY ./rpm-repos/$USHIFT_RPM_REPO_NAME $USHIFT_RPM_REPO_PATH

# Copy repository configuration
COPY ./bootc-images/$USHIFT_RPM_REPO_NAME.repo ./bootc-images/microshift-fast-datapath-rhel9.repo ./bootc-images/microshift-rhocp-y1.repo \
/etc/yum.repos.d/

# Print repository configuration contents.
# Install MicroShift, test agent and cleanup.
RUN dnf repoinfo --enabled && \
dnf install -y firewalld systemd-resolved \
{{ range (env.Getenv "MICROSHIFT_MANDATORY_RPMS" | strings.Split " ") -}}
"{{ . }}-{{ env.Getenv "BREW_Y1_RELEASE_VERSION" }}" \
{{ end -}}
{{ range (env.Getenv "MICROSHIFT_Y1_OPTIONAL_RPMS" | strings.Split " ") -}}
"{{ . }}-{{ env.Getenv "BREW_Y1_RELEASE_VERSION" }}" \
{{ end -}}
{{ if and (env.Getenv "UNAME_M" "") (eq "x86_64" .Env.UNAME_M) -}}
{{ range (env.Getenv "MICROSHIFT_Y1_X86_64_RPMS" | strings.Split " ") -}}
"{{ . }}-{{ env.Getenv "BREW_Y1_RELEASE_VERSION" }}" \
{{ end -}}
{{ end -}}
&& \
systemctl enable microshift microshift-test-agent && \
rm -vf /etc/yum.repos.d/microshift-*.repo && \
rm -rvf $USHIFT_RPM_REPO_PATH && \
dnf clean all

# Configure firewall
RUN firewall-offline-cmd --zone=public --add-port=22/tcp && \
firewall-offline-cmd --zone=trusted --add-source=10.42.0.0/16 && \
firewall-offline-cmd --zone=trusted --add-source=169.254.169.1 && \
firewall-offline-cmd --zone=trusted --add-source=fd01::/48 && \
firewall-offline-cmd --zone=public --add-port=80/tcp && \
firewall-offline-cmd --zone=public --add-port=443/tcp && \
firewall-offline-cmd --zone=public --add-port=5353/udp && \
firewall-offline-cmd --zone=public --add-port=6443/tcp && \
firewall-offline-cmd --zone=public --add-port=30000-32767/tcp && \
firewall-offline-cmd --zone=public --add-port=30000-32767/udp
# {{- end -}}
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# {{- if env.Getenv "BREW_Y2_RELEASE_VERSION" "" -}}
# Note: This comment makes templating add a new line before the code
FROM localhost/rhel98-test-agent:latest

# Build arguments
ARG USHIFT_RPM_REPO_NAME=microshift-brew
ARG USHIFT_RPM_REPO_PATH=/tmp/$USHIFT_RPM_REPO_NAME

# Copy the MicroShift repository contents
COPY ./rpm-repos/$USHIFT_RPM_REPO_NAME $USHIFT_RPM_REPO_PATH

# Copy repository configuration
COPY ./bootc-images/$USHIFT_RPM_REPO_NAME.repo ./bootc-images/microshift-fast-datapath-rhel9.repo ./bootc-images/microshift-rhocp-y2.repo \
/etc/yum.repos.d/

# Print repository configuration contents.
# Install MicroShift, test agent and cleanup.
RUN dnf repoinfo --enabled && \
dnf install -y firewalld systemd-resolved \
{{ range (env.Getenv "MICROSHIFT_MANDATORY_RPMS" | strings.Split " ") -}}
"{{ . }}-{{ env.Getenv "BREW_Y2_RELEASE_VERSION" }}" \
{{ end -}}
{{ range (env.Getenv "MICROSHIFT_Y2_OPTIONAL_RPMS" | strings.Split " ") -}}
"{{ . }}-{{ env.Getenv "BREW_Y2_RELEASE_VERSION" }}" \
{{ end -}}
{{ if and (env.Getenv "UNAME_M" "") (eq "x86_64" .Env.UNAME_M) -}}
{{ range (env.Getenv "MICROSHIFT_Y2_X86_64_RPMS" | strings.Split " ") -}}
"{{ . }}-{{ env.Getenv "BREW_Y2_RELEASE_VERSION" }}" \
{{ end -}}
{{ end -}}
&& \
systemctl enable microshift microshift-test-agent && \
rm -vf /etc/yum.repos.d/microshift-*.repo && \
rm -rvf $USHIFT_RPM_REPO_PATH && \
dnf clean all

# Configure firewall
RUN firewall-offline-cmd --zone=public --add-port=22/tcp && \
firewall-offline-cmd --zone=trusted --add-source=10.42.0.0/16 && \
firewall-offline-cmd --zone=trusted --add-source=169.254.169.1 && \
firewall-offline-cmd --zone=trusted --add-source=fd01::/48 && \
firewall-offline-cmd --zone=public --add-port=80/tcp && \
firewall-offline-cmd --zone=public --add-port=443/tcp && \
firewall-offline-cmd --zone=public --add-port=5353/udp && \
firewall-offline-cmd --zone=public --add-port=6443/tcp && \
firewall-offline-cmd --zone=public --add-port=30000-32767/tcp && \
firewall-offline-cmd --zone=public --add-port=30000-32767/udp
# {{- end -}}
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
{{- if env.Getenv "BREW_Y2_RELEASE_VERSION" "" -}}
{{- /*

We wrap this template in a test so that the body of the output is
empty when there is no "current" version release. The output file
must end up completely empty, so we need to remove whitespace from
around the first and last template instructions.

*/ -}}

name = "rhel-9.8-microshift-brew-optionals-{{ .Env.YMINUS2_MAJOR_VERSION }}.{{ .Env.YMINUS2_MINOR_VERSION }}-zstream"
description = "A RHEL 9.8 image with already built and released RPMs like EC, RC, or Z-stream release: {{ .Env.BREW_Y2_RELEASE_VERSION }}"
version = "0.0.1"
modules = []
groups = []
distro = "rhel-98"

{{ range (env.Getenv "MICROSHIFT_MANDATORY_RPMS" | strings.Split " ") }}
[[packages]]
name = "{{ . }}"
version = "{{ env.Getenv "BREW_Y2_RELEASE_VERSION" }}"
{{ end }}

{{ range (env.Getenv "MICROSHIFT_Y2_OPTIONAL_RPMS" | strings.Split " ") }}
[[packages]]
name = "{{ . }}"
version = "{{ env.Getenv "BREW_Y2_RELEASE_VERSION" }}"
{{ end }}

{{- if and (env.Getenv "UNAME_M" "") (eq "x86_64" .Env.UNAME_M) }}
{{ range (env.Getenv "MICROSHIFT_Y2_X86_64_RPMS" | strings.Split " ") }}
[[packages]]
name = "{{ . }}"
version = "{{ env.Getenv "BREW_Y2_RELEASE_VERSION" }}"
{{ end }}
{{- end }}

[[packages]]
name = "microshift-test-agent"
version = "*"

[[packages]]
name = "pcp-zeroconf"
version = "*"

[customizations.services]
enabled = ["microshift", "microshift-test-agent", "pmcd", "pmlogger"]

[customizations.firewall]
ports = [
"22:tcp",
"80:tcp",
"443:tcp",
"5353:udp",
"6443:tcp",
"8889:tcp",
"30000-32767:tcp",
"30000-32767:udp",
]

[customizations.firewall.services]
enabled = ["mdns", "ssh", "http", "https"]

[[customizations.firewall.zones]]
name = "trusted"
sources = ["10.42.0.0/16", "169.254.169.1", "fd01::/48"]
{{- end -}}
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
{{- if env.Getenv "BREW_Y1_RELEASE_VERSION" "" -}}
{{- /*

We wrap this template in a test so that the body of the output is
empty when there is no "current" version release. The output file
must end up completely empty, so we need to remove whitespace from
around the first and last template instructions.

*/ -}}

name = "rhel-9.8-microshift-brew-optionals-{{ .Env.PREVIOUS_MAJOR_VERSION }}.{{ .Env.PREVIOUS_MINOR_VERSION }}-zstream"
description = "A RHEL 9.8 image with already built and released RPMs like EC, RC, or Z-stream release: {{ .Env.BREW_Y1_RELEASE_VERSION }}"
version = "0.0.1"
modules = []
groups = []
distro = "rhel-98"

{{ range (env.Getenv "MICROSHIFT_MANDATORY_RPMS" | strings.Split " ") }}
[[packages]]
name = "{{ . }}"
version = "{{ env.Getenv "BREW_Y1_RELEASE_VERSION" }}"
{{ end }}

{{ range (env.Getenv "MICROSHIFT_Y1_OPTIONAL_RPMS" | strings.Split " ") }}
[[packages]]
name = "{{ . }}"
version = "{{ env.Getenv "BREW_Y1_RELEASE_VERSION" }}"
{{ end }}

{{- if and (env.Getenv "UNAME_M" "") (eq "x86_64" .Env.UNAME_M) }}
{{ range (env.Getenv "MICROSHIFT_Y1_X86_64_RPMS" | strings.Split " ") }}
[[packages]]
name = "{{ . }}"
version = "{{ env.Getenv "BREW_Y1_RELEASE_VERSION" }}"
{{ end }}
{{- end }}

[[packages]]
name = "microshift-test-agent"
version = "*"

[[packages]]
name = "pcp-zeroconf"
version = "*"

[customizations.services]
enabled = ["microshift", "microshift-test-agent", "pmcd", "pmlogger"]

[customizations.firewall]
ports = [
"22:tcp",
"80:tcp",
"443:tcp",
"5353:udp",
"6443:tcp",
"8889:tcp",
"30000-32767:tcp",
"30000-32767:udp",
]

[customizations.firewall.services]
enabled = ["mdns", "ssh", "http", "https"]

[[customizations.firewall.zones]]
name = "trusted"
sources = ["10.42.0.0/16", "169.254.169.1", "fd01::/48"]
{{- end -}}
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
#!/bin/bash

# Sourced from scenario.sh and uses functions defined there.

# NOTE: Unlike most suites, these tests rely on being run IN ORDER to
# ensure MicroShift is upgraded before running validation tests
export TEST_RANDOMIZATION=none

start_image="rhel98-bootc-brew-y1-with-optional"
dest_image="rhel98-bootc-brew-lrel-optional"

scenario_create_vms() {
exit_if_image_not_found "${start_image}"
exit_if_image_not_found "${dest_image}"

prepare_kickstart host1 kickstart-bootc.ks.template "${start_image}"
launch_vm rhel98-bootc --vm_disksize 30 --vm_vcpus 4
}

scenario_remove_vms() {
exit_if_image_not_found "${start_image}"
exit_if_image_not_found "${dest_image}"

remove_vm host1
}

scenario_run_tests() {
exit_if_image_not_found "${start_image}"
exit_if_image_not_found "${dest_image}"

# Wait for MicroShift to be ready
wait_for_microshift_to_be_ready host1

# Setup oc client and kubeconfig for ginkgo tests
setup_oc_and_kubeconfig host1

# Pre-upgrade: Create LVMS workloads and validate LVMS is working
echo "INFO: Creating LVMS workloads before upgrade..."
run_command_on_vm host1 'bash -s' < "${TESTDIR}/../scripts/lvms-helpers/createWorkloads.sh"

echo "INFO: Checking LVMS resources before upgrade..."
run_command_on_vm host1 'bash -s' < "${TESTDIR}/../scripts/lvms-helpers/checkLvmsResources.sh"

# Perform upgrade and validate
run_tests host1 \
--variable "TARGET_REF:${dest_image}" \
--variable "BOOTC_REGISTRY:${MIRROR_REGISTRY_URL}" \
suites/upgrade/upgrade-successful.robot

# Post-upgrade: Validate LVMS workloads survived the upgrade
echo "INFO: Checking LVMS workloads survived upgrade..."
run_command_on_vm host1 'bash -s' < "${TESTDIR}/../scripts/lvms-helpers/checkWorkloadExists.sh"

echo "INFO: Checking LVMS resources after upgrade..."
run_command_on_vm host1 'bash -s' < "${TESTDIR}/../scripts/lvms-helpers/checkLvmsResources.sh"

# Cleanup LVMS workloads
echo "INFO: Cleaning up LVMS workloads..."
run_command_on_vm host1 'bash -s' < "${TESTDIR}/../scripts/lvms-helpers/cleanupWorkload.sh"

# Run standard suites for basic validation after upgrade
run_tests host1 \
--variable "EXPECTED_OS_VERSION:9.8" \
suites/standard1/ \
suites/standard2/
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
#!/bin/bash

# Sourced from scenario.sh and uses functions defined there.

# NOTE: Unlike most suites, these tests rely on being run IN ORDER to
# ensure MicroShift is upgraded before running validation tests
export TEST_RANDOMIZATION=none

start_image="rhel98-bootc-brew-y2-with-optional"
dest_image="rhel98-bootc-brew-lrel-optional"

scenario_create_vms() {
exit_if_image_not_found "${start_image}"
exit_if_image_not_found "${dest_image}"

prepare_kickstart host1 kickstart-bootc.ks.template "${start_image}"
launch_vm rhel98-bootc --vm_disksize 30 --vm_vcpus 4
}

scenario_remove_vms() {
exit_if_image_not_found "${start_image}"
exit_if_image_not_found "${dest_image}"

remove_vm host1
}

scenario_run_tests() {
exit_if_image_not_found "${start_image}"
exit_if_image_not_found "${dest_image}"

# Wait for MicroShift to be ready
wait_for_microshift_to_be_ready host1

# Setup oc client and kubeconfig for ginkgo tests
setup_oc_and_kubeconfig host1

# Pre-upgrade: Create LVMS workloads and validate LVMS is working
echo "INFO: Creating LVMS workloads before upgrade..."
run_command_on_vm host1 'bash -s' < "${TESTDIR}/../scripts/lvms-helpers/createWorkloads.sh"

echo "INFO: Checking LVMS resources before upgrade..."
run_command_on_vm host1 'bash -s' < "${TESTDIR}/../scripts/lvms-helpers/checkLvmsResources.sh"

# Perform upgrade and validate
run_tests host1 \
--variable "TARGET_REF:${dest_image}" \
--variable "BOOTC_REGISTRY:${MIRROR_REGISTRY_URL}" \
suites/upgrade/upgrade-successful.robot

# Post-upgrade: Validate LVMS workloads survived the upgrade
echo "INFO: Checking LVMS workloads survived upgrade..."
run_command_on_vm host1 'bash -s' < "${TESTDIR}/../scripts/lvms-helpers/checkWorkloadExists.sh"

echo "INFO: Checking LVMS resources after upgrade..."
run_command_on_vm host1 'bash -s' < "${TESTDIR}/../scripts/lvms-helpers/checkLvmsResources.sh"

# Cleanup LVMS workloads
echo "INFO: Cleaning up LVMS workloads..."
run_command_on_vm host1 'bash -s' < "${TESTDIR}/../scripts/lvms-helpers/cleanupWorkload.sh"

# Run standard suites for basic validation after upgrade
run_tests host1 \
--variable "EXPECTED_OS_VERSION:9.8" \
suites/standard1/ \
suites/standard2/
}
Loading