Refactor e2e setup into scripts. Speed up e2e tests.
Build images whilst services are starting Exit on setup boulder errors Install nsenter Don't build nsenter Turn up e2e pod verbosity Set pullPolicy IfNotPresent on HTTP challenge solver
This commit is contained in:
parent
0ecb17bb6d
commit
1f278d659b
23
.travis.yml
23
.travis.yml
@ -7,21 +7,22 @@ jobs:
|
||||
env:
|
||||
- KUBERNETES_VERSION=v1.7.0
|
||||
before_script:
|
||||
- ./hack/test/setup-boulder.sh
|
||||
script:
|
||||
- set -e
|
||||
# Install CLI dependencies
|
||||
- curl -Lo helm.tar.gz https://storage.googleapis.com/kubernetes-helm/helm-v2.6.1-linux-amd64.tar.gz && tar xvf helm.tar.gz && sudo mv linux-amd64/helm /usr/local/bin
|
||||
- curl -Lo kubectl https://storage.googleapis.com/kubernetes-release/release/$KUBERNETES_VERSION/bin/linux/amd64/kubectl && chmod +x kubectl && sudo mv kubectl /usr/local/bin/
|
||||
- curl -Lo minikube https://storage.googleapis.com/minikube/releases/v0.21.0/minikube-linux-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/
|
||||
# Install nsenter
|
||||
- docker build -t ubuntu-nsenter ./hack/ubuntu-nsenter
|
||||
- docker run -v /usr/local/bin:/hostbin ubuntu-nsenter cp /nsenter /hostbin/nsenter
|
||||
# Create a cluster. We do this as root as we are using the 'docker' driver.
|
||||
- sudo -E CHANGE_MINIKUBE_NONE_USER=true minikube start --vm-driver=none --kubernetes-version="$KUBERNETES_VERSION"
|
||||
- sudo -E CHANGE_MINIKUBE_NONE_USER=true minikube addons enable ingress
|
||||
- while true; do if kubectl get nodes; then break; fi; echo "Waiting 5s for kubernetes to be ready..."; sleep 5; done
|
||||
# Setup service for nginx ingress controller. A DNS entry for *.
|
||||
- make build image
|
||||
- docker run -v /usr/local/bin:/hostbin munnerz/ubuntu-nsenter cp /nsenter /hostbin/nsenter
|
||||
script:
|
||||
# Setup e2e service dependencies
|
||||
- ./hack/test/setup-boulder.sh
|
||||
- ./hack/test/setup-minikube.sh
|
||||
# Build images while we wait for services to start
|
||||
- make build image APP_VERSION=build
|
||||
# Wait for e2e service dependencies
|
||||
- ./hack/test/wait-boulder.sh
|
||||
- ./hack/test/wait-minikube.sh
|
||||
# Setup service for nginx ingress controller. A DNS entry for *.certmanager.kubernetes.network has been setup to point to 10.0.0.15 for e2e tests
|
||||
- while true; do if kubectl get rc nginx-ingress-controller -n kube-system; then break; fi; echo "Waiting 5s for nginx-ingress-controller rc to be installed..."; sleep 5; done
|
||||
- kubectl expose -n kube-system --port 80 --target-port 80 --type ClusterIP rc nginx-ingress-controller --cluster-ip 10.0.0.15
|
||||
- make e2e_test E2E_NGINX_CERTIFICATE_DOMAIN=certmanager.kubernetes.network
|
||||
|
||||
@ -5,6 +5,7 @@ set -o nounset
|
||||
set -o pipefail
|
||||
|
||||
BOULDER_REPO="github.com/letsencrypt/boulder"
|
||||
BOULDER_URL="http://127.0.0.1:4000"
|
||||
|
||||
echo "Fetching ${BOULDER_REPO}"
|
||||
go get -d github.com/letsencrypt/boulder || true
|
||||
@ -17,11 +18,13 @@ sed -i 's/127.0.0.1:8053/10.0.0.10:53/' test/config/va.json
|
||||
sed -i 's/5002/80/' test/config/va.json
|
||||
# TODO: set ratelimits
|
||||
|
||||
docker-compose up &
|
||||
function start {
|
||||
if ! docker-compose up; then
|
||||
echo "Error running boulder"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
while ! curl http://localhost:4000/ > /dev/null 2>&1 ; do
|
||||
echo "Waiting for boulder API to be available..."
|
||||
sleep 5
|
||||
done
|
||||
start &
|
||||
|
||||
echo "Boulder API now available at http://localhost:4000/"
|
||||
echo "Started boulder process in background"
|
||||
|
||||
9
hack/test/setup-minikube.sh
Executable file
9
hack/test/setup-minikube.sh
Executable file
@ -0,0 +1,9 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -o errexit
|
||||
set -o nounset
|
||||
set -o pipefail
|
||||
|
||||
# Create a cluster. We do this as root as we are using the 'docker' driver.
|
||||
sudo -E CHANGE_MINIKUBE_NONE_USER=true minikube start --vm-driver=none --kubernetes-version="${KUBERNETES_VERSION}"
|
||||
sudo -E CHANGE_MINIKUBE_NONE_USER=true minikube addons enable ingress
|
||||
14
hack/test/wait-boulder.sh
Executable file
14
hack/test/wait-boulder.sh
Executable file
@ -0,0 +1,14 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -o errexit
|
||||
set -o nounset
|
||||
set -o pipefail
|
||||
|
||||
BOULDER_URL="http://127.0.0.1:4000"
|
||||
|
||||
while ! curl "${BOULDER_URL}" > /dev/null 2>&1 ; do
|
||||
echo "Waiting for boulder API to be available..."
|
||||
sleep 5
|
||||
done
|
||||
|
||||
echo "Boulder API now available at ${BOULDER_URL}"
|
||||
7
hack/test/wait-minikube.sh
Executable file
7
hack/test/wait-minikube.sh
Executable file
@ -0,0 +1,7 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -o errexit
|
||||
set -o nounset
|
||||
set -o pipefail
|
||||
|
||||
while true; do if kubectl get nodes; then break; fi; echo "Waiting 5s for kubernetes to be ready..."; sleep 5; done
|
||||
@ -321,7 +321,7 @@ func (s *Solver) ensurePod(crt *v1alpha1.Certificate, domain, token, key string,
|
||||
Name: "acmesolver",
|
||||
// TODO: use an image as specified as a config option
|
||||
Image: s.solverImage,
|
||||
ImagePullPolicy: corev1.PullAlways,
|
||||
ImagePullPolicy: corev1.PullIfNotPresent,
|
||||
// TODO: replace this with some kind of cmdline generator
|
||||
Args: []string{
|
||||
fmt.Sprintf("--listen-port=%d", acmeSolverListenPort),
|
||||
|
||||
@ -99,7 +99,7 @@ func (f *Framework) BeforeEach() {
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
By("Creating a cert-manager pod")
|
||||
pod, err := f.KubeClientSet.CoreV1().Pods(f.Namespace.Name).Create(util.NewCertManagerControllerPod(podName, "--cluster-resource-namespace="+f.Namespace.Name))
|
||||
pod, err := f.KubeClientSet.CoreV1().Pods(f.Namespace.Name).Create(util.NewCertManagerControllerPod(podName, "--cluster-resource-namespace="+f.Namespace.Name, "--v=4"))
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
|
||||
By("Waiting for cert-manager to be running")
|
||||
|
||||
Loading…
Reference in New Issue
Block a user