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 local testing #966

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
197 changes: 197 additions & 0 deletions .github/workflows/qe-main.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,197 @@
# 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:
REGISTRY: quay.io
REGISTRY_LOCAL: localhost
TNF_IMAGE_NAME: testnetworkfunction/cnf-certification-test
TNF_IMAGE_TAG: unstable
OCT_IMAGE_NAME: testnetworkfunction/oct
OCT_IMAGE_TAG: latest
TNF_CONTAINER_CLIENT: docker
TNF_NON_INTRUSIVE_ONLY: false
TNF_ALLOW_PREFLIGHT_INSECURE: false
TNF_DISABLE_CONFIG_AUTODISCOVER: false
TNF_CONFIG_DIR: /tmp/tnf/config
TNF_OUTPUT_DIR: /tmp/tnf/output
TNF_SRC_URL: 'https://github.com/${{ github.repository }}'
TESTING_CMD_PARAMS: '-n host -i ${REGISTRY_LOCAL}/${TNF_IMAGE_NAME}:${TNF_IMAGE_TAG} -t ${TNF_CONFIG_DIR} -o ${TNF_OUTPUT_DIR}'
TNF_SMOKE_TESTS_LOG_LEVEL: trace
ON_DEMAND_DEBUG_PODS: false
TERM: xterm-color

jobs:
smoke-tests:
name: Run Smoke Tests Against OpenShift Local
runs-on: macos-latest
env:
SHELL: /bin/bash
KUBECONFIG: '/Users/runner/.crc/machines/crc/kubeconfig'
PFLT_DOCKERCONFIG: '/Users/runner/.docker/config'
OCP_CLUSTER_OVERRIDE: 'true'

steps:
- name: Write temporary docker file
run: |
mkdir -p /Users/runner/.docker
touch ${PFLT_DOCKERCONFIG}
echo '{ "auths": {} }' >> ${PFLT_DOCKERCONFIG}

- name: Set up Go 1.20.2
uses: actions/setup-go@v4
with:
go-version: 1.20.2

- name: Install brew binaries
run: |
brew update
brew install coreutils
brew install operator-sdk --ignore-dependencies
brew install bash
brew install openshift-cli
brew install kubernetes-cli
brew install gnu-sed
brew install watch
brew install helm

- name: Adjust PATH for gnu-sed
run: |
echo "/usr/local/opt/gnu-sed/libexec/gnubin" >> $GITHUB_PATH

- name: Disable default go problem matcher
run: echo "::remove-matcher owner=go::"

- name: Check out code
uses: actions/checkout@v3
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: Curl the CRC binary
run: |
wget -O crc-macos-installer.pkg https://storage.googleapis.com/crc-bundle-github-ci/crc-microshift/crc-macos-installer.pkg

- name: Install CRC
run: |
sudo installer -pkg crc-macos-installer.pkg -target /

- name: Set Microshift Preset
uses: nick-fields/retry@v2
with:
timeout_minutes: 5
max_attempts: 3
command: crc config set preset microshift

- name: Set Memory
uses: nick-fields/retry@v2
with:
timeout_minutes: 5
max_attempts: 3
command: crc config set memory 14000

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

- name: Run CRC Setup
uses: nick-fields/retry@v2
with:
timeout_minutes: 15
max_attempts: 3
command: crc setup

- name: Run CRC Start
uses: nick-fields/retry@v2
with:
timeout_minutes: 15
max_attempts: 3
command: crc start --pull-secret-file temp-ps.json --log-level debug
on_retry_command: crc delete -f

- name: Set the adm policy
run: |
oc adm policy add-scc-to-user privileged user

- name: Run oc version
run: |
eval $(crc oc-env)
oc version

- name: Check out `cnf-certification-test-partner`
uses: actions/checkout@v3
with:
repository: test-network-function/cnf-certification-test-partner
path: cnf-certification-test-partner
ref: ocp_support

- name: Create `local-test-infra` OpenShift resources
uses: ./cnf-certification-test-partner/.github/actions/create-local-ocp-test-infra-resources
with:
working_directory: cnf-certification-test-partner

# Update the CNF containers, helm charts and operators DB

