Add e2e tests for the Helm Chart (#334)

This commit is contained in:
Tomasz Sęk 2020-04-17 14:14:56 +02:00 committed by GitHub
parent cab7d0900c
commit 185f0533e4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 70 additions and 1 deletions

View File

@ -51,6 +51,13 @@ jobs:
- sudo apt-get install socat
- travis_wait 10 make travis-prepare
- travis_wait 45 make build e2e
- stage: e2e
name: "Jenkins Operator Helm Chart - e2e"
script:
- sudo apt-get update
- sudo apt-get install socat
- travis_wait 10 make travis-prepare
- travis_wait 45 make e2e BUILDTAGS=Helm E2E_TEST_SELECTOR='^.*Helm.*$'
cache:
directories:

View File

@ -487,6 +487,7 @@ else
curl -Lo kubectl https://storage.googleapis.com/kubernetes-release/release/$(MINIKUBE_KUBERNETES_VERSION)/bin/linux/amd64/kubectl && chmod +x kubectl && sudo mv kubectl /usr/local/bin/
curl -Lo minikube https://storage.googleapis.com/minikube/releases/v$(MINIKUBE_VERSION)/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/
curl -Lo operator-sdk https://github.com/operator-framework/operator-sdk/releases/download/v$(OPERATOR_SDK_VERSION)/operator-sdk-v$(OPERATOR_SDK_VERSION)-x86_64-linux-gnu && chmod +x operator-sdk && sudo mv operator-sdk /usr/local/bin/
curl -Lo helm.tar.gz https://get.helm.sh/helm-v$(HELM_VERSION)-linux-amd64.tar.gz && tar xzfv helm.tar.gz && sudo mv linux-amd64/helm /usr/local/bin/
mkdir -p $(HOME)/.kube $(HOME)/.minikube
touch $(KUBECONFIG)
sudo minikube start --vm-driver=none --kubernetes-version=$(MINIKUBE_KUBERNETES_VERSION)

View File

@ -9,4 +9,5 @@ NAMESPACE=default
API_VERSION=v1alpha2
ALL_IN_ONE_DEPLOY_FILE_PREFIX=all-in-one
GEN_CRD_API=gen-crd-api-reference-docs
IMAGE_PULL_MODE=local
IMAGE_PULL_MODE=local
HELM_VERSION=3.1.2

60
test/e2e/helm_test.go Normal file
View File

@ -0,0 +1,60 @@
// +build Helm
package e2e
import (
"fmt"
"os/exec"
"testing"
"github.com/jenkinsci/kubernetes-operator/pkg/apis"
"github.com/jenkinsci/kubernetes-operator/pkg/apis/jenkins/v1alpha2"
framework "github.com/operator-framework/operator-sdk/pkg/test"
"github.com/stretchr/testify/require"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
func TestLintHelmChart(t *testing.T) {
t.Parallel()
cmd := exec.Command("helm", "lint", "./chart/jenkins-operator")
output, err := cmd.CombinedOutput()
require.NoError(t, err, string(output))
}
func TestDeployHelmChart(t *testing.T) {
// Given
t.Parallel()
ctx := framework.NewTestCtx(t)
defer ctx.Cleanup()
namespace, err := ctx.GetNamespace()
require.NoError(t, err)
jenkinsServiceList := &v1alpha2.JenkinsList{
TypeMeta: metav1.TypeMeta{
Kind: v1alpha2.Kind,
APIVersion: v1alpha2.SchemeGroupVersion.String(),
},
}
err = framework.AddToFrameworkScheme(apis.AddToScheme, jenkinsServiceList)
require.NoError(t, err)
jenkins := &v1alpha2.Jenkins{
TypeMeta: v1alpha2.JenkinsTypeMeta(),
ObjectMeta: metav1.ObjectMeta{
Name: "jenkins",
Namespace: namespace,
},
}
cmd := exec.Command("helm", "install", "helm", "./chart/jenkins-operator", "--namespace", namespace, "--debug",
"--set-string", fmt.Sprintf("jenkins.namespace=%s", namespace))
output, err := cmd.CombinedOutput()
require.NoError(t, err, string(output))
// Then
waitForJenkinsBaseConfigurationToComplete(t, jenkins)
waitForJenkinsUserConfigurationToComplete(t, jenkins)
}