Skip to content
23 changes: 17 additions & 6 deletions test/assets/common_versions.sh.template
Original file line number Diff line number Diff line change
Expand Up @@ -142,13 +142,24 @@ export CNCF_SYSTEMD_LOGS_VERSION={CNCF_SYSTEMD_LOGS_VERSION}
export GITOPS_VERSION={GITOPS_VERSION}

# The brew release versions needed for release regression testing
BREW_Y0_RELEASE_VERSION="$(get_vrel_from_rpm "${{BREW_RPM_SOURCE}}/4.${{MINOR_VERSION}}-zstream/{ARCH}/")"
BREW_Y1_RELEASE_VERSION="$(get_vrel_from_rpm "${{BREW_RPM_SOURCE}}/4.${{PREVIOUS_MINOR_VERSION}}-zstream/{ARCH}/")"
BREW_Y2_RELEASE_VERSION="$(get_vrel_from_rpm "${{BREW_RPM_SOURCE}}/4.${{YMINUS2_MINOR_VERSION}}-zstream/{ARCH}/")"
BREW_RC_RELEASE_VERSION="$(get_vrel_from_rpm "${{BREW_RPM_SOURCE}}/4.${{MINOR_VERSION}}-rc/{ARCH}/")"
BREW_EC_RELEASE_VERSION="$(get_vrel_from_rpm "${{BREW_RPM_SOURCE}}/4.${{MINOR_VERSION}}-ec/{ARCH}/")"
BREW_NIGHTLY_RELEASE_VERSION="$(get_vrel_from_rpm "${{BREW_RPM_SOURCE}}/4.${{MINOR_VERSION}}-nightly/{ARCH}/")"
Y0_VERSION="$(find "${{BREW_RPM_SOURCE}}" -maxdepth 1 -type d -regex ".*/[45]\.${{MINOR_VERSION}}\.[0-9]+$" -printf '%f\n' | sort -V | tail -n1 || echo "")"
Z1_VERSION="$(find "${{BREW_RPM_SOURCE}}" -maxdepth 1 -type d -regex ".*/[45]\.${{MINOR_VERSION}}\.[0-9]+$" -printf '%f\n' | sort -V | head -n1 || echo "")"
Y1_VERSION="$(find "${{BREW_RPM_SOURCE}}" -maxdepth 1 -type d -regex ".*/[45]\.${{PREVIOUS_MINOR_VERSION}}\.[0-9]+$" -printf '%f\n' | sort -V | tail -n1 || echo "")"
Y2_VERSION="$(find "${{BREW_RPM_SOURCE}}" -maxdepth 1 -type d -regex ".*/[45]\.${{YMINUS2_MINOR_VERSION}}\.[0-9]+$" -printf '%f\n' | sort -V | tail -n1 || echo "")"
RC_VERSION="$(find "${{BREW_RPM_SOURCE}}" -maxdepth 1 -type d -regex ".*/[45]\.${{MINOR_VERSION}}\.[0-9]*-rc$" -printf '%f\n' | sort -V | tail -n1 || echo "")"
EC_VERSION="$(find "${{BREW_RPM_SOURCE}}" -maxdepth 1 -type d -regex ".*/[45]\.${{MINOR_VERSION}}\.[0-9]*-ec$" -printf '%f\n' | sort -V | tail -n1 || echo "")"
NIGHTLY_VERSION="$(find "${{BREW_RPM_SOURCE}}" -maxdepth 1 -type d -regex ".*/[45]\.${{MINOR_VERSION}}\.[0-9]*-nightly$" -printf '%f\n' | sort -V | tail -n1 || echo "")"

BREW_Y0_RELEASE_VERSION="$(get_vrel_from_rpm "${{BREW_RPM_SOURCE}}/${{Y0_VERSION}}/{ARCH}/")"
BREW_Z1_RELEASE_VERSION="$(get_vrel_from_rpm "${{BREW_RPM_SOURCE}}/${{Z1_VERSION}}/{ARCH}/")"
BREW_Y1_RELEASE_VERSION="$(get_vrel_from_rpm "${{BREW_RPM_SOURCE}}/${{Y1_VERSION}}/{ARCH}/")"
BREW_Y2_RELEASE_VERSION="$(get_vrel_from_rpm "${{BREW_RPM_SOURCE}}/${{Y2_VERSION}}/{ARCH}/")"
BREW_RC_RELEASE_VERSION="$(get_vrel_from_rpm "${{BREW_RPM_SOURCE}}/${{RC_VERSION}}/{ARCH}/")"
BREW_EC_RELEASE_VERSION="$(get_vrel_from_rpm "${{BREW_RPM_SOURCE}}/${{EC_VERSION}}/{ARCH}/")"
BREW_NIGHTLY_RELEASE_VERSION="$(get_vrel_from_rpm "${{BREW_RPM_SOURCE}}/${{NIGHTLY_VERSION}}/{ARCH}/")"

