diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 6e31b432..38d33ad7 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -65,3 +65,49 @@ jobs: - name: e2e (Enterprise) run: sudo KUBERNETES_SUPPORTED_VERSION=${{ matrix.k8s-version }} make e2e + e2e-minishift: + name: E2E Testing (Minishift) + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + fetch-depth: 0 + + - uses: actions/setup-go@7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5 # v6.2.0 + with: + go-version-file: 'go.mod' + + - uses: azure/setup-helm@1a275c3b69536ee54be43f2070a358922e12c8d4 # v4 + + - name: Enable KVM + 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 adduser $USER kvm + + - name: Install Minishift + env: + MINISHIFT_VERSION: 1.34.3 + run: | + curl -Lo minishift.tgz \ + https://github.com/minishift/minishift/releases/download/v${MINISHIFT_VERSION}/minishift-${MINISHIFT_VERSION}-linux-amd64.tgz + tar -xzf minishift.tgz + sudo mv minishift-${MINISHIFT_VERSION}-linux-amd64/minishift /usr/local/bin/minishift + minishift version + + - name: Start Minishift + run: | + minishift start --memory 8192 --cpus 4 --disk-size 40g + minishift status + + - name: Configure Docker and kubectl for Minishift + run: | + eval $(minishift docker-env) + eval $(minishift oc-env) + # Export Docker daemon variables so subsequent steps can use them + minishift docker-env | grep -v '^#' | grep '=' >> "$GITHUB_ENV" + echo "$(minishift oc-env | grep PATH | sed 's/export PATH=//' | tr -d '"' | cut -d: -f1)" >> "$GITHUB_PATH" + + - name: e2e on Minishift + run: make e2e-minishift diff --git a/Makefile b/Makefile index 53ea036c..220f9105 100644 --- a/Makefile +++ b/Makefile @@ -351,6 +351,33 @@ golint-fix: golangci-lint e2e: ginkgo $(MAKE) e2e-build && $(MAKE) e2e-exec && $(MAKE) e2e-destroy +# Running e2e tests against an existing Minishift/OpenShift cluster. +# The Docker environment must point to Minishift's daemon before running: +# eval $(minishift docker-env) +# eval $(minishift oc-env) +.PHONY: e2e-minishift +e2e-minishift: ginkgo + $(MAKE) e2e-install-minishift && $(MAKE) e2e-exec + +.PHONY: e2e-install-minishift +e2e-install-minishift: helm-controller-version ko-build-all + $(HELM) upgrade \ + --dependency-update \ + --debug \ + --install \ + --namespace capsule-system \ + --create-namespace \ + --set 'replicaCount=2'\ + --set 'manager.image.pullPolicy=Never' \ + --set 'manager.resources=null'\ + --set "manager.image.tag=$(VERSION)" \ + --set 'manager.livenessProbe.failureThreshold=10' \ + --set 'webhooks.hooks.nodes.enabled=true' \ + --set "webhooks.exclusive=true"\ + --set "manager.options.logLevel=debug"\ + capsule \ + ./charts/capsule + e2e-build: kind $(MAKE) dev-build $(MAKE) e2e-install