mirror of
https://github.com/redhat-developer/odo.git
synced 2025-10-19 03:06:19 +03:00
Setting up baseline POC of internal CI (#4063)
* Working on baseline POC of internal CI Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Fixing golangci comments Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Some fixes Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Reducing timeout for sake of PIC feedback Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Moving defer Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Some fixes Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * jenkins build is now a number and dont cancel current build Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Updating envs to prevent conflicts, if any Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Update jenkins user envs Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Disabling auto delete and adding explicit shutdown Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Fixing autodel Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Some more fixes Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Reenablong autodelete and sleeping Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Init and shutdown moved around a bit Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * 2 Connections on prow worker Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Some more fixes Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Fixing nil pointer exception on rcvqchan Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Some cleanup and fixing done message not being sent Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Fixing up messaging Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Adding actual testing Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Make it fail purposefully Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Simplifying poc Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Some more fixes Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Removing success chan as its not needed Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Removing in favor of seperate repo Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Removing related vendor Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Blah Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * updating testing scripts Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Some script updates Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * build odo and copy it to path Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Re-ordering test script Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Some fixes Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Removed unneeded setup script Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Debugging Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Some more stuff Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Re-enable hiding Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Some fixes Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Cleaning up the script Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Fixup for windows and macos testing Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Fixing env names to make it cleaner Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Allow redhat tests to specify precreated project name and delete it Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Updating script for kubeadmin login and handling some setup Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Fixup randomstring to satisfy dns format Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Some stuff to do Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Remove deleteproject Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Some more fixes Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Fixing project name Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Some fixes Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Hiding deletion projects and export project names Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Increasing timeout and memory for java Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Fixing after rebase Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Reverting fixes to tests Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Rebasing and fixing env names and adding one for ubi8 nodejs12 Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Fixing up way env is read Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Fixing project name in oc import image Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Adding remaining tests Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Skipping user login tests Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Removing coloration for ginkgo Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Adding helper for oc get pods and using it in operator hub tests oc get pods succeeds, even if there are no resources. So to account for delays in pods becoming available the fallthough from above mentioned issue, this was created Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Moving noColor to GINKGO_TEST_ARGS Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Adding justbeforeeach and justafter each to a context Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Fixup for newer image Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Removing Access information from file stat in pod. 1. Touching a file on mounts without `noatime` changes the access time. 2. This includes use by run script in container, hence resulting in errors. 3. We are not interested in access information anyway. Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Fixing after rebase Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Increasing curl timeout Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Rebasing and addressing comments by @dharmit Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Fixing after rebase Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Readjusting time and order Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Moving operator hub tests to top Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Removing ginko nocolor as ansi stripping is available in ci-firewall Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Fixing typo Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Adding back old openshift presubmit script with a -old Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Fixing random project for nodejs-14 Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Fixing after rebase Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com> * Fixing odo command Signed-off-by: Mohammed Zeeshan Ahmed <mohammed.zee1000@gmail.com>
This commit is contained in:
69
scripts/openshiftci-presubmit-all-tests-old.sh
Executable file
69
scripts/openshiftci-presubmit-all-tests-old.sh
Executable file
@@ -0,0 +1,69 @@
|
||||
#!/bin/sh
|
||||
|
||||
# fail if some commands fails
|
||||
set -e
|
||||
# show commands
|
||||
set -x
|
||||
|
||||
ARCH=$(uname -m)
|
||||
export CI="openshift"
|
||||
if [ "${ARCH}" == "s390x" ]; then
|
||||
make configure-installer-tests-cluster-s390x
|
||||
elif [ "${ARCH}" == "ppc64le" ]; then
|
||||
make configure-installer-tests-cluster-ppc64le
|
||||
else
|
||||
make configure-installer-tests-cluster
|
||||
fi
|
||||
make bin
|
||||
mkdir -p $GOPATH/bin
|
||||
make goget-ginkgo
|
||||
export PATH="$PATH:$(pwd):$GOPATH/bin"
|
||||
export CUSTOM_HOMEDIR=$ARTIFACT_DIR
|
||||
|
||||
# Copy kubeconfig to temporary kubeconfig file
|
||||
# Read and Write permission to temporary kubeconfig file
|
||||
TMP_DIR=$(mktemp -d)
|
||||
cp $KUBECONFIG $TMP_DIR/kubeconfig
|
||||
chmod 640 $TMP_DIR/kubeconfig
|
||||
export KUBECONFIG=$TMP_DIR/kubeconfig
|
||||
|
||||
# Login as developer
|
||||
odo login -u developer -p password@123
|
||||
|
||||
# Check login user name for debugging purpose
|
||||
oc whoami
|
||||
|
||||
if [ "${ARCH}" == "s390x" ]; then
|
||||
# Integration tests
|
||||
make test-integration
|
||||
make test-cmd-login-logout
|
||||
make test-cmd-project
|
||||
# E2e tests
|
||||
make test-e2e-all
|
||||
elif [ "${ARCH}" == "ppc64le" ]; then
|
||||
# Integration tests
|
||||
make test-integration
|
||||
make test-cmd-login-logout
|
||||
make test-cmd-project
|
||||
# E2e tests
|
||||
make test-e2e-all
|
||||
else
|
||||
# Integration tests
|
||||
make test-integration || error=true
|
||||
make test-integration-devfile || error=true
|
||||
make test-cmd-login-logout || error=true
|
||||
make test-cmd-project || error=true
|
||||
make test-operator-hub || error=true
|
||||
|
||||
# E2e tests
|
||||
make test-e2e-all || error=true
|
||||
|
||||
# Fail the build if there is any error while test execution
|
||||
if [ $error ]; then
|
||||
exit -1
|
||||
fi
|
||||
fi
|
||||
|
||||
cp -r reports $ARTIFACT_DIR
|
||||
|
||||
odo logout
|
||||
@@ -2,68 +2,28 @@
|
||||
|
||||
# fail if some commands fails
|
||||
set -e
|
||||
|
||||
# Hide command that deals with secrets
|
||||
set +x
|
||||
if [[ -f $ODO_RABBITMQ_AMQP_URL ]]; then
|
||||
export AMQP_URI=$(cat $ODO_RABBITMQ_AMQP_URL)
|
||||
fi
|
||||
export AMQP_URI=${AMQP_URI:?"Please set AMQP_URI env with amqp uri or provide path of file containing it as ODO_RABBITMQ_AMQP_URL env"}
|
||||
|
||||
# show commands
|
||||
set -x
|
||||
|
||||
ARCH=$(uname -m)
|
||||
export CI="openshift"
|
||||
if [ "${ARCH}" == "s390x" ]; then
|
||||
make configure-installer-tests-cluster-s390x
|
||||
elif [ "${ARCH}" == "ppc64le" ]; then
|
||||
make configure-installer-tests-cluster-ppc64le
|
||||
else
|
||||
make configure-installer-tests-cluster
|
||||
fi
|
||||
make bin
|
||||
mkdir -p $GOPATH/bin
|
||||
make goget-ginkgo
|
||||
export PATH="$PATH:$(pwd):$GOPATH/bin"
|
||||
export CUSTOM_HOMEDIR=$ARTIFACT_DIR
|
||||
export JOB_NAME="odo-pr-build"
|
||||
export REPO_URL="https://github.com/openshift/odo"
|
||||
# Extract PR NUMBER from prow job spec, which is injected by prow.
|
||||
export TARGET="$(jq .refs.pulls[0].number <<< $(echo $JOB_SPEC))"
|
||||
export CUSTOM_HOMEDIR=$ARTIFACT_DIR
|
||||
|
||||
# Copy kubeconfig to temporary kubeconfig file
|
||||
# Read and Write permission to temporary kubeconfig file
|
||||
TMP_DIR=$(mktemp -d)
|
||||
cp $KUBECONFIG $TMP_DIR/kubeconfig
|
||||
chmod 640 $TMP_DIR/kubeconfig
|
||||
export KUBECONFIG=$TMP_DIR/kubeconfig
|
||||
##### ci-firewall parameters end
|
||||
# The version of CI_FIREWALL TO USE
|
||||
export CI_FIREWALL_VERSION="valpha"
|
||||
|
||||
# Login as developer
|
||||
odo login -u developer -p password@123
|
||||
|
||||
# Check login user name for debugging purpose
|
||||
oc whoami
|
||||
|
||||
if [ "${ARCH}" == "s390x" ]; then
|
||||
# Integration tests
|
||||
make test-integration
|
||||
make test-cmd-login-logout
|
||||
make test-cmd-project
|
||||
# E2e tests
|
||||
make test-e2e-all
|
||||
elif [ "${ARCH}" == "ppc64le" ]; then
|
||||
# Integration tests
|
||||
make test-integration
|
||||
make test-cmd-login-logout
|
||||
make test-cmd-project
|
||||
# E2e tests
|
||||
make test-e2e-all
|
||||
else
|
||||
# Integration tests
|
||||
make test-integration || error=true
|
||||
make test-integration-devfile || error=true
|
||||
make test-cmd-login-logout || error=true
|
||||
make test-cmd-project || error=true
|
||||
make test-operator-hub || error=true
|
||||
|
||||
# E2e tests
|
||||
make test-e2e-all || error=true
|
||||
|
||||
# Fail the build if there is any error while test execution
|
||||
if [ $error ]; then
|
||||
exit -1
|
||||
fi
|
||||
fi
|
||||
|
||||
cp -r reports $ARTIFACT_DIR
|
||||
|
||||
odo logout
|
||||
echo "Getting ci-firewall, see https://github.com,/mohammedzee1000/ci-firewall"
|
||||
curl -kLO https://github.com/mohammedzee1000/ci-firewall/releases/download/valpha/ci-firewall-linux-amd64.tar.gz
|
||||
tar -xzf ci-firewall-linux-amd64.tar.gz
|
||||
./ci-firewall request --runscript scripts/run_all_tests.sh --timeout 2h15m
|
||||
|
||||
137
scripts/run_all_tests.sh
Normal file
137
scripts/run_all_tests.sh
Normal file
@@ -0,0 +1,137 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
shout() {
|
||||
set +x
|
||||
echo -e "\n!!!!!!!!!!!!!!!!!!!!\n${1}\n!!!!!!!!!!!!!!!!!!!!\n"
|
||||
set -x
|
||||
}
|
||||
|
||||
set -ex
|
||||
|
||||
shout "Setting up some stuff"
|
||||
|
||||
# Create a bin directory whereever script runs. This will be where all binaries that need to be in PATH will reside.
|
||||
mkdir bin artifacts
|
||||
# Change the default location of go's bin directory (without affecting GOPATH). This is where compiled binaries will end up by default
|
||||
# for eg go get ginkgo later on will produce ginkgo binary in GOBIN
|
||||
export GOBIN="`pwd`/bin"
|
||||
# Set kubeconfig to current dir. This ensures no clashes with other test runs
|
||||
export KUBECONFIG="`pwd`/config"
|
||||
export ARTIFACTS_DIR="`pwd`/artifacts"
|
||||
export CUSTOM_HOMEDIR=$ARTIFACT_DIR
|
||||
|
||||
# This si one of the variables injected by ci-firewall. Its purpose is to allow scripts to handle uniqueness as needed
|
||||
SCRIPT_IDENTITY=${SCRIPT_IDENTITY:-"def-id"}
|
||||
export SKIP_USER_LOGIN_TESTS="true"
|
||||
|
||||
shout "Getting oc binary"
|
||||
if [[ $BASE_OS == "linux" ]]; then
|
||||
set +x
|
||||
curl --connect-timeout 150 --max-time 2048 -k ${OCP4X_DOWNLOAD_URL}/${ARCH}/${BASE_OS}/oc.tar -o ./oc.tar
|
||||
set -x
|
||||
tar -C $GOBIN -xvf ./oc.tar && rm -rf ./oc.tar
|
||||
else
|
||||
set +x
|
||||
curl --connect-timeout 150 --max-time 2048 -k ${OCP4X_DOWNLOAD_URL}/${ARCH}/${BASE_OS}/oc.zip -o ./oc.zip
|
||||
set -x
|
||||
if [[ $BASE_OS == "windows" ]]; then
|
||||
GOBIN="$(cygpath -pw $GOBIN)"
|
||||
CURRDIR="$(cygpath -pw $WORKDIR)"
|
||||
powershell -Command "Expand-Archive -Path $CURRDIR\oc.zip -DestinationPath $GOBIN"
|
||||
chmod +x $GOBIN/*
|
||||
fi
|
||||
if [[ $BASE_OS == "mac" ]]; then
|
||||
unzip ./oc.zip -d $GOBIN && rm -rf ./oc.zip && chmod +x $GOBIN/oc
|
||||
PATH="$PATH:/usr/local/bin:/usr/local/go/bin"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Add GOBIN which is the bin dir we created earlier to PATH so any binaries there are automatically available in PATH
|
||||
export PATH=$PATH:$GOBIN
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
|
||||
shout "Running unit tests"
|
||||
|
||||
# Run unit tests
|
||||
GOFLAGS='-mod=vendor' make test
|
||||
|
||||
# Prep for integration/e2e
|
||||
shout "Building odo binaries"
|
||||
make bin
|
||||
|
||||
# copy built odo to GOBIN
|
||||
cp -avrf ./odo $GOBIN/
|
||||
shout "getting ginkgo"
|
||||
make goget-ginkgo
|
||||
|
||||
# Integration tests
|
||||
shout "Testing against 4x cluster"
|
||||
|
||||
shout "Logging into 4x cluster for some setup (logs hidden)"
|
||||
set +x
|
||||
oc login -u kubeadmin -p ${OCP4X_KUBEADMIN_PASSWORD} --insecure-skip-tls-verify ${OCP4X_API_URL}
|
||||
set -x
|
||||
|
||||
shout "Doing some presetup"
|
||||
|
||||
# Delete any projects with SCRIPT_IDENTITY PREFIX. This is GC from previous runs which fail before end of script cleanup
|
||||
for i in $(oc projects -q); do
|
||||
if [[ $i == "${SCRIPT_IDENTITY}"* ]]; then
|
||||
oc delete project $i
|
||||
fi
|
||||
done
|
||||
|
||||
# Generate random project names to some tests
|
||||
export REDHAT_OPENJDK11_RHEL8_PROJECT="${SCRIPT_IDENTITY}$(cat /dev/urandom | tr -dc 'a-z0-9' | fold -w 4 | head -n 1)"
|
||||
export REDHAT_OPENJDK11_UBI8_PROJECT="${SCRIPT_IDENTITY}$(cat /dev/urandom | tr -dc 'a-z0-9' | fold -w 4 | head -n 1)"
|
||||
export REDHAT_NODEJS12_RHEL7_PROJECT="${SCRIPT_IDENTITY}$(cat /dev/urandom | tr -dc 'a-z0-9' | fold -w 4 | head -n 1)"
|
||||
export REDHAT_NODEJS12_UBI8_PROJECT="${SCRIPT_IDENTITY}$(cat /dev/urandom | tr -dc 'a-z0-9' | fold -w 4 | head -n 1)"
|
||||
export REDHAT_NODEJS14_UBI8_PROJECT="${SCRIPT_IDENTITY}$(cat /dev/urandom | tr -dc 'a-z0-9' | fold -w 4 | head -n 1)"
|
||||
|
||||
# Create the namespace for e2e image test apply pull secret to the namespace
|
||||
for i in `echo "$REDHAT_OPENJDK11_RHEL8_PROJECT $REDHAT_NODEJS12_RHEL7_PROJECT $REDHAT_NODEJS12_UBI8_PROJECT $REDHAT_OPENJDK11_UBI8_PROJECT $REDHAT_NODEJS14_UBI8_PROJECT"`; do
|
||||
# create the namespace
|
||||
oc new-project $i
|
||||
# Applying pull secret to the namespace which will be used for pulling images from authenticated registry
|
||||
oc get secret pull-secret -n openshift-config -o yaml | sed "s/openshift-config/$i/g" | oc apply -f -
|
||||
# Let developer user have access to the project
|
||||
oc adm policy add-role-to-user edit developer
|
||||
done
|
||||
|
||||
shout "Logging into 4x cluster as developer (logs hidden)"
|
||||
set +x
|
||||
oc login -u developer -p ${OCP4X_DEVELOPER_PASSWORD} --insecure-skip-tls-verify ${OCP4X_API_URL}
|
||||
set -x
|
||||
|
||||
# Integration tests
|
||||
shout "Running integration Tests"
|
||||
make test-operator-hub || error=true
|
||||
make test-integration || error=true
|
||||
make test-integration-devfile || error=true
|
||||
make test-cmd-login-logout || error=true
|
||||
make test-cmd-project || error=true
|
||||
|
||||
# E2e tests
|
||||
shout "Running e2e tests"
|
||||
make test-e2e-all || error=true
|
||||
# Fail the build if there is any error while test execution
|
||||
if [ $error ]; then
|
||||
exit -1
|
||||
fi
|
||||
|
||||
shout "cleaning up post tests"
|
||||
shout "Logging into 4x cluster for cleanup (logs hidden)"
|
||||
set +x
|
||||
oc login -u kubeadmin -p ${OCP4X_KUBEADMIN_PASSWORD} --insecure-skip-tls-verify ${OCP4X_API_URL}
|
||||
set -x
|
||||
|
||||
shout "Cleaning up some leftover projects"
|
||||
|
||||
set +x
|
||||
for i in $(oc projects -q); do
|
||||
if [[ $i == "${SCRIPT_IDENTITY}"* ]]; then
|
||||
oc delete project $i
|
||||
fi
|
||||
done
|
||||
set -x
|
||||
Reference in New Issue
Block a user