From b6fb8df4e24673141dfdc3330bd9246e0527e704 Mon Sep 17 00:00:00 2001 From: Fabio Burzigotti Date: Sun, 20 Oct 2024 10:52:45 +0200 Subject: [PATCH] [issues-k8s-support] - Add Kubernetes integration tests GitHub workflow --- .github/workflows/kubernetes-e2e.yml | 89 ++++++++++++++++++++++++++++ testsuite/integration-tests/pom.xml | 11 +++- 2 files changed, 99 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/kubernetes-e2e.yml diff --git a/.github/workflows/kubernetes-e2e.yml b/.github/workflows/kubernetes-e2e.yml new file mode 100644 index 00000000..58c4cd6c --- /dev/null +++ b/.github/workflows/kubernetes-e2e.yml @@ -0,0 +1,89 @@ +name: Kubernetes E2E Tests + +on: + workflow_dispatch: + push: + branches: + - main + pull_request: + paths-ignore: + - 'docs/**' + - 'ide-config/**' + - '**.md' + +concurrency: + # Only run once for latest commit per ref and cancel other (previous) runs. + group: ci-e2e-intersmash-${{ github.ref }} + cancel-in-progress: true + +jobs: + minikube: + name: K8S + runs-on: ubuntu-latest + if: github.repository == 'Intersmash/intersmash' + strategy: + fail-fast: false + matrix: + kubernetes: [v1.31.0, v1.30.0] + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Setup Minikube + uses: manusa/actions-setup-minikube@v2.13.0 + with: + driver: docker + container runtime: containerd + minikube version: 'v1.32.0' + kubernetes version: ${{ matrix.kubernetes }} + github token: ${{ secrets.GITHUB_TOKEN }} + start args: "--memory='4gb' --cpus='2'" + - name: Enable minikube registry + run: | + minikube addons enable registry + kubectl port-forward --namespace kube-system service/registry 5000:80 & + - name: Cache .m2 registry + uses: actions/cache@v3 + with: + path: ~/.m2/repository + key: cache-e2e-${{ github.sha }}-${{ github.run_id }} + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + - name: Install and Run Integration Tests + run: | + set -x + # cat our ~/.kube/config contents + # + cat ~/.kube/config + # + # operator-sdk must be installed manually, see + # + export ARCH=$(case $(uname -m) in x86_64) echo -n amd64 ;; aarch64) echo -n arm64 ;; *) echo -n $(uname -m) ;; esac) + export OS=$(uname | awk '{print tolower($0)}') + ### TODO - uncomment when 0.30,0 is out see "Notice" here: https://github.com/operator-framework/operator-lifecycle-manager/releases/tag/v0.29.0 + ### export OPERATOR_SDK_DL_URL=https://github.com/operator-framework/operator-sdk/releases/download/v1.36.1 + ### curl -LO ${OPERATOR_SDK_DL_URL}/operator-sdk_${OS}_${ARCH} + ### chmod +x operator-sdk_${OS}_${ARCH} && sudo mv operator-sdk_${OS}_${ARCH} /usr/local/bin/operator-sdk + ### operator-sdk olm install + curl -sL https://github.com/operator-framework/operator-lifecycle-manager/releases/download/v0.28.0/install.sh | bash -s v0.28.0 + # + # set the Kubernetes hostname that will resolve to the minikube IP + # + export KUBERNETES_HOSTNAME=host.minikube.internal + # + # run... + # + mkdir local-repo + # pre-fetch dependencies + mvn clean install --batch-mode -Dmaven.repo.local=./local-repo -DskipTests + # run K8s integration tests + mvn test --batch-mode -Dmaven.repo.local=./local-repo -pl testsuite/integration-tests -Pts.k8s \ + -Dintersmash.kubernetes.url=https://$(minikube ip):8443 \ + -Dintersmash.kubernetes.route_domain=$(minikube ip) \ + -Dintersmash.kubernetes.hostname=$KUBERNETES_HOSTNAME \ + -Dintersmash.kubernetes.namespace=test-k8s-1 \ + -Dintersmash.olm.operators.catalog_source=community-operators \ + -Dintersmash.olm.operators.namespace=olm \ + -Dintersmash.hyperfoil.operators.catalog_source=operatorhubio-catalog diff --git a/testsuite/integration-tests/pom.xml b/testsuite/integration-tests/pom.xml index 12abf89e..fbd464a0 100644 --- a/testsuite/integration-tests/pom.xml +++ b/testsuite/integration-tests/pom.xml @@ -24,6 +24,8 @@ ts.not-for-community ts.no-test-excluded.default + + ts.openshift @@ -94,7 +96,7 @@ org.apache.maven.plugins maven-surefire-plugin - ${intersmash.test.excludedGroups.by.execution-profile},${intersmash.test.excludedGroups.by.wildfly-target-distribution} + ${intersmash.test.excludedGroups.by.execution-profile},${intersmash.test.excludedGroups.by.wildfly-target-distribution},${intersmash.test.excludedGroups.by.target-platform} @@ -132,6 +134,13 @@ ts.wildfly.requires-bootable-jar + + ts.openshift + + + ts.k8s + +