From 0e430bea8d63838dfcf33974f63f31bcfb65dca0 Mon Sep 17 00:00:00 2001 From: Brandon Palm Date: Thu, 18 Jan 2024 12:36:59 -0600 Subject: [PATCH] Add CRC testing against Ubuntu CRC Ubuntu Use tmate --- .github/workflows/qe-crc.yml | 196 ++++++++++++++++++++++++++++++++ .github/workflows/qe-hosted.yml | 13 ++- 2 files changed, 204 insertions(+), 5 deletions(-) create mode 100644 .github/workflows/qe-crc.yml diff --git a/.github/workflows/qe-crc.yml b/.github/workflows/qe-crc.yml new file mode 100644 index 0000000000..02d468e6e8 --- /dev/null +++ b/.github/workflows/qe-crc.yml @@ -0,0 +1,196 @@ +# https://developers.redhat.com/content-gateway/rest/mirror/pub/openshift-v4/clients/crc/latest/crc-linux-amd64.tar.xz + +name: CRC Tests + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + workflow_dispatch: +env: + QE_REPO: test-network-function/cnfcert-tests-verification + +jobs: + smoke-tests: + name: Run Smoke Tests Against OpenShift Local + runs-on: ubuntu-22.04 + env: + SHELL: /bin/bash + KUBECONFIG: '/home/runner/.crc/machines/crc/kubeconfig' + PFLT_DOCKERCONFIG: '/home/runner/.docker/config' + DOCKER_CONFIG_DIR: '/home/runner/.docker/' + SKIP_PRELOAD_IMAGES: true + + steps: + - name: Write temporary docker file + run: | + mkdir -p /home/runner/.docker + touch ${PFLT_DOCKERCONFIG} + echo '{ "auths": {} }' >> ${PFLT_DOCKERCONFIG} + if: runner.os == 'Linux' + + - name: Free Disk Space (Ubuntu) + uses: jlumbroso/free-disk-space@main + with: + tool-cache: false + large-packages: true + android: true + dotnet: true + haskell: true + docker-images: true + swap-storage: true + continue-on-error: true + + - name: Set up Go 1.22.4 + uses: actions/setup-go@v5 + with: + go-version: 1.22.4 + + - name: Install required packages for Linux + run: | + sudo apt-get update + sudo apt install qemu-kvm libvirt-daemon libvirt-daemon-system network-manager jq + if: runner.os == 'Linux' + + - name: Enable KVM group perms + run: | + echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules + sudo udevadm control --reload-rules + sudo udevadm trigger --name-match=kvm + sudo apt-get update + sudo apt-get install -y libvirt-clients libvirt-daemon-system libvirt-daemon virtinst bridge-utils qemu qemu-system-x86 + sudo usermod -a -G kvm,libvirt $USER + sudo adduser `id -un` libvirt + + # Restart docker using /mnt/docker-storage (sdb) instead of /var/lib/docker (sda). + # This step needs to be done right after the partner repo's bootstrap scripts, as they + # overwrite the docker's daemon.json. + - name: Make docker to use /mnt (sdb) for storage + run: | + df -h + lsblk + sudo mkdir /mnt/docker-storage + sudo jq '. +={"data-root" : "/mnt/docker-storage"}' < /etc/docker/daemon.json > /tmp/docker-daemon.json + sudo cp /tmp/docker-daemon.json /etc/docker/daemon.json + cat /etc/docker/daemon.json + sudo systemctl restart docker + sudo ls -la /mnt/docker-storage + + - name: reload the terminal to load the libvirt group + run: | + sudo -E bash -c 'exec su -l '$USER + if: runner.os == 'Linux' + + - name: Check kvm + run: | + sudo apt-get install cpu-checker + egrep -c '(vmx|svm)' /proc/cpuinfo + kvm-ok + + - name: Check if user is part of libvirt group + run: | + groups + sudo usermod -a -G libvirt $USER + groups + if: runner.os == 'Linux' + + - name: Disable default go problem matcher + run: echo "::remove-matcher owner=go::" + + - name: Check out code + uses: actions/checkout@v4 + with: + ref: ${{ github.sha }} + + - name: check if CRC_PULL_SECRET exists + env: + super_secret: ${{ secrets.CRC_PULL_SECRET }} + if: ${{ env.super_secret == '' }} + run: 'echo the secret \"CRC_PULL_SECRET\" has not been made; echo please go to \"settings \> secrets \> actions\" to create it' + + - name: Write the pull secret to json file + run: | + echo $CRC_PULL_SECRET > temp-ps.json + cat temp-ps.json + env: + CRC_PULL_SECRET: ${{ secrets.CRC_PULL_SECRET }} + shell: bash + + # Create a OpenShift Local Cluster for testing + - name: Download the CRC binary (Linux) + run: | + wget -O crc-linux-amd64.tar.xz https://developers.redhat.com/content-gateway/file/pub/openshift-v4/clients/crc/2.37.1/crc-linux-amd64.tar.xz + tar xvf crc-linux-amd64.tar.xz + sudo mv crc-linux-*/crc /usr/local/bin/ + if: runner.os == 'Linux' + + - name: Set Memory + uses: nick-fields/retry@v2 + with: + timeout_minutes: 5 + max_attempts: 3 + command: crc config set memory 10752 + + - name: Set Telemetry + uses: nick-fields/retry@v2 + with: + timeout_minutes: 5 + max_attempts: 3 + command: crc config set consent-telemetry yes + + - name: Set Network-Mode User + uses: nick-fields/retry@v2 + with: + timeout_minutes: 5 + max_attempts: 3 + command: crc config set network-mode user + + - name: Run CRC Setup + uses: nick-fields/retry@v2 + with: + timeout_minutes: 15 + max_attempts: 3 + command: sudo -su $USER crc setup + + - name: Run CRC Start + uses: nick-fields/retry@v2 + with: + timeout_minutes: 30 + max_attempts: 3 + command: sudo -su $USER crc start --pull-secret-file temp-ps.json --log-level debug + on_retry_command: sudo -su $USER crc delete -f + + - name: Wait until node is Ready state + run: | + while [[ $(oc get nodes --request-timeout='30s' -o json | jq -r '.items[] | select(.metadata.name=="api.crc.testing") | .status.conditions[] | select(.reason=="KubeletReady") | .status') == "False" ]]; do + echo "Waiting for node to be in Ready state" + sleep 5 + done + + - name: Set the adm policy + run: | + oc adm policy add-scc-to-user privileged user + + - name: Run oc version, get nodes and pods + run: | + eval $(crc oc-env) + oc version + oc get nodes + oc get pods -A + + - name: Run some oc commands + run: | + oc get nodes + oc get pods -A + + - name: Clone the QE repository + uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + with: + repository: ${{ env.QE_REPO }} + path: cnfcert-tests-verification + + + - name: Run tmate session + uses: mxschmitt/action-tmate@v3 + diff --git a/.github/workflows/qe-hosted.yml b/.github/workflows/qe-hosted.yml index 4420219c4f..2f6691cfb7 100644 --- a/.github/workflows/qe-hosted.yml +++ b/.github/workflows/qe-hosted.yml @@ -1,8 +1,8 @@ name: QE Testing (Ubuntu-hosted) on: - pull_request: - branches: [ main ] + # pull_request: + # branches: [ main ] workflow_dispatch: # Schedule a daily cron at midnight UTC schedule: @@ -53,7 +53,8 @@ jobs: strategy: fail-fast: false matrix: - suite: [accesscontrol, affiliatedcertification, manageability, networking, lifecycle, performance, platformalteration, observability, operator] + suite: [accesscontrol] + # suite: [accesscontrol, affiliatedcertification, manageability, networking, lifecycle, performance, platformalteration, observability, operator] env: SHELL: /bin/bash KUBECONFIG: '/home/runner/.kube/config' @@ -100,14 +101,16 @@ jobs: with: repository: ${{ env.QE_REPO }} path: cnfcert-tests-verification - ref: main - name: Extract dependent Pull Requests uses: depends-on/depends-on-action@9e8a61fce18b15281e831f1bba0e14c71d1e1f46 # main with: token: ${{ secrets.GITHUB_TOKEN }} - - name: Run the tests (against image) + # - name: Start tmate session + # uses: mxschmitt/action-tmate@v3 + + - name: Run the tests uses: nick-fields/retry@7152eba30c6575329ac0576536151aca5a72780e # v3.0.0 with: timeout_minutes: 60