diff --git a/ods_ci/build/Dockerfile_interop b/ods_ci/build/Dockerfile_interop new file mode 100644 index 000000000..54ea55659 --- /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 \ No newline at end of file diff --git a/ods_ci/build/install_idp.sh b/ods_ci/build/install_idp.sh index e71edf708..32efe8e6c 100755 --- a/ods_ci/build/install_idp.sh +++ b/ods_ci/build/install_idp.sh @@ -450,6 +450,34 @@ if [ "${USE_OCM_IDP}" -eq 1 ] then perform_ocm_login fi + +function update_test_config(){ + echo "Update test config file..." + TEST_VARIABLES_FILE="test-variables.yml" + + 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) + 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 +} + validate_user_config_file check_installation install_identity_provider +update_test_config + +echo "Performing oc login using TEST username and password" +username=$(yq eval '.TEST_USER.USERNAME' test-variables.yml) +password=$(yq eval '.TEST_USER.PASSWORD' test-variables.yml) +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 diff --git a/ods_ci/run_interop.sh b/ods_ci/run_interop.sh new file mode 100755 index 000000000..f0bac0d14 --- /dev/null +++ b/ods_ci/run_interop.sh @@ -0,0 +1,21 @@ +export SET_ENVIRONMENT=1 +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 + +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} -d ${ARTIFACT_DIR} -x xunit_test_result.xml -r test_report.html --variablefile ${TEST_VARIABLES_FILE} ${TEST_CASE_FILE}