Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add CRC testing against Ubuntu #2166

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
274 changes: 274 additions & 0 deletions .github/workflows/qe-crc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,274 @@
# 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:
build-and-store:
# build and store the image
runs-on: ubuntu-22.04
strategy:
fail-fast: false
steps:
- name: Check out code
uses: actions/checkout@v4
with:
ref: ${{ github.sha }}

- name: Setup docker buildx
uses: docker/setup-buildx-action@d70bba72b1f3fd22344832f00baa16ece964efeb # v3.3.0

- name: Build temporary image tag for this PR
uses: docker/build-push-action@ca052bb54ab0790a636c9b5f226502c73d547a25 # v5.4.0
with:
context: .
file: ./Dockerfile
tags: quay.io/testnetworkfunction/cnf-certification-test:localtest
outputs: type=docker,dest=/tmp/testimage.tar

- name: Store image as artifact
uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3
with:
name: testimage
path: /tmp/testimage.tar


smoke-tests:
name: CRC QE Tests
runs-on: ubuntu-22.04
needs: build-and-store
if: needs.build-and-store.result == 'success'
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: localtest

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: Set up QEMU
# uses: docker/setup-qemu-action@68827325e0b33c7199eb31dd4e31fbe9023e06e3 # v3.0.0

- 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@v3
with:
timeout_minutes: 5
max_attempts: 3
command: crc config set memory 10752

- name: Set Telemetry
uses: nick-fields/retry@v3
with:
timeout_minutes: 5
max_attempts: 3
command: crc config set consent-telemetry no

- name: Set Network-Mode User
uses: nick-fields/retry@v3
with:
timeout_minutes: 5
max_attempts: 3
command: crc config set network-mode user

- name: Set Disk Size
uses: nick-fields/retry@v3
with:
timeout_minutes: 5
max_attempts: 3
command: crc config set disk-size 60

- name: Run CRC Setup
uses: nick-fields/retry@v3
with:
timeout_minutes: 15
max_attempts: 3
command: sudo -su $USER crc setup

- name: Run CRC Start
uses: nick-fields/retry@v3
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: 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

# - name: Build the local image
# run: make build-image-local

- name: Download image from artifact
uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e # v4.1.7
with:
name: testimage
path: /tmp

- name: Load image into docker
run: docker load --input /tmp/testimage.tar

# - name: Run tmate session
# uses: mxschmitt/action-tmate@v3

- name: Run the tests (against image)
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} TNF_IMAGE=${{env.TEST_TNF_IMAGE_NAME}} TNF_IMAGE_TAG=${{env.TEST_TNF_IMAGE_TAG}} JOB_ID=${{github.run_id}} DISABLE_INTRUSIVE_TESTS=true ENABLE_PARALLEL=false 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
13 changes: 8 additions & 5 deletions .github/workflows/qe-hosted.yml
Original file line number Diff line number Diff line change
@@ -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:
Expand Down Expand Up @@ -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'
Expand Down Expand Up @@ -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
Expand Down
Loading