QE Testing #311
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
name: QE Testing | |
on: | |
# pull_request: | |
# branches: [ main ] | |
workflow_dispatch: | |
# Schedule a daily cron at midnight UTC | |
schedule: | |
- cron: '0 0 * * *' | |
env: | |
QE_REPO: test-network-function/cnfcert-tests-verification | |
jobs: | |
qe-testing: | |
runs-on: qe-runner | |
strategy: | |
fail-fast: false | |
matrix: | |
suite: [accesscontrol, affiliatedcertification, manageability, networking, lifecycle, performance, platformalteration, observability, operator] | |
env: | |
SHELL: /bin/bash | |
KUBECONFIG: '/home/tnf/.kube/config' | |
PFLT_DOCKERCONFIG: '/home/tnf/.docker/config' | |
TEST_TNF_IMAGE_NAME: quay.io/testnetworkfunction/cnf-certification-test | |
TEST_TNF_IMAGE_TAG: localtest | |
DOCKER_CONFIG_DIR: '/home/tnf/.docker' | |
steps: | |
- name: Check out code | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.sha }} | |
- name: Run initial setup | |
uses: ./.github/actions/setup | |
- name: Build the test image | |
run: make build-image-local # quay.io/testnetworkfunction/cnf-certification-test:localtest | |
- name: Compare the time of cluster creation to the current time | |
shell: bash | |
run: | | |
# Check if the cluster is live | |
set -e | |
EXIT_CODE=0 | |
kubectl get nodes || EXIT_CODE=$? | |
if [[ $EXIT_CODE -ne 0 ]]; then | |
echo "Cluster is not live. Exiting." | |
echo "Recreate=true" >> $GITHUB_ENV | |
else | |
echo "Cluster is live. Continuing." | |
fi | |
- name: Check out `cnf-certification-test-partner` | |
uses: actions/checkout@v4 | |
with: | |
repository: test-network-function/cnf-certification-test-partner | |
path: cnf-certification-test-partner | |
if: ${{ env.Recreate == 'true' }} | |
- name: Bootstrap the Kind and OC/Kubectl binaries for the `local-test-infra` | |
run: make bootstrap-cluster | |
working-directory: cnf-certification-test-partner | |
if: ${{ env.Recreate == 'true' }} | |
- name: Preemptively delete the Kind cluster | |
uses: nick-fields/retry@v2 | |
with: | |
timeout_minutes: 10 | |
max_attempts: 3 | |
command: kind delete cluster | |
if: ${{ env.Recreate == 'true' }} | |
- name: Prune docker resources | |
uses: nick-fields/retry@v2 | |
with: | |
timeout_minutes: 10 | |
max_attempts: 3 | |
command: docker system prune --volumes -f | |
if: ${{ env.Recreate == 'true' }} | |
- name: Create `local-test-infra` OpenShift resources | |
run: make rebuild-cluster | |
working-directory: cnf-certification-test-partner | |
if: ${{ env.Recreate == 'true' }} | |
- name: Install partner resources | |
run: make install-for-qe | |
working-directory: cnf-certification-test-partner | |
if: ${{ env.Recreate == 'true' }} | |
- name: Show pods | |
run: oc get pods -A | |
- name: Clone the QE repository | |
uses: actions/checkout@v4 | |
with: | |
repository: ${{ env.QE_REPO }} | |
path: cnfcert-tests-verification | |
- name: Preemptively potential QE namespaces | |
run: ./scripts/delete-namespaces.sh | |
working-directory: cnfcert-tests-verification | |
# Setup is complete. Time to run the QE tests. | |
- name: Run the tests | |
run: FEATURES=${{matrix.suite}} TNF_REPO_PATH=${GITHUB_WORKSPACE} TNF_IMAGE=${{env.TEST_TNF_IMAGE_NAME}} TNF_IMAGE_TAG=${{env.TEST_TNF_IMAGE_TAG}} DISABLE_INTRUSIVE_TESTS=true ENABLE_PARALLEL=true ENABLE_FLAKY_RETRY=true make test-features | |
working-directory: cnfcert-tests-verification | |
- name: (if on main and upstream) Send chat msg to dev team if failed to run QE tests | |
if: ${{ failure() && github.ref == 'refs/heads/main' && github.repository_owner == 'test-network-function' }} | |
env: | |
COMMIT_SHA: ${{ github.sha }} | |
JOB_RUN_ID: ${{ github.run_id }} | |
JOB_RUN_ATTEMPT: ${{ github.run_attempt }} | |
GITHUB_REPO: https://github.com/test-network-function/cnf-certification-test | |
run: | | |
curl -X POST --data "{ | |
\"text\": \"🚨⚠️ Failed to run Kind-based non-intrusive QE tests from commit \<$GITHUB_REPO/commit/$COMMIT_SHA|$COMMIT_SHA\>, job ID \<$GITHUB_REPO/actions/runs/$JOB_RUN_ID/attempts/$JOB_RUN_ATTEMPT|$JOB_RUN_ID\> \" | |
}" -H 'Content-type: application/json; charset=UTF-8' ${{ secrets.QE_NIGHTLY_WEBHOOK }} |