export BREW_Y0_RELEASE_VERSION
export BREW_Z1_RELEASE_VERSION
export BREW_Y1_RELEASE_VERSION
export BREW_Y2_RELEASE_VERSION
export BREW_RC_RELEASE_VERSION
Expand Down
12 changes: 6 additions & 6 deletions test/bin/build_rpms.sh
Original file line number Diff line number Diff line change
Expand Up @@ -121,12 +121,12 @@ download_brew_rpms() {
rm -rf "${BREW_RPM_SOURCE}"
# Run the download procedure
bash -x "${SCRIPTDIR}/../../scripts/fetch_tools.sh" brew
bash -x "${SCRIPTDIR}/manage_brew_rpms.sh" download "4.${MINOR_VERSION}" "${BREW_RPM_SOURCE}" "zstream" || true
bash -x "${SCRIPTDIR}/manage_brew_rpms.sh" download "4.${PREVIOUS_MINOR_VERSION}" "${BREW_RPM_SOURCE}" "zstream" || true
bash -x "${SCRIPTDIR}/manage_brew_rpms.sh" download "4.${YMINUS2_MINOR_VERSION}" "${BREW_RPM_SOURCE}" "zstream" || true
bash -x "${SCRIPTDIR}/manage_brew_rpms.sh" download "4.${MINOR_VERSION}" "${BREW_RPM_SOURCE}" "rc" || true
bash -x "${SCRIPTDIR}/manage_brew_rpms.sh" download "4.${MINOR_VERSION}" "${BREW_RPM_SOURCE}" "ec" || true
bash -x "${SCRIPTDIR}/manage_brew_rpms.sh" download "4.${MINOR_VERSION}" "${BREW_RPM_SOURCE}" "nightly" || true
bash -x "${SCRIPTDIR}/manage_brew_rpms.sh" download "4.${MINOR_VERSION}" "${BREW_RPM_SOURCE}" "rc" || echo "WARNING: Failed to download RC RPMs for 4.${MINOR_VERSION}"
bash -x "${SCRIPTDIR}/manage_brew_rpms.sh" download "4.${MINOR_VERSION}" "${BREW_RPM_SOURCE}" "ec" || echo "WARNING: Failed to download EC RPMs for 4.${MINOR_VERSION}"
bash -x "${SCRIPTDIR}/manage_brew_rpms.sh" download "4.${MINOR_VERSION}" "${BREW_RPM_SOURCE}" "zstream" || echo "WARNING: Failed to download zstream RPMs for 4.${MINOR_VERSION}"
bash -x "${SCRIPTDIR}/manage_brew_rpms.sh" download "4.${MINOR_VERSION}" "${BREW_RPM_SOURCE}" "nightly" || echo "WARNING: Failed to download nightly RPMs for 4.${MINOR_VERSION}"
bash -x "${SCRIPTDIR}/manage_brew_rpms.sh" download "4.${PREVIOUS_MINOR_VERSION}" "${BREW_RPM_SOURCE}" "zstream" || echo "WARNING: Failed to download zstream RPMs for 4.${PREVIOUS_MINOR_VERSION}"
bash -x "${SCRIPTDIR}/manage_brew_rpms.sh" download "4.${YMINUS2_MINOR_VERSION}" "${BREW_RPM_SOURCE}" "zstream" || ( echo "WARNING: Failed to download zstream RPMs for 4.${YMINUS2_MINOR_VERSION}" && return 1 )
else
echo "WARNING: The Brew Hub site is not accessible, skipping the download"
fi
Expand Down
18 changes: 16 additions & 2 deletions test/bin/common.sh
Original file line number Diff line number Diff line change
Expand Up @@ -370,6 +370,8 @@ MICROSHIFT_MANDATORY_RPMS_LIST=(
microshift
microshift-release-info
)

## Optional RPMs
MICROSHIFT_Y2_OPTIONAL_RPMS_LIST=(
microshift-olm
microshift-olm-release-info
Expand All @@ -387,24 +389,36 @@ MICROSHIFT_Y1_OPTIONAL_RPMS_LIST=(
microshift-sriov
microshift-sriov-release-info
)
MICROSHIFT_OPTIONAL_RPMS_LIST=(
MICROSHIFT_Z1_OPTIONAL_RPMS_LIST=(
"${MICROSHIFT_Y1_OPTIONAL_RPMS_LIST[@]}"
)
MICROSHIFT_OPTIONAL_RPMS_LIST=(
"${MICROSHIFT_Z1_OPTIONAL_RPMS_LIST[@]}"
)

## x86_64 RPMs
MICROSHIFT_Y2_X86_64_RPMS_LIST=(
microshift-ai-model-serving
microshift-ai-model-serving-release-info
)
MICROSHIFT_Y1_X86_64_RPMS_LIST=(
"${MICROSHIFT_Y2_X86_64_RPMS_LIST[@]}"
)
MICROSHIFT_Z1_X86_64_RPMS_LIST=(
"${MICROSHIFT_Y2_X86_64_RPMS_LIST[@]}"
)
MICROSHIFT_X86_64_RPMS_LIST=(
"${MICROSHIFT_Y1_X86_64_RPMS_LIST[@]}"
"${MICROSHIFT_Z1_X86_64_RPMS_LIST[@]}"
)

export MICROSHIFT_MANDATORY_RPMS="${MICROSHIFT_MANDATORY_RPMS_LIST[*]}"

export MICROSHIFT_Y2_OPTIONAL_RPMS="${MICROSHIFT_Y2_OPTIONAL_RPMS_LIST[*]}"
export MICROSHIFT_Y1_OPTIONAL_RPMS="${MICROSHIFT_Y1_OPTIONAL_RPMS_LIST[*]}"
export MICROSHIFT_Z1_OPTIONAL_RPMS="${MICROSHIFT_Z1_OPTIONAL_RPMS_LIST[*]}"
export MICROSHIFT_OPTIONAL_RPMS="${MICROSHIFT_OPTIONAL_RPMS_LIST[*]}"

export MICROSHIFT_Y2_X86_64_RPMS="${MICROSHIFT_Y2_X86_64_RPMS_LIST[*]}"
export MICROSHIFT_Y1_X86_64_RPMS="${MICROSHIFT_Y1_X86_64_RPMS_LIST[*]}"
export MICROSHIFT_Z1_X86_64_RPMS="${MICROSHIFT_Z1_X86_64_RPMS_LIST[*]}"
export MICROSHIFT_X86_64_RPMS="${MICROSHIFT_X86_64_RPMS_LIST[*]}"
23 changes: 17 additions & 6 deletions test/bin/common_versions.sh
Original file line number Diff line number Diff line change
Expand Up @@ -142,13 +142,24 @@ export CNCF_SYSTEMD_LOGS_VERSION=v0.4
export GITOPS_VERSION=1.16

# 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}/")"
BREW_Y1_RELEASE_VERSION="$(get_vrel_from_rpm "${BREW_RPM_SOURCE}/4.${PREVIOUS_MINOR_VERSION}-zstream/${UNAME_M}/")"
BREW_Y2_RELEASE_VERSION="$(get_vrel_from_rpm "${BREW_RPM_SOURCE}/4.${YMINUS2_MINOR_VERSION}-zstream/${UNAME_M}/")"
BREW_RC_RELEASE_VERSION="$(get_vrel_from_rpm "${BREW_RPM_SOURCE}/4.${MINOR_VERSION}-rc/${UNAME_M}/")"
BREW_EC_RELEASE_VERSION="$(get_vrel_from_rpm "${BREW_RPM_SOURCE}/4.${MINOR_VERSION}-ec/${UNAME_M}/")"
BREW_NIGHTLY_RELEASE_VERSION="$(get_vrel_from_rpm "${BREW_RPM_SOURCE}/4.${MINOR_VERSION}-nightly/${UNAME_M}/")"
Y0_VERSION="$(find "${BREW_RPM_SOURCE}" -maxdepth 1 -type d -regex ".*/[45]\.${MINOR_VERSION}\.[0-9]+$" -printf '%f\n' | sort -V | tail -n1 || echo "")"
Z1_VERSION="$(find "${BREW_RPM_SOURCE}" -maxdepth 1 -type d -regex ".*/[45]\.${MINOR_VERSION}\.[0-9]+$" -printf '%f\n' | sort -V | head -n1 || echo "")"
Y1_VERSION="$(find "${BREW_RPM_SOURCE}" -maxdepth 1 -type d -regex ".*/[45]\.${PREVIOUS_MINOR_VERSION}\.[0-9]+$" -printf '%f\n' | sort -V | tail -n1 || echo "")"
Y2_VERSION="$(find "${BREW_RPM_SOURCE}" -maxdepth 1 -type d -regex ".*/[45]\.${YMINUS2_MINOR_VERSION}\.[0-9]+$" -printf '%f\n' | sort -V | tail -n1 || echo "")"
RC_VERSION="$(find "${BREW_RPM_SOURCE}" -maxdepth 1 -type d -regex ".*/[45]\.${MINOR_VERSION}\.[0-9]*-rc$" -printf '%f\n' | sort -V | tail -n1 || echo "")"
EC_VERSION="$(find "${BREW_RPM_SOURCE}" -maxdepth 1 -type d -regex ".*/[45]\.${MINOR_VERSION}\.[0-9]*-ec$" -printf '%f\n' | sort -V | tail -n1 || echo "")"
NIGHTLY_VERSION="$(find "${BREW_RPM_SOURCE}" -maxdepth 1 -type d -regex ".*/[45]\.${MINOR_VERSION}\.[0-9]*-nightly$" -printf '%f\n' | sort -V | tail -n1 || echo "")"

BREW_Y0_RELEASE_VERSION="$(get_vrel_from_rpm "${BREW_RPM_SOURCE}/${Y0_VERSION}/${UNAME_M}/")"
BREW_Z1_RELEASE_VERSION="$(get_vrel_from_rpm "${BREW_RPM_SOURCE}/${Z1_VERSION}/${UNAME_M}/")"
BREW_Y1_RELEASE_VERSION="$(get_vrel_from_rpm "${BREW_RPM_SOURCE}/${Y1_VERSION}/${UNAME_M}/")"
BREW_Y2_RELEASE_VERSION="$(get_vrel_from_rpm "${BREW_RPM_SOURCE}/${Y2_VERSION}/${UNAME_M}/")"
BREW_RC_RELEASE_VERSION="$(get_vrel_from_rpm "${BREW_RPM_SOURCE}/${RC_VERSION}/${UNAME_M}/")"
BREW_EC_RELEASE_VERSION="$(get_vrel_from_rpm "${BREW_RPM_SOURCE}/${EC_VERSION}/${UNAME_M}/")"
BREW_NIGHTLY_RELEASE_VERSION="$(get_vrel_from_rpm "${BREW_RPM_SOURCE}/${NIGHTLY_VERSION}/${UNAME_M}/")"

export BREW_Y0_RELEASE_VERSION
export BREW_Z1_RELEASE_VERSION
export BREW_Y1_RELEASE_VERSION
export BREW_Y2_RELEASE_VERSION
export BREW_RC_RELEASE_VERSION
Expand Down
150 changes: 129 additions & 21 deletions test/bin/manage_brew_rpms.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,11 @@ SCRIPTDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
# Note: Avoid sourcing common.sh or common_version.sh in this script to allow
# its execution in a containerized environment with limited set of tools.

UNAME_M="${UNAME_M:-$(uname -m)}"

usage() {
echo "Usage: $(basename "$0") [access | download <version> <path> [version_type]]"
echo " download: Download the RPM version to the path as specified"
echo " download: Download the latest RPM packages for the given version, Z-1, Y-2 and Y-1 to the path as specified"
echo " - version: the X.Y version. Example: 4.19"
echo " - path: the output directory. Example: /_output/test-images/brew-rpms"
echo " - version_type: Optional. Valid values: rc, ec, zstream and nightly. Default: nightly"
Expand All @@ -29,55 +31,161 @@ action_access() {
return ${rc}
}

action_download() {
find_package() {
local -r ver=$1
local -r dir=$2
local -r ver_type=${3:-nightly}
local -r ver_type=${2:-nightly}
local -r ver_prev_y=${3:-0}
local -r ver_prev_z=${4:-0}

if [ -z "${ver}" ] || [ -z "${dir}" ] ; then
echo "ERROR: At least two parameters (version and path) are required"
exit 1
# Validate version format
if ! [[ "${ver}" =~ ^4\.[0-9]+(\.[0-9]+)?$ ]]; then
echo "ERROR: Version '${ver}' does not match required format 4.Y or 4.Y.Z (e.g., 4.20 or 4.20.1)"
return 1
fi

if ! action_access ; then
echo "ERROR: Brew Hub site is not accessible"
exit 1
# Validate optional numeric parameters
if ! [[ "${ver_prev_y}" =~ ^[0-9]$ ]] || ! [[ "${ver_prev_z}" =~ ^[0-9]$ ]]; then
echo "ERROR: ver_prev_y '${ver_prev_y}' and ver_prev_z '${ver_prev_z}' must be a non-negative integer and less than 10"
return 1
fi
"${SCRIPTDIR}/../../scripts/fetch_tools.sh" brew

# Attempt downloading the specified build version
local package
# Extract version components
ver_x=$(echo "${ver}" | cut -d'.' -f1)
ver_y=$(echo "${ver}" | cut -d'.' -f2)

# Calculate previous X.Y version
ver_y=$((ver_y - ver_prev_y))

local package=""
set +x
case ${ver_type} in
zstream)
package_list=$(sudo dnf repoquery --quiet --repo "rhocp-${ver_x}.${ver_y}-for-rhel-9-${UNAME_M}-rpms" 2>/dev/null) || true
package_filtered=$(echo "${package_list}" | grep "microshift-0:" | sed 's/0://' | sed "s/.${UNAME_M}$//" | sort -V | uniq ) || true
if [ -z "${package_filtered}" ] ; then
package_list=$(brew list-builds --quiet --package=microshift --state=COMPLETE 2>/dev/null) || true
package_filtered=$(echo "${package_list}" | grep "^microshift-${ver_x}.${ver_y}" | grep -v "~" | sort -V | uniq ) || true
fi
package=$(echo "${package_filtered}" | tail -n$((1 + ver_prev_z)) | head -n1 | awk '{print $1}') || true
;;
nightly)
package=$(brew list-builds --quiet --package=microshift --state=COMPLETE | grep "^microshift-${ver}" | grep "nightly" | uniq | tail -n1) || true
package_list=$(brew list-builds --quiet --package=microshift --state=COMPLETE 2>/dev/null ) || true
package_filtered=$(echo "${package_list}" | grep "^microshift-${ver_x}.${ver_y}" | grep "nightly" | sort -V | uniq ) || true
package=$(echo "${package_filtered}" | tail -n1 | awk '{print $1}') || true
;;
rc|ec)
package_list=$(brew list-builds --quiet --package=microshift --state=COMPLETE 2>/dev/null ) || true
package_filtered=$(echo "${package_list}" | grep "^microshift-${ver_x}.${ver_y}.0~${ver_type}." | sort -V | uniq ) || true
package=$(echo "${package_filtered}" | tail -n1 | awk '{print $1}') || true
;;
*)
echo "ERROR: Invalid version_type '${ver_type}'. Valid values are: rc, ec, zstream and nightly"
exit 1
;;
esac
set -x
echo "${package}"
}

action_download() {
local -r ver=$1
local -r main_dir=$2
local -r ver_type=${3:-nightly}

local -a package_list=()

# Find the packages to download
case ${ver_type} in
zstream)
package=$(brew list-builds --quiet --package=microshift --state=COMPLETE | grep "^microshift-${ver}" | grep -v "~" | uniq | tail -n1) || true
package_y0="$(find_package "${ver}" "${ver_type}" "0" "0")"
package_z1="$(find_package "${ver}" "${ver_type}" "0" "1")"
package_y1="$(find_package "${ver}" "${ver_type}" "1" "0")"
package_y2="$(find_package "${ver}" "${ver_type}" "2" "0")"
package_list=("${package_y0}" "${package_y1}" "${package_y2}" "${package_z1}")
;;
rc|ec)
package=$(brew list-builds --quiet --package=microshift --state=COMPLETE | grep "^microshift-${ver}.0~${ver_type}." | tail -n1) || true
nightly|rc|ec)
package_latest="$(find_package "${ver}" "${ver_type}")"
package_list=("${package_latest}")
;;
*)
echo "ERROR: Invalid version_type '${ver_type}'. Valid values are: rc, ec, zstream and nightly"
exit 1
;;
esac