# - name: Update the CNF DB
# run: |
# docker pull ${REGISTRY}/${OCT_IMAGE_NAME}:${OCT_IMAGE_TAG}
# mkdir -p ${GITHUB_WORKSPACE}/offline-db
# docker run -v ${GITHUB_WORKSPACE}/offline-db:/tmp/dump:Z --env OCT_DUMP_ONLY=true ${REGISTRY}/${OCT_IMAGE_NAME}:${OCT_IMAGE_TAG}
# shell: bash

- name: Install ginkgo
run: make install-tools

- name: Execute `make build`
run: make build

# Perform smoke tests.
- name: 'Test: Run test suites'
run: TNF_LOG_LEVEL=${TNF_SMOKE_TESTS_LOG_LEVEL} ./run-cnf-suites.sh -l "common"

- name: Upload smoke test results as an artifact
uses: actions/upload-artifact@v3
if: always()
with:
name: smoke-tests
path: |
cnf-certification-test/*.xml
cnf-certification-test/claim.json
cnf-certification-test/claimjson.js
cnf-certification-test/results.html
cnf-certification-test/tnf-execution.log

- name: Upload container test results as an artifact
uses: actions/upload-artifact@v3
if: always()
with:
name: smoke-tests-container
path: |
${{ env.TNF_OUTPUT_DIR }}/*.xml
${{ env.TNF_OUTPUT_DIR }}/claim.json
${{ env.TNF_OUTPUT_DIR }}/claimjson.js
${{ env.TNF_OUTPUT_DIR }}/results.html
${{ env.TNF_OUTPUT_DIR }}/tnf-execution.log
32 changes: 15 additions & 17 deletions internal/clientsholder/clientsholder.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,8 @@ import (
apiextv1c "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
apiextv1 "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/client-go/discovery"
"k8s.io/client-go/dynamic"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/restmapper"
"k8s.io/client-go/scale"

cncfNetworkAttachmentv1 "github.com/k8snetworkplumbingwg/network-attachment-definition-client/pkg/client/clientset/versioned/typed/k8s.cni.cncf.io/v1"
Expand Down Expand Up @@ -229,21 +227,21 @@ func newClientsHolder(filenames ...string) (*ClientsHolder, error) { //nolint:fu
return nil, fmt.Errorf("cannot instantiate k8s networking client: %s", err)
}

discoveryClient, err := discovery.NewDiscoveryClientForConfig(clientsHolder.RestConfig)
if err != nil {
return nil, fmt.Errorf("cannot instantiate discoveryClient: %s", err)
}
resolver := scale.NewDiscoveryScaleKindResolver(discoveryClient)
gr, err := restmapper.GetAPIGroupResources(clientsHolder.K8sClient.Discovery())
if err != nil {
return nil, fmt.Errorf("cannot instantiate GetAPIGroupResources: %s", err)
}

mapper := restmapper.NewDiscoveryRESTMapper(gr)
clientsHolder.ScalingClient, err = scale.NewForConfig(clientsHolder.RestConfig, mapper, dynamic.LegacyAPIPathResolverFunc, resolver)
if err != nil {
return nil, fmt.Errorf("cannot instantiate ScalesGetter: %s", err)
}
// discoveryClient, err := discovery.NewDiscoveryClientForConfig(clientsHolder.RestConfig)
// if err != nil {
// return nil, fmt.Errorf("cannot instantiate discoveryClient: %s", err)
// }
// resolver := scale.NewDiscoveryScaleKindResolver(discoveryClient)
// gr, err := restmapper.GetAPIGroupResources(clientsHolder.K8sClient.Discovery())
// if err != nil {
// return nil, fmt.Errorf("cannot instantiate GetAPIGroupResources: %s", err)
// }

// mapper := restmapper.NewDiscoveryRESTMapper(gr)
// clientsHolder.ScalingClient, err = scale.NewForConfig(clientsHolder.RestConfig, mapper, dynamic.LegacyAPIPathResolverFunc, resolver)
// if err != nil {
// return nil, fmt.Errorf("cannot instantiate ScalesGetter: %s", err)
// }

clientsHolder.CNCFNetworkingClient, err = cncfNetworkAttachmentv1.NewForConfig(clientsHolder.RestConfig)
if err != nil {
Expand Down