cert-manager/Makefile
James Munnelly 0ecb17bb6d Add ACME certificate http01 e2e test
Wait for nginx-ingress-controller rc to be installed

Enable minikube ingress addon

Print cert-manager logs after acme certificate test. Properly catch errors.

Move creation of cert-manager pod in e2e tests into framework

Update testingACMEURL

Fix panic

Add test to ensure ACME request fails for invalid domain

Adjust acme certificate failure test

Fix AfterEach steps for acme e2e tests

Don't error on cleanup
2017-10-16 12:58:21 +01:00

154 lines
4.4 KiB
Makefile

ACCOUNT=jetstackexperimental
APP_NAME=cert-manager
REGISTRY=docker.io
PACKAGE_NAME=github.com/jetstack-experimental/cert-manager
GO_VERSION=1.8
GOOS := linux
GOARCH := amd64
DOCKER_IMAGE=${REGISTRY}/${ACCOUNT}/${APP_NAME}
BUILD_DIR=_build
TEST_DIR=_test
CONTAINER_DIR=/go/src/${PACKAGE_NAME}
BUILD_TAG := build
IMAGE_TAGS := canary
PACKAGES=$(shell find . -name "*_test.go" | xargs -n1 dirname | grep -v 'vendor/' | sort -u | xargs -n1 printf "%s.test_pkg ")
BINDIR ?= bin
HACK_DIR ?= hack
TYPES_FILES = $(shell find pkg/apis -name types.go)
E2E_NGINX_CERTIFICATE_DOMAIN=
.PHONY: version
ifeq ($(APP_VERSION),)
APP_VERSION := canary
endif
all: verify test build
.get_deps:
@echo "Grabbing dependencies..."
@go get -d -u k8s.io/kubernetes/ || true
@go get -d github.com/kubernetes/repo-infra || true
# Once k8s.io/kube-gen is live, we should be able to remove this dependency
# on k8s.io/kubernetes. https://github.com/kubernetes/kubernetes/pull/49114
cd ${GOPATH}/src/k8s.io/kubernetes; git checkout e0225de330e032215da37c288dbd9539806fc211;
@touch $@
.hack_verify: .generate_exes
@echo Running repo-infra verify scripts
@echo Running href checker:
@${HACK_DIR}/verify-links.sh
@echo Running errexit checker:
@${HACK_DIR}/verify-errexit.sh
@echo Running generated client checker:
@${HACK_DIR}/verify-client-gen.sh
depend:
rm -rf $(TEST_DIR)/
rm -rf ${BUILD_DIR}/
mkdir $(TEST_DIR)/
mkdir $(BUILD_DIR)/
verify: go_fmt .hack_verify
test: go_test
version:
$(eval GIT_STATE := $(shell if test -z "`git status --porcelain 2> /dev/null`"; then echo "clean"; else echo "dirty"; fi))
$(eval GIT_COMMIT := $(shell git rev-parse HEAD))
build_%: depend version
CGO_ENABLED=0 GOOS=$(GOOS) GOARCH=$(GOARCH) go build \
-a -tags netgo \
-o ${BUILD_DIR}/${APP_NAME}-$*-$(GOOS)-$(GOARCH) \
-ldflags "-X github.com/jetstack-experimental/cert-manager/pkg/util.AppGitState=${GIT_STATE} -X github.com/jetstack-experimental/cert-manager/pkg/util.AppGitCommit=${GIT_COMMIT} -X github.com/jetstack-experimental/cert-manager/pkg/util.AppVersion=${APP_VERSION}" \
./cmd/$*
go_fmt:
$(eval FMT_OUTPUT := $(shell go fmt ./pkg/... ./cmd/... ./test/... | wc -l))
@if [ "$(FMT_OUTPUT)" != "0" ]; then echo "Please run go fmt"; exit 1; fi
go_test:
go test -v $$(go list ./... | grep -v '/vendor/' | grep -v '/test/e2e' )
e2e_test:
go test -o e2e-tests -c ./test/e2e
KUBECONFIG=$$HOME/.kube/config CERTMANAGERCONFIG=$$HOME/.kube/config \
./e2e-tests \
-cert-manager-image-pull-policy=Never \
-cert-manager-image=$(DOCKER_IMAGE)-controller:$(BUILD_TAG) \
-acme-nginx-certificate-domain=$(E2E_NGINX_CERTIFICATE_DOMAIN)
build: build_controller build_acmesolver
docker: docker_all
docker_%:
# create a container
$(eval CONTAINER_ID := $(shell docker create \
-i \
-w $(CONTAINER_DIR) \
golang:${GO_VERSION} \
/bin/bash -c "tar xf - && make $*" \
))
# run build inside container
tar cf - . | docker start -a -i $(CONTAINER_ID)
# copy artifacts over
rm -rf $(BUILD_DIR)/ $(TEST_DIR)/
docker cp $(CONTAINER_ID):$(CONTAINER_DIR)/$(BUILD_DIR)/ .
docker cp $(CONTAINER_ID):$(CONTAINER_DIR)/$(TEST_DIR)/ .
# remove container
docker rm $(CONTAINER_ID)
image_%: version
docker build -f "./Dockerfile.$*" --build-arg VCS_REF=$(GIT_COMMIT) -t "$(DOCKER_IMAGE)-$*:$(BUILD_TAG)" .
image: image_controller image_acmesolver
push_%: image_%
set -e; \
for tag in $(IMAGE_TAGS); do \
docker tag "$(DOCKER_IMAGE)-$*:$(BUILD_TAG)" "$(DOCKER_IMAGE)-$*:$${tag}" ; \
docker push "$(DOCKER_IMAGE)-$*:$${tag}"; \
done
push: push_controller push_acmesolver
release:
ifndef VERSION
$(error VERSION is not set)
endif
@echo "Preparing release of version $(VERSION)"
echo $(VERSION) > VERSION
find examples -name '*.yaml' -type f -exec sed -i 's/kube-lego:[0-9\.]*$$/kube-lego:$(VERSION)/g' {} \;
# This section contains the code generation stuff
#################################################
.generate_exes: .get_deps \
$(BINDIR)/defaulter-gen \
$(BINDIR)/deepcopy-gen \
$(BINDIR)/conversion-gen \
$(BINDIR)/client-gen \
$(BINDIR)/lister-gen \
$(BINDIR)/informer-gen
touch $@
$(BINDIR)/%:
go build -o $@ k8s.io/kubernetes/staging/src/k8s.io/code-generator/cmd/$*
# Regenerate all files if the gen exes changed or any "types.go" files changed
.generate_files: .generate_exes $(TYPES_FILES)
# generate all pkg/client contents
$(HACK_DIR)/update-client-gen.sh