# Check at least one package is found
local all_empty=true
for package in "${package_list[@]}" ; do
if [ -n "${package}" ] ; then
all_empty=false
break
fi
done
if ${all_empty} ; then
echo "ERROR: No packages found for ${ver} ${ver_type}"
return 1
fi

# Download the packages
for package in "${package_list[@]}" ; do
if [ -z "${package}" ] ; then
continue
fi
sub_dir=$(echo "${package}" | cut -d'-' -f2)
if ! brew_cli_download "${package}" "${main_dir}" "${sub_dir}" "${ver_type}" ; then
echo "ERROR: Failed to download package: ${package}"
return 1
fi
done
}

brew_cli_download() {
local -r package=$1
local -r main_dir=$2
local -r sub_dir=$3
local -r ver_type=$4

# Validate parameters
if [ -z "${package}" ] ; then
echo "ERROR: Cannot find MicroShift '${ver}' packages in brew"
echo "ERROR: Package is required"
exit 1
fi

package=$(awk '{print $1}' <<< "${package}")
if [ -z "${main_dir}" ] ; then
echo "ERROR: Main directory is required"
exit 1
fi

if [ -z "${sub_dir}" ] ; then
echo "ERROR: Sub directory is required"
exit 1
fi
# Check if brew is accessible
if ! action_access ; then
echo "ERROR: Brew Hub site is not accessible"
exit 1
fi
"${SCRIPTDIR}/../../scripts/fetch_tools.sh" brew

echo "Downloading '${package}' packages from brew"

# Format sub_dir for EC, RC and nightly
if [ "${ver_type}" = "ec" ] || [ "${ver_type}" = "rc" ] || [ "${ver_type}" = "nightly" ] ; then
final_sub_dir=$(echo "${sub_dir}" | sed -E 's/(.*)(~)(.*)(rc|ec|nightly)(.*)/\1-\4/g')
elif [ "${ver_type}" = "zstream" ] ; then
final_sub_dir="${sub_dir}"
fi

# Download all the supported architectures as the required architecture
# cannot be identified easily when running in a CI job
for arch in x86_64 aarch64 ; do
local adir
adir="${dir}/${ver}-${ver_type}/${arch}"
adir="${main_dir}/${final_sub_dir}/${arch}"

mkdir -p "${adir}"
if ! mkdir -p "${adir}" ; then
echo "ERROR: Failed to create directory '${adir}'"
exit 1
fi
pushd "${adir}" &>/dev/null
if ! brew download-build --arch="${arch}" --arch="noarch" "${package}" ; then
echo "WARNING: Failed to download '${package}' packages using brew download-build command, using curl as a fallback mechanism"
Expand Down
1 change: 1 addition & 0 deletions test/bin/manage_build_cache.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ SCRIPTDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
source "${SCRIPTDIR}/common.sh"

AWS_BUCKET_NAME="${AWS_BUCKET_NAME:-microshift-build-cache}"
AWS_BUCKET_NAME="microshift-build-ushift-6073-cache-us-west-2"
BCH_SUBDIR=
TAG_SUBDIR=
ARCH_SUBDIR="${UNAME_M}"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# {{- if env.Getenv "BREW_Z1_RELEASE_VERSION" "" -}}
# Note: This comment makes templating add a new line before the code
FROM localhost/rhel96-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_Z1_RELEASE_VERSION" }}" \
{{ end -}}
{{ range (env.Getenv "MICROSHIFT_Z1_OPTIONAL_RPMS" | strings.Split " ") -}}
"{{ . }}-{{ env.Getenv "BREW_Z1_RELEASE_VERSION" }}" \
{{ end -}}
{{ if and (env.Getenv "UNAME_M" "") (eq "x86_64" .Env.UNAME_M) -}}
{{ range (env.Getenv "MICROSHIFT_Z1_X86_64_RPMS" | strings.Split " ") -}}
"{{ . }}-{{ env.Getenv "BREW_Z1_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 -}}
Loading