From c2431d548f2d3c7eab2755d1dce0746a002d3d9c Mon Sep 17 00:00:00 2001 From: Tullio Sebastiani Date: Mon, 11 Dec 2023 18:48:42 +0100 Subject: [PATCH] functional tests adapted to newer version of crc-cloud + OCP 4.14.1 (#532) --- .github/workflows/functional_tests.yaml | 64 ++++++++++++++++--------- CI/CRC/init_github_action.sh | 24 ++-------- 2 files changed, 46 insertions(+), 42 deletions(-) diff --git a/.github/workflows/functional_tests.yaml b/.github/workflows/functional_tests.yaml index 7cc749de..9a05e6c7 100644 --- a/.github/workflows/functional_tests.yaml +++ b/.github/workflows/functional_tests.yaml @@ -44,47 +44,65 @@ jobs: - name: Install python 3.9 uses: actions/setup-python@v4 with: - python-version: '3.9' + python-version: '3.9' - name: Setup kraken dependencies run: pip install -r requirements.txt - name: Create Workdir & export the path run: | mkdir workdir echo "WORKDIR_PATH=`pwd`/workdir" >> $GITHUB_ENV + - name: Generate run id + run: | + echo "RUN_ID=`date +%s`" > $GITHUB_ENV + echo "Run Id: ${RUN_ID}" + - name: Write Pull Secret + env: + PULLSECRET_BASE64: ${{ secrets.PS_64 }} + run: | + echo "$PULLSECRET_BASE64" | base64 --decode > pullsecret.txt + - name: Write Boot Private Key + env: + BOOT_KEY: ${{ secrets.CRC_KEY_FILE }} + run: | + echo -n "$BOOT_KEY" > key.txt - name: Teardown CRC (Post Action) uses: webiny/action-post-run@3.0.0 id: post-run-command with: - # currently using image coming from tsebastiani quay.io repo - # waiting that a fix is merged in the upstream one - # post action run cannot (apparently) be properly indented - run: docker run -v "${{ env.WORKDIR_PATH }}:/workdir" -e WORKING_MODE=T -e AWS_ACCESS_KEY_ID=${{ secrets.AWS_ACCESS_KEY_ID }} -e AWS_SECRET_ACCESS_KEY=${{ secrets.AWS_SECRET_ACCESS_KEY }} -e AWS_DEFAULT_REGION=us-west-2 -e TEARDOWN_RUN_ID=crc quay.io/tsebastiani/crc-cloud - - name: Run CRC - # currently using image coming from tsebastiani quay.io repo - # waiting that a fix is merged in the upstream one + run: podman run --rm -v "${{ github.workspace }}:/workspace:z" -e AWS_ACCESS_KEY_ID="${{ secrets.AWS_ACCESS_KEY_ID }}" -e AWS_SECRET_ACCESS_KEY="${{ secrets.AWS_SECRET_ACCESS_KEY }}" -e AWS_DEFAULT_REGION=us-west-2 quay.io/crcont/crc-cloud:v0.0.2 destroy --project-name "chaos-funtest-${{ env.RUN_ID }}" --backed-url "s3://krkn-crc-state/${{ env.RUN_ID }}" --provider "aws" + - name: Create cluster run: | - docker run -v "${{ env.WORKDIR_PATH }}:/workdir" \ - -e WORKING_MODE=C \ - -e PULL_SECRET="${{ secrets.PULL_SECRET }}" \ - -e AWS_ACCESS_KEY_ID="${{ secrets.AWS_ACCESS_KEY_ID }}" \ - -e AWS_SECRET_ACCESS_KEY="${{ secrets.AWS_SECRET_ACCESS_KEY }}" \ - -e AWS_DEFAULT_REGION=us-west-2 \ - -e CREATE_RUN_ID=crc \ - -e PASS_KUBEADMIN="${{ secrets.KUBEADMIN_PWD }}" \ - -e PASS_REDHAT="${{ secrets.REDHAT_PWD }}" \ - -e PASS_DEVELOPER="${{ secrets.DEVELOPER_PWD }}" \ - quay.io/tsebastiani/crc-cloud - - name: OpenShift login and example deployment, GitHub Action env init + podman run --name crc-cloud-create --rm \ + -v ${PWD}:/workspace:z \ + -e AWS_ACCESS_KEY_ID="${{ secrets.AWS_ACCESS_KEY_ID }}" \ + -e AWS_SECRET_ACCESS_KEY="${{ secrets.AWS_SECRET_ACCESS_KEY }}" \ + -e AWS_DEFAULT_REGION="us-west-2" \ + quay.io/crcont/crc-cloud:v0.0.2 \ + create aws \ + --project-name "chaos-funtest-${RUN_ID}" \ + --backed-url "s3://krkn-crc-state/${RUN_ID}" \ + --output "/workspace" \ + --aws-ami-id "ami-00f5eaf98cf42ef9f" \ + --pullsecret-filepath /workspace/pullsecret.txt \ + --key-filepath /workspace/key.txt + + - name: Setup kubeconfig + continue-on-error: true + run: | + ssh -o StrictHostKeyChecking=no -i id_rsa core@$(cat host) "cat /opt/kubeconfig" > kubeconfig + sed -i "s/https:\/\/api.crc.testing:6443/https:\/\/`cat host`.nip.io:6443/g" kubeconfig + echo "KUBECONFIG=${PWD}/kubeconfig" > $GITHUB_ENV + + - name: Example deployment, GitHub Action env init env: NAMESPACE: test-namespace DEPLOYMENT_NAME: test-nginx - KUBEADMIN_PWD: '${{ secrets.KUBEADMIN_PWD }}' run: ./CI/CRC/init_github_action.sh - name: Setup test suite run: | yq -i '.kraken.port="8081"' CI/config/common_test_config.yaml yq -i '.kraken.signal_address="0.0.0.0"' CI/config/common_test_config.yaml - + yq -i '.kraken.kubeconfig_path="'${KUBECONFIG}'"' CI/config/common_test_config.yaml echo "test_app_outages_gh" > ./CI/tests/my_tests echo "test_container" >> ./CI/tests/my_tests echo "test_namespace" >> ./CI/tests/my_tests @@ -106,6 +124,6 @@ jobs: echo "# Test results" > $GITHUB_STEP_SUMMARY cat CI/results.markdown >> $GITHUB_STEP_SUMMARY echo "# Test coverage" >> $GITHUB_STEP_SUMMARY - python -m coverage report --format=markdown >> $GITHUB_STEP_SUMMARY + python -m coverage report --format=markdown >> $GITHUB_STEP_SUMMARY diff --git a/CI/CRC/init_github_action.sh b/CI/CRC/init_github_action.sh index 3e008e41..d5427902 100755 --- a/CI/CRC/init_github_action.sh +++ b/CI/CRC/init_github_action.sh @@ -1,16 +1,11 @@ #!/bin/bash SCRIPT_PATH=./CI/CRC DEPLOYMENT_PATH=$SCRIPT_PATH/deployment.yaml -CLUSTER_INFO=cluster_infos.json - -[[ -z $WORKDIR_PATH ]] && echo "[ERROR] please set \$WORKDIR_PATH environment variable" && exit 1 -CLUSTER_INFO_PATH=$WORKDIR_PATH/crc/$CLUSTER_INFO [[ ! -f $DEPLOYMENT_PATH ]] && echo "[ERROR] please run $0 from GitHub action root directory" && exit 1 -[[ -z $KUBEADMIN_PWD ]] && echo "[ERROR] kubeadmin password not set, please check the repository secrets" && exit 1 [[ -z $DEPLOYMENT_NAME ]] && echo "[ERROR] please set \$DEPLOYMENT_NAME environment variable" && exit 1 [[ -z $NAMESPACE ]] && echo "[ERROR] please set \$NAMESPACE environment variable" && exit 1 -[[ ! -f $CLUSTER_INFO_PATH ]] && echo "[ERROR] cluster_info.json not found in $CLUSTER_INFO_PATH" && exit 1 + OPENSSL=`which openssl 2>/dev/null` [[ $? != 0 ]] && echo "[ERROR]: openssl missing, please install it and try again" && exit 1 @@ -23,20 +18,11 @@ JQ=`which jq 2>/dev/null` ENVSUBST=`which envsubst 2>/dev/null` [[ $? != 0 ]] && echo "[ERROR]: envsubst missing, please install it and try again" && exit 1 -API_ADDRESS="$($JQ -r '.api.address' $CLUSTER_INFO_PATH)" -API_PORT="$($JQ -r '.api.port' $CLUSTER_INFO_PATH)" -BASE_HOST=`$JQ -r '.api.address' $CLUSTER_INFO_PATH | sed -r 's#https:\/\/api\.(.+\.nip\.io)#\1#'` -FQN=$DEPLOYMENT_NAME.apps.$BASE_HOST -echo "[INF] logging on $API_ADDRESS:$API_PORT" -COUNTER=1 -until `$OC login --insecure-skip-tls-verify -u kubeadmin -p $KUBEADMIN_PWD $API_ADDRESS:$API_PORT > /dev/null 2>&1` -do - echo "[INF] login attempt $COUNTER" - [[ $COUNTER == 20 ]] && echo "[ERR] maximum login attempts exceeded, failing" && exit 1 - ((COUNTER++)) - sleep 10 -done +API_PORT="6443" +API_ADDRESS="https://api.`cat host`.nip.io:${API_PORT}" +FQN=$DEPLOYMENT_NAME.apps.$API_ADDRESS + echo "[INF] deploying example deployment: $DEPLOYMENT_NAME in namespace: $NAMESPACE" $ENVSUBST < $DEPLOYMENT_PATH | $OC apply -f - > /dev/null 2>&1