131 lines
3.5 KiB
Makefile
131 lines
3.5 KiB
Makefile
ACCOUNT=jetstack
|
|
APP_NAME=cert-manager
|
|
REGISTRY=quay.io
|
|
|
|
PACKAGE_NAME=github.com/jetstack/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
|
|
|
|
.hack_verify:
|
|
@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/cert-manager/pkg/util.AppGitState=${GIT_STATE} -X github.com/jetstack/cert-manager/pkg/util.AppGitCommit=${GIT_COMMIT} -X github.com/jetstack/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' | grep -v '/pkg/client' | grep -v '/third_party' )
|
|
|
|
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' {} \;
|
|
|
|
# Regenerate all files if the gen exes changed or any "types.go" files changed
|
|
.generate_files:
|
|
# generate all pkg/client contents
|
|
$(HACK_DIR)/update-client-gen.sh
|