Add CRC testing against Ubuntu #52
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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: CRC QE Tests | |
runs-on: ubuntu-22.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
# suite: [accesscontrol] | |
suite: [accesscontrol, affiliatedcertification, manageability, networking, lifecycle, performance, platformalteration, observability, operator] | |
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 | |
TEST_TNF_IMAGE_NAME: quay.io/testnetworkfunction/cnf-certification-test | |
TEST_TNF_IMAGE_TAG: unstable | |
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 10000 | |
- 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: Set Disk Size | |
uses: nick-fields/retry@v2 | |
with: | |
timeout_minutes: 5 | |
max_attempts: 3 | |
command: crc config set disk-size 60 | |
- 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 | |
ref: set_serial | |
# - name: Run tmate session | |
# uses: mxschmitt/action-tmate@v3 | |
- name: Build the binary | |
run: make build-certsuite-tool | |
- name: Run the tests | |
uses: nick-fields/retry@7152eba30c6575329ac0576536151aca5a72780e # v3.0.0 | |
with: | |
timeout_minutes: 60 | |
max_attempts: 3 | |
command: cd ${GITHUB_WORKSPACE}/cnfcert-tests-verification; FEATURES=${{matrix.suite}} TNF_REPO_PATH=${GITHUB_WORKSPACE} USE_BINARY=true DISABLE_INTRUSIVE_TESTS=true ENABLE_PARALLEL=true ENABLE_FLAKY_RETRY=true make test-features | |
# FEATURES=operator FORCE_DOWNLOAD_UNSTABLE=true DISABLE_INTRUSIVE_TESTS=true TNF_REPO_PATH=~/cnf-certification-test KUBECONFIG=~/.kube/config ENABLE_PARALLEL=true TNF_IMAGE_TAG=unstable ENABLE_FLAKY_RETRY=true DEBUG_TNF=true TNF_CONFIG_DIR=/home/labuser2/tnf_config TNF_REPORT_DIR=/home/labuser2/tnf_report make test-features |