diff --git a/ods_ci/build/Dockerfile_interop b/ods_ci/build/Dockerfile_interop new file mode 100644 index 000000000..773c584b8 --- /dev/null +++ b/ods_ci/build/Dockerfile_interop @@ -0,0 +1,49 @@ +FROM quay.io/centos/centos:stream9 + +# Use this build arg to set any default test script arguments +ENV RUN_SCRIPT_ARGS=${RUN_SCRIPT_ARGS} +ENV ROBOT_EXTRA_ARGS='' +ENV SET_ENVIRONMENT=0 +ENV RETURN_PW=0 +ENV OC_HOST=${OC_HOST} +ENV RUN_FROM_CONTAINER=1 +ENV SE_BROWSER_PATH=/usr/bin/chromium-browser +ARG OC_VERSION=4.13 +ARG OC_CHANNEL=stable +ARG PYTHON_VERSION=3.11 + +ENV ODS_VENV="/ods_venv" \ + HOME="/ods_venv" \ + PATH="ods_venv/bin:${PATH}" \ + AM_I_IN_CONTAINER="Yes" \ + PYTHONUNBUFFERED="True" + +WORKDIR /ods_venv + +COPY . ${ODS_VENV} +COPY ods_ci/test-variables.yml.example ${ODS_VENV}/ods_ci/test-variables.yml + +RUN dnf install epel-release -y &&\ + dnf -y update &&\ + dnf install -y jq git unzip chromium chromedriver httpd-tools gcc \ + python3 python3-devel python3-distro python-pip python${PYTHON_VERSION} python${PYTHON_VERSION}-devel &&\ + dnf clean all && rm -rf /var/cache/yum &&\ + curl --proto "=https" -L https://github.com/mikefarah/yq/releases/download/v4.34.1/yq_linux_amd64 -o /usr/bin/yq &&\ + chmod +x /usr/bin/yq &&\ + curl --proto "=https" -L https://mirror.openshift.com/pub/openshift-v$(echo ${OC_VERSION} | cut -d'.' -f 1)/x86_64/clients/ocp/${OC_CHANNEL}-${OC_VERSION}/openshift-client-linux.tar.gz -o ${HOME}/oc_client.tar.gz && \ + tar xvf ${HOME}/oc_client.tar.gz -C /usr/local/bin/ && \ + rm -rf ${HOME}/oc_client.tar.gz && rm /usr/local/bin/README.md && chmod 755 /usr/local/bin/oc && oc version --client && \ + curl --proto "=https" -L https://github.com/openshift-online/ocm-cli/releases/download/v0.1.62/ocm-linux-amd64 -o ${HOME}/ocm && \ + mv ${HOME}/ocm /usr/local/bin/ && chmod 755 /usr/local/bin/ocm && ocm version + +RUN alternatives --install /usr/local/bin/python3 python3 /usr/bin/python${PYTHON_VERSION} 1 +RUN python3 --version +RUN curl -sSL https://install.python-poetry.org | python3 - +ENV PATH="${PATH}:${HOME}/.local/bin" +RUN poetry install + +RUN chgrp -R 0 ${ODS_VENV} && \ + chmod -R g+rwX ${ODS_VENV} + +USER 1001 +WORKDIR ${ODS_VENV}/ods_ci diff --git a/ods_ci/run_interop.sh b/ods_ci/run_interop.sh new file mode 100755 index 000000000..70fcb06d1 --- /dev/null +++ b/ods_ci/run_interop.sh @@ -0,0 +1,49 @@ +#!/bin/bash + +export SET_ENVIRONMENT=1 +export USE_OCM_IDP=0 +export RUN_SCRIPT_ARGS="skip-oclogin true --set-urls-variables true" +export ROBOT_EXTRA_ARGS="-i Smoke --dryrun" + +TEST_CASE_FILE="tests/Tests" +TEST_VARIABLES_FILE="test-variables.yml" + +echo "Install IDP users and map them to test config file" +./build/install_idp.sh + +echo "Update test config file..." +AWS_SHARED_CREDENTIALS_FILE="${CLUSTER_PROFILE_DIR}/.awscred" +AWS_ACCESS_KEY_ID=$(cat $AWS_SHARED_CREDENTIALS_FILE | grep aws_access_key_id | tr -d ' ' | cut -d '=' -f 2) +AWS_SECRET_ACCESS_KEY=$(cat $AWS_SHARED_CREDENTIALS_FILE | grep aws_secret_access_key | tr -d ' ' | cut -d '=' -f 2) +export AWS_ACCESS_KEY_ID +export AWS_SECRET_ACCESS_KEY + +yq -i '.OCP_API_URL=env(OC_HOST)' "${TEST_VARIABLES_FILE}" +yq -i '.OCP_CONSOLE_URL=env(OCP_CONSOLE)' "${TEST_VARIABLES_FILE}" +yq -i '.ODH_DASHBOARD_URL=env(RHODS_DASHBOARD)' "${TEST_VARIABLES_FILE}" +yq -i '.BROWSER.NAME="firefox"' "${TEST_VARIABLES_FILE}" +yq -i '.S3.AWS_ACCESS_KEY_ID=env(AWS_ACCESS_KEY_ID)' "${TEST_VARIABLES_FILE}" +yq -i '.S3.AWS_SECRET_ACCESS_KEY=env(AWS_SECRET_ACCESS_KEY)' "${TEST_VARIABLES_FILE}" + +echo "Performing oc login with cluster admin" +username=$(yq eval '.OCP_ADMIN_USER.USERNAME' "${TEST_VARIABLES_FILE}") +password=$(yq eval '.OCP_ADMIN_USER.PASSWORD' "${TEST_VARIABLES_FILE}") +oc login "$OC_HOST" --username "${username}" --password "${password}" --insecure-skip-tls-verify=true +retVal=$? +if [ $retVal -ne 0 ]; then + echo "The oc login command seems to have failed" + echo "Please review the content of $TEST_VARIABLES_FILE" + exit "$retVal" +fi + +if [[ -z "${TEST_SUITE}" ]]; then + echo "Define TEST_SUITE" + exit 1 +fi + +if [[ -z "${ARTIFACT_DIR}" ]]; then + echo "Define ARTIFACT_DIR" + ARTIFACT_DIR="/tmp" +fi + +poetry run robot --include ${TEST_SUITE} --exclude "AutomationBug" --exclude "ProductBug" --exclude "ExcludeOnRHOAI" -d ${ARTIFACT_DIR} -x xunit_test_result.xml -r test_report.html --variablefile ${TEST_VARIABLES_FILE} ${TEST_CASE_FILE}