mirror of
https://github.com/prometheus-operator/prometheus-operator.git
synced 2025-04-15 16:56:24 +00:00
*: Refactor build system
- Move prometheus-config-reloader to cmd/ - Refactor Makefile & contrib/kube-prometheus/Makefile - Only execute a target if its dependencies changed - Create empty target file for docker builds - Replace promu with plain static `go build`
This commit is contained in:
parent
14d647a5c6
commit
19f3150e8a
16 changed files with 259 additions and 258 deletions
8
.gitignore
vendored
8
.gitignore
vendored
|
@ -1,4 +1,5 @@
|
||||||
/operator
|
/operator
|
||||||
|
prometheus-config-reloader
|
||||||
.build/
|
.build/
|
||||||
*~
|
*~
|
||||||
*.tgz
|
*.tgz
|
||||||
|
@ -10,4 +11,9 @@ __pycache__
|
||||||
.env/
|
.env/
|
||||||
.history/
|
.history/
|
||||||
.vscode/
|
.vscode/
|
||||||
tmp
|
tmp
|
||||||
|
|
||||||
|
# These are empty target files, created on every docker build. Their sole
|
||||||
|
# purpose is to track the last target execution time to evalualte, whether the
|
||||||
|
# container needds to be rebuild
|
||||||
|
hack/*-image
|
||||||
|
|
17
.travis.yml
17
.travis.yml
|
@ -9,27 +9,32 @@ before_install:
|
||||||
- export PATH=$PATH:$HOME/.local/bin
|
- export PATH=$PATH:$HOME/.local/bin
|
||||||
jobs:
|
jobs:
|
||||||
include:
|
include:
|
||||||
|
- stage: Sanity check and tests
|
||||||
|
|
||||||
# Check generated contents are up to date and code is formatted.
|
# Check generated contents are up to date and code is formatted.
|
||||||
- stage: Sanity check and unit tests
|
script: make format generate-in-docker && git diff --exit-code
|
||||||
script: ./scripts/check-make-generate.sh
|
- script: cd contrib/kube-prometheus && make test-in-docker
|
||||||
- script: cd contrib/kube-prometheus && make test
|
|
||||||
# Build Prometheus config reloader
|
|
||||||
- script: cd contrib/prometheus-config-reloader && make build
|
|
||||||
# Build Prometheus Operator rule config map to rule file crds cli tool
|
# Build Prometheus Operator rule config map to rule file crds cli tool
|
||||||
- script: cd cmd/po-rule-migration && go install
|
- script: cd cmd/po-rule-migration && go install
|
||||||
# Ensure vendor folder matches vendor.json
|
# Ensure vendor folder matches vendor.json
|
||||||
- script: ./scripts/golang-dep-ensure.sh
|
- script: ./scripts/golang-dep-ensure.sh
|
||||||
# Unit tests
|
# Unit tests
|
||||||
- script: make test
|
- script: make test-unit
|
||||||
# E2e tests
|
# E2e tests
|
||||||
script: ./scripts/travis-e2e.sh
|
script: ./scripts/travis-e2e.sh
|
||||||
- script: ./scripts/travis-e2e-helm.sh
|
- script: ./scripts/travis-e2e-helm.sh
|
||||||
|
|
||||||
|
|
||||||
- stage: deploy
|
- stage: deploy
|
||||||
|
|
||||||
script: skip
|
script: skip
|
||||||
deploy:
|
deploy:
|
||||||
provider: script
|
provider: script
|
||||||
script: make helm-sync-s3
|
script: make helm-sync-s3
|
||||||
on:
|
on:
|
||||||
branch: master
|
branch: master
|
||||||
|
|
||||||
|
|
||||||
- stage: push-docker-image
|
- stage: push-docker-image
|
||||||
|
|
||||||
script: ./scripts/travis-push-docker-image.sh
|
script: ./scripts/travis-push-docker-image.sh
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
FROM quay.io/prometheus/busybox:latest
|
FROM quay.io/prometheus/busybox:latest
|
||||||
|
|
||||||
ADD .build/linux-amd64/operator /bin/operator
|
ADD operator /bin/operator
|
||||||
|
|
||||||
ENTRYPOINT ["/bin/operator"]
|
ENTRYPOINT ["/bin/operator"]
|
||||||
|
|
286
Makefile
286
Makefile
|
@ -1,136 +1,222 @@
|
||||||
SHELL=/bin/bash -o pipefail
|
SHELL=/bin/bash -o pipefail
|
||||||
|
|
||||||
REPO?=quay.io/coreos/prometheus-operator
|
REPO?=quay.io/coreos/prometheus-operator
|
||||||
TAG?=$(shell git rev-parse --short HEAD)
|
TAG?=$(shell git rev-parse --short HEAD)
|
||||||
NAMESPACE?=po-e2e-$(shell LC_ALL=C tr -dc a-z0-9 < /dev/urandom | head -c 13 ; echo '')
|
|
||||||
KUBECONFIG?=$(HOME)/.kube/config
|
|
||||||
|
|
||||||
PROMU := $(GOPATH)/bin/promu
|
PO_CRDGEN_BINARY:=$(GOPATH)/bin/po-crdgen
|
||||||
PREFIX ?= $(shell pwd)
|
OPENAPI_GEN_BINARY:=$(GOPATH)/bin/openapi-gen
|
||||||
ifeq ($(GOBIN),)
|
DEEPCOPY_GEN_BINARY:=$(GOPATH)/bin/deepcopy-gen
|
||||||
GOBIN :=${GOPATH}/bin
|
GOJSONTOYAML_BINARY:=$(GOPATH)/bin/gojsontoyaml
|
||||||
endif
|
JB_BINARY:=$(GOPATH)/bin/jb
|
||||||
|
PO_DOCGEN_BINARY:=$(GOPATH)/bin/po-docgen
|
||||||
|
EMBEDMD_BINARY:=$(GOPATH)/bin/embedmd
|
||||||
|
|
||||||
|
GOLANG_FILES:=$(shell find . -name \*.go -print)
|
||||||
pkgs = $(shell go list ./... | grep -v /vendor/ | grep -v /test/)
|
pkgs = $(shell go list ./... | grep -v /vendor/ | grep -v /test/)
|
||||||
|
|
||||||
all: check-license format build test
|
|
||||||
|
|
||||||
build: promu
|
.PHONY: all
|
||||||
@$(PROMU) build --prefix $(PREFIX)
|
all: format generate build test
|
||||||
|
|
||||||
short-build:
|
|
||||||
go install github.com/coreos/prometheus-operator/cmd/operator
|
|
||||||
|
|
||||||
po-crdgen:
|
############
|
||||||
go install github.com/coreos/prometheus-operator/cmd/po-crdgen
|
# Building #
|
||||||
|
############
|
||||||
|
|
||||||
crossbuild: promu
|
.PHONY: build
|
||||||
@$(PROMU) crossbuild
|
build: operator prometheus-config-reloader
|
||||||
cd contrib/prometheus-config-reloader && make build
|
|
||||||
|
|
||||||
test:
|
operator: $(GOLANG_FILES)
|
||||||
@go test $(TEST_RUN_ARGS) -short $(pkgs)
|
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o $@ cmd/operator/main.go
|
||||||
|
|
||||||
format:
|
prometheus-config-reloader:
|
||||||
|
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o $@ cmd/$@/main.go
|
||||||
|
|
||||||
|
pkg/client/monitoring/v1/zz_generated.deepcopy.go: $(DEEPCOPY_GEN_BINARY)
|
||||||
|
$(DEEPCOPY_GEN_BINARY) \
|
||||||
|
-i github.com/coreos/prometheus-operator/pkg/client/monitoring/v1 \
|
||||||
|
--go-header-file="$(GOPATH)/src/github.com/coreos/prometheus-operator/.header" \
|
||||||
|
-v=4 \
|
||||||
|
--logtostderr \
|
||||||
|
--bounding-dirs "github.com/coreos/prometheus-operator/pkg/client" \
|
||||||
|
--output-file-base zz_generated.deepcopy
|
||||||
|
|
||||||
|
pkg/client/monitoring/v1alpha1/zz_generated.deepcopy.go: $(DEEPCOPY_GEN_BINARY)
|
||||||
|
$(DEEPCOPY_GEN_BINARY) \
|
||||||
|
-i github.com/coreos/prometheus-operator/pkg/client/monitoring/v1alpha1 \
|
||||||
|
--go-header-file="$(GOPATH)/src/github.com/coreos/prometheus-operator/.header" \
|
||||||
|
-v=4 \
|
||||||
|
--logtostderr \
|
||||||
|
--bounding-dirs "github.com/coreos/prometheus-operator/pkg/client" \
|
||||||
|
--output-file-base zz_generated.deepcopy
|
||||||
|
|
||||||
|
.PHONY: image
|
||||||
|
image: hack/operator-image hack/prometheus-config-reloader-image
|
||||||
|
|
||||||
|
hack/operator-image: Dockerfile operator
|
||||||
|
# Create empty target file, for the sole purpose of recording when this target
|
||||||
|
# was last executed via the last-modification timestamp on the file. See
|
||||||
|
# https://www.gnu.org/software/make/manual/make.html#Empty-Targets
|
||||||
|
docker build -t $(REPO):$(TAG) .
|
||||||
|
touch $@
|
||||||
|
|
||||||
|
hack/prometheus-config-reloader-image: cmd/prometheus-config-reloader/Dockerfile prometheus-config-reloader
|
||||||
|
# Create empty target file, for the sole purpose of recording when this target
|
||||||
|
# was last executed via the last-modification timestamp on the file. See
|
||||||
|
# https://www.gnu.org/software/make/manual/make.html#Empty-Targets
|
||||||
|
docker build -t quay.io/coreos/prometheus-config-reloader:$(TAG) -f cmd/prometheus-config-reloader/Dockerfile .
|
||||||
|
touch $@
|
||||||
|
|
||||||
|
|
||||||
|
##############
|
||||||
|
# Generating #
|
||||||
|
##############
|
||||||
|
|
||||||
|
.PHONY: generate
|
||||||
|
generate: Documentation/*
|
||||||
|
|
||||||
|
.PHONY: generate-in-docker
|
||||||
|
generate-in-docker: hack/jsonnet-docker-image
|
||||||
|
docker run \
|
||||||
|
--rm \
|
||||||
|
-u=$(shell id -u $(USER)):$(shell id -g $(USER)) \
|
||||||
|
-v `pwd`:/go/src/github.com/coreos/prometheus-operator \
|
||||||
|
po-jsonnet make generate
|
||||||
|
|
||||||
|
.PHONY: kube-prometheus
|
||||||
|
kube-prometheus:
|
||||||
|
cd contrib/kube-prometheus; $(MAKE) generate
|
||||||
|
|
||||||
|
example/prometheus-operator-crd/**.crd.yaml: pkg/client/monitoring/v1/openapi_generated.go $(PO_CRDGEN_BINARY)
|
||||||
|
po-crdgen prometheus > example/prometheus-operator-crd/prometheus.crd.yaml
|
||||||
|
po-crdgen alertmanager > example/prometheus-operator-crd/alertmanager.crd.yaml
|
||||||
|
po-crdgen servicemonitor > example/prometheus-operator-crd/servicemonitor.crd.yaml
|
||||||
|
po-crdgen prometheusrule > example/prometheus-operator-crd/prometheusrule.crd.yaml
|
||||||
|
|
||||||
|
jsonnet/prometheus-operator/**-crd.libsonnet: example/prometheus-operator-crd/**.crd.yaml $(GOJSONTOYAML_BINARY)
|
||||||
|
cat example/prometheus-operator-crd/alertmanager.crd.yaml | gojsontoyaml -yamltojson > jsonnet/prometheus-operator/alertmanager-crd.libsonnet
|
||||||
|
cat example/prometheus-operator-crd/prometheus.crd.yaml | gojsontoyaml -yamltojson > jsonnet/prometheus-operator/prometheus-crd.libsonnet
|
||||||
|
cat example/prometheus-operator-crd/servicemonitor.crd.yaml | gojsontoyaml -yamltojson > jsonnet/prometheus-operator/servicemonitor-crd.libsonnet
|
||||||
|
cat example/prometheus-operator-crd/prometheusrule.crd.yaml | gojsontoyaml -yamltojson > jsonnet/prometheus-operator/prometheusrule-crd.libsonnet
|
||||||
|
|
||||||
|
pkg/client/monitoring/v1/openapi_generated.go: $(OPENAPI_GEN_BINARY)
|
||||||
|
$(OPENAPI_GEN_BINARY) \
|
||||||
|
-i github.com/coreos/prometheus-operator/pkg/client/monitoring/v1,k8s.io/apimachinery/pkg/apis/meta/v1,k8s.io/api/core/v1 \
|
||||||
|
-p github.com/coreos/prometheus-operator/pkg/client/monitoring/v1 \
|
||||||
|
--go-header-file="$(GOPATH)/src/github.com/coreos/prometheus-operator/.header"
|
||||||
|
|
||||||
|
bundle.yaml: example/rbac/prometheus-operator/*.yaml
|
||||||
|
hack/generate-bundle.sh
|
||||||
|
|
||||||
|
hack/generate/vendor: $(JB_BINARY) jsonnet/prometheus-operator/**
|
||||||
|
cd hack/generate; $(JB_BINARY) install;
|
||||||
|
|
||||||
|
example/non-rbac/prometheus-operator.yaml: hack/generate/vendor hack/generate/prometheus-operator-non-rbac.jsonnet
|
||||||
|
hack/generate/build-non-rbac-prometheus-operator.sh
|
||||||
|
|
||||||
|
example/rbac/prometheus-operator/*.yaml: hack/generate/vendor hack/generate/prometheus-operator-rbac.jsonnet
|
||||||
|
hack/generate/build-rbac-prometheus-operator.sh
|
||||||
|
|
||||||
|
jsonnet/prometheus-operator/prometheus-operator.libsonnet: VERSION
|
||||||
|
sed -i \
|
||||||
|
"s/prometheusOperator: 'v.*',/prometheusOperator: 'v$(shell cat VERSION)',/" \
|
||||||
|
jsonnet/prometheus-operator/prometheus-operator.libsonnet;
|
||||||
|
|
||||||
|
FULLY_GENERATED_DOCS = Documentation/api.md Documentation/compatibility.md
|
||||||
|
TO_BE_EXTENDED_DOCS = $(filter-out $(FULLY_GENERATED_DOCS), $(wildcard Documentation/*.md))
|
||||||
|
|
||||||
|
Documentation/api.md: $(PO_DOCGEN_BINARY) pkg/client/monitoring/v1/types.go
|
||||||
|
$(PO_DOCGEN_BINARY) api pkg/client/monitoring/v1/types.go > $@
|
||||||
|
|
||||||
|
Documentation/compatibility.md: $(PO_DOCGEN_BINARY) pkg/prometheus/statefulset.go
|
||||||
|
$(PO_DOCGEN_BINARY) compatibility > $@
|
||||||
|
|
||||||
|
$(TO_BE_EXTENDED_DOCS): $(EMBEDMD_BINARY) $(shell find example) kube-prometheus
|
||||||
|
$(EMBEDMD_BINARY) -w `find Documentation -name "*.md" | grep -v vendor`
|
||||||
|
|
||||||
|
|
||||||
|
##############
|
||||||
|
# Formatting #
|
||||||
|
##############
|
||||||
|
|
||||||
|
.PHONY: format
|
||||||
|
format: go-fmt check-license
|
||||||
|
|
||||||
|
.PHONY: go-fmt
|
||||||
|
go-fmt:
|
||||||
go fmt $(pkgs)
|
go fmt $(pkgs)
|
||||||
|
|
||||||
|
.PHONY: check-license
|
||||||
check-license:
|
check-license:
|
||||||
./scripts/check_license.sh
|
./scripts/check_license.sh
|
||||||
|
|
||||||
container:
|
|
||||||
docker build -t $(REPO):$(TAG) .
|
|
||||||
cd contrib/prometheus-config-reloader && docker build -t quay.io/coreos/prometheus-config-reloader:$(TAG) .
|
|
||||||
|
|
||||||
e2e-test:
|
###########
|
||||||
|
# Testing #
|
||||||
|
###########
|
||||||
|
|
||||||
|
.PHONY: test
|
||||||
|
test: test-unit test-e2e
|
||||||
|
|
||||||
|
.PHONY: test-unit
|
||||||
|
test-unit:
|
||||||
|
@go test $(TEST_RUN_ARGS) -short $(pkgs)
|
||||||
|
|
||||||
|
.PHONY: test-e2e
|
||||||
|
test-e2e: NAMESPACE?=po-e2e-$(shell LC_ALL=C tr -dc a-z0-9 < /dev/urandom | head -c 13 ; echo '')
|
||||||
|
test-e2e: KUBECONFIG?=$(HOME)/.kube/config
|
||||||
|
test-e2e:
|
||||||
go test -timeout 55m -v ./test/e2e/ $(TEST_RUN_ARGS) --kubeconfig=$(KUBECONFIG) --operator-image=$(REPO):$(TAG) --namespace=$(NAMESPACE)
|
go test -timeout 55m -v ./test/e2e/ $(TEST_RUN_ARGS) --kubeconfig=$(KUBECONFIG) --operator-image=$(REPO):$(TAG) --namespace=$(NAMESPACE)
|
||||||
|
|
||||||
e2e-status:
|
.PHONY: test-e2e-helm
|
||||||
kubectl get prometheus,alertmanager,servicemonitor,statefulsets,deploy,svc,endpoints,pods,cm,secrets,replicationcontrollers --all-namespaces
|
test-e2e-helm:
|
||||||
|
|
||||||
e2e: container
|
|
||||||
$(MAKE) e2e-test
|
|
||||||
|
|
||||||
e2e-helm:
|
|
||||||
./helm/hack/e2e-test.sh
|
./helm/hack/e2e-test.sh
|
||||||
# package the chart and verify if they have the version bumped
|
# package the chart and verify if they have the version bumped
|
||||||
helm/hack/helm-package.sh "alertmanager grafana prometheus prometheus-operator exporter-kube-dns exporter-kube-scheduler exporter-kubelets exporter-node exporter-kube-controller-manager exporter-kube-etcd exporter-kube-state exporter-kubernetes exporter-coredns"
|
helm/hack/helm-package.sh "alertmanager grafana prometheus prometheus-operator exporter-kube-dns exporter-kube-scheduler exporter-kubelets exporter-node exporter-kube-controller-manager exporter-kube-etcd exporter-kube-state exporter-kubernetes exporter-coredns"
|
||||||
helm/hack/sync-repo.sh false
|
helm/hack/sync-repo.sh false
|
||||||
|
|
||||||
clean-e2e:
|
|
||||||
kubectl -n $(NAMESPACE) delete prometheus,alertmanager,servicemonitor,statefulsets,deploy,svc,endpoints,pods,cm,secrets,replicationcontrollers --all
|
|
||||||
kubectl delete namespace $(NAMESPACE)
|
|
||||||
|
|
||||||
promu:
|
########
|
||||||
@go get -u github.com/prometheus/promu
|
# Misc #
|
||||||
|
########
|
||||||
|
|
||||||
embedmd:
|
hack/jsonnet-docker-image: scripts/jsonnet/Dockerfile
|
||||||
@go get github.com/campoy/embedmd
|
|
||||||
|
|
||||||
po-docgen:
|
|
||||||
@go install github.com/coreos/prometheus-operator/cmd/po-docgen
|
|
||||||
|
|
||||||
docs: embedmd po-docgen
|
|
||||||
$(GOPATH)/bin/embedmd -w `find Documentation contrib/kube-prometheus/ -name "*.md" | grep -v vendor`
|
|
||||||
$(GOPATH)/bin/po-docgen api pkg/client/monitoring/v1/types.go > Documentation/api.md
|
|
||||||
$(GOPATH)/bin/po-docgen compatibility > Documentation/compatibility.md
|
|
||||||
|
|
||||||
generate: jsonnet-docker
|
|
||||||
docker run --rm -u=$(shell id -u $(USER)):$(shell id -g $(USER)) -v `pwd`:/go/src/github.com/coreos/prometheus-operator po-jsonnet make generate-deepcopy generate-openapi generate-crd jsonnet generate-bundle generate-kube-prometheus docs
|
|
||||||
|
|
||||||
|
|
||||||
$(GOBIN)/openapi-gen:
|
|
||||||
go get -u -v -d k8s.io/code-generator/cmd/openapi-gen
|
|
||||||
cd $(GOPATH)/src/k8s.io/code-generator; git checkout release-1.10
|
|
||||||
go install k8s.io/code-generator/cmd/openapi-gen
|
|
||||||
|
|
||||||
$(GOBIN)/deepcopy-gen:
|
|
||||||
go get -u -v -d k8s.io/code-generator/cmd/deepcopy-gen
|
|
||||||
cd $(GOPATH)/src/k8s.io/code-generator; git checkout release-1.10
|
|
||||||
go install k8s.io/code-generator/cmd/deepcopy-gen
|
|
||||||
|
|
||||||
openapi-gen: $(GOBIN)/openapi-gen
|
|
||||||
|
|
||||||
deepcopy-gen: $(GOBIN)/deepcopy-gen
|
|
||||||
|
|
||||||
generate-deepcopy: deepcopy-gen
|
|
||||||
$(GOBIN)/deepcopy-gen -i github.com/coreos/prometheus-operator/pkg/client/monitoring/v1 --go-header-file="$(GOPATH)/src/github.com/coreos/prometheus-operator/.header" -v=4 --logtostderr --bounding-dirs "github.com/coreos/prometheus-operator/pkg/client" --output-file-base zz_generated.deepcopy
|
|
||||||
$(GOBIN)/deepcopy-gen -i github.com/coreos/prometheus-operator/pkg/client/monitoring/v1alpha1 --go-header-file="$(GOPATH)/src/github.com/coreos/prometheus-operator/.header" -v=4 --logtostderr --bounding-dirs "github.com/coreos/prometheus-operator/pkg/client" --output-file-base zz_generated.deepcopy
|
|
||||||
|
|
||||||
generate-openapi: openapi-gen
|
|
||||||
$(GOBIN)/openapi-gen -i github.com/coreos/prometheus-operator/pkg/client/monitoring/v1,k8s.io/apimachinery/pkg/apis/meta/v1,k8s.io/api/core/v1 -p github.com/coreos/prometheus-operator/pkg/client/monitoring/v1 --go-header-file="$(GOPATH)/src/github.com/coreos/prometheus-operator/.header"
|
|
||||||
|
|
||||||
generate-bundle:
|
|
||||||
hack/generate-bundle.sh
|
|
||||||
|
|
||||||
generate-kube-prometheus:
|
|
||||||
cd contrib/kube-prometheus; $(MAKE) generate-raw
|
|
||||||
|
|
||||||
jsonnet: jb
|
|
||||||
# Update the Prometheus Operator version in kube-prometheus
|
|
||||||
sed -i \
|
|
||||||
"s/prometheusOperator: 'v.*',/prometheusOperator: 'v$(shell cat VERSION)',/" \
|
|
||||||
jsonnet/prometheus-operator/prometheus-operator.libsonnet;
|
|
||||||
cd hack/generate; jb install;
|
|
||||||
hack/generate/build-jsonnet.sh
|
|
||||||
|
|
||||||
jb:
|
|
||||||
go get github.com/jsonnet-bundler/jsonnet-bundler/cmd/jb
|
|
||||||
|
|
||||||
jsonnet-docker:
|
|
||||||
docker build -f scripts/jsonnet/Dockerfile -t po-jsonnet .
|
docker build -f scripts/jsonnet/Dockerfile -t po-jsonnet .
|
||||||
|
touch $@
|
||||||
|
|
||||||
|
.PHONY: helm-sync-s3
|
||||||
helm-sync-s3:
|
helm-sync-s3:
|
||||||
helm/hack/helm-package.sh "alertmanager grafana prometheus prometheus-operator exporter-kube-dns exporter-kube-scheduler exporter-kubelets exporter-node exporter-kube-controller-manager exporter-kube-etcd exporter-kube-state exporter-kubernetes exporter-coredns"
|
helm/hack/helm-package.sh "alertmanager grafana prometheus prometheus-operator exporter-kube-dns exporter-kube-scheduler exporter-kubelets exporter-node exporter-kube-controller-manager exporter-kube-etcd exporter-kube-state exporter-kubernetes exporter-coredns"
|
||||||
helm/hack/sync-repo.sh true
|
helm/hack/sync-repo.sh true
|
||||||
helm/hack/helm-package.sh kube-prometheus
|
helm/hack/helm-package.sh kube-prometheus
|
||||||
helm/hack/sync-repo.sh true
|
helm/hack/sync-repo.sh true
|
||||||
|
|
||||||
generate-crd: generate-openapi po-crdgen
|
|
||||||
po-crdgen prometheus > example/prometheus-operator-crd/prometheus.crd.yaml
|
|
||||||
po-crdgen alertmanager > example/prometheus-operator-crd/alertmanager.crd.yaml
|
|
||||||
po-crdgen servicemonitor > example/prometheus-operator-crd/servicemonitor.crd.yaml
|
|
||||||
po-crdgen prometheusrule > example/prometheus-operator-crd/prometheusrule.crd.yaml
|
|
||||||
cat example/prometheus-operator-crd/alertmanager.crd.yaml | gojsontoyaml -yamltojson > jsonnet/prometheus-operator/alertmanager-crd.libsonnet
|
|
||||||
cat example/prometheus-operator-crd/prometheus.crd.yaml | gojsontoyaml -yamltojson > jsonnet/prometheus-operator/prometheus-crd.libsonnet
|
|
||||||
cat example/prometheus-operator-crd/servicemonitor.crd.yaml | gojsontoyaml -yamltojson > jsonnet/prometheus-operator/servicemonitor-crd.libsonnet
|
|
||||||
cat example/prometheus-operator-crd/prometheusrule.crd.yaml | gojsontoyaml -yamltojson > jsonnet/prometheus-operator/prometheusrule-crd.libsonnet
|
|
||||||
|
|
||||||
.PHONY: all build crossbuild test format check-license container e2e-test e2e-status e2e clean-e2e embedmd apidocgen docs generate-crd jb
|
############
|
||||||
|
# Binaries #
|
||||||
|
############
|
||||||
|
|
||||||
|
$(EMBEDMD_BINARY):
|
||||||
|
@go get github.com/campoy/embedmd
|
||||||
|
|
||||||
|
$(JB_BINARY):
|
||||||
|
go get -u github.com/jsonnet-bundler/jsonnet-bundler/cmd/jb
|
||||||
|
|
||||||
|
$(PO_CRDGEN_BINARY): cmd/po-crdgen/**.go
|
||||||
|
go install github.com/coreos/prometheus-operator/cmd/po-crdgen
|
||||||
|
|
||||||
|
$(PO_DOCGEN_BINARY): cmd/po-docgen/**.go
|
||||||
|
go install github.com/coreos/prometheus-operator/cmd/po-docgen
|
||||||
|
|
||||||
|
$(OPENAPI_GEN_BINARY):
|
||||||
|
go get -u -v -d k8s.io/code-generator/cmd/openapi-gen
|
||||||
|
cd $(GOPATH)/src/k8s.io/code-generator; git checkout release-1.10
|
||||||
|
go install k8s.io/code-generator/cmd/openapi-gen
|
||||||
|
|
||||||
|
$(DEEPCOPY_GEN_BINARY):
|
||||||
|
go get -u -v -d k8s.io/code-generator/cmd/deepcopy-gen
|
||||||
|
cd $(GOPATH)/src/k8s.io/code-generator; git checkout release-1.10
|
||||||
|
go install k8s.io/code-generator/cmd/deepcopy-gen
|
||||||
|
|
||||||
|
$(GOJSONTOYAML_BINARY):
|
||||||
|
go get -u github.com/brancz/gojsontoyaml
|
||||||
|
|
|
@ -1,26 +1,61 @@
|
||||||
JSONNET_FMT := jsonnet fmt -n 2 --max-blank-lines 2 --string-style s --comment-style s
|
JSONNET_FMT := jsonnet fmt -n 2 --max-blank-lines 2 --string-style s --comment-style s
|
||||||
|
|
||||||
image:
|
JB_BINARY:=$(GOPATH)/bin/jb
|
||||||
docker build -f ../../scripts/jsonnet/Dockerfile -t po-jsonnet ../../
|
EMBEDMD_BINARY:=$(GOPATH)/bin/embedmd
|
||||||
|
|
||||||
generate: image
|
# edit 1
|
||||||
|
|
||||||
|
all: generate fmt test
|
||||||
|
|
||||||
|
../../hack/jsonnet-docker-image: ../../scripts/jsonnet/Dockerfile
|
||||||
|
# Create empty target file, for the sole purpose of recording when this target
|
||||||
|
# was last executed via the last-modification timestamp on the file. See
|
||||||
|
# https://www.gnu.org/software/make/manual/make.html#Empty-Targets
|
||||||
|
docker build -f - -t po-jsonnet . < ../../scripts/jsonnet/Dockerfile
|
||||||
|
touch $@
|
||||||
|
|
||||||
|
generate-in-docker: ../../hack/jsonnet-docker-image
|
||||||
@echo ">> Compiling assets and generating Kubernetes manifests"
|
@echo ">> Compiling assets and generating Kubernetes manifests"
|
||||||
docker run --rm -u=$(shell id -u $(USER)):$(shell id -g $(USER)) -v $(shell dirname $(dir $(abspath $(dir $$PWD)))):/go/src/github.com/coreos/prometheus-operator/ --workdir /go/src/github.com/coreos/prometheus-operator/contrib/kube-prometheus po-jsonnet make generate-raw
|
docker run \
|
||||||
|
--rm \
|
||||||
|
-u=$(shell id -u $(USER)):$(shell id -g $(USER)) \
|
||||||
|
-v $(shell dirname $(dir $(abspath $(dir $$PWD)))):/go/src/github.com/coreos/prometheus-operator/ \
|
||||||
|
--workdir /go/src/github.com/coreos/prometheus-operator/contrib/kube-prometheus \
|
||||||
|
po-jsonnet make generate
|
||||||
|
|
||||||
generate-raw: fmt
|
generate: manifests/** **.md
|
||||||
jb install
|
|
||||||
|
**.md: $(EMBEDMD_BINARY) $(shell find examples) build.sh example.jsonnet
|
||||||
|
echo '>>> inside **.md'
|
||||||
|
$(EMBEDMD_BINARY) -w `find . -name "*.md" | grep -v vendor`
|
||||||
|
|
||||||
|
manifests/**: vendor/** example.jsonnet
|
||||||
./build.sh
|
./build.sh
|
||||||
|
|
||||||
|
vendor/**: $(JB_BINARY) jsonnetfile.json
|
||||||
|
$(JB_BINARY) install
|
||||||
|
|
||||||
fmt:
|
fmt:
|
||||||
find . -name 'vendor' -prune -o -name '*.libsonnet' -o -name '*.jsonnet' -print | \
|
find . -name 'vendor' -prune -o -name '*.libsonnet' -o -name '*.jsonnet' -print | \
|
||||||
xargs -n 1 -- $(JSONNET_FMT) -i
|
xargs -n 1 -- $(JSONNET_FMT) -i
|
||||||
|
|
||||||
test: image
|
test: $(JB_BINARY)
|
||||||
@echo ">> Compiling assets and generating Kubernetes manifests"
|
$(JB_BINARY) install
|
||||||
docker run --rm -u=$(shell id -u $(USER)):$(shell id -g $(USER)) -v $(shell dirname $(dir $(abspath $(dir $$PWD)))):/go/src/github.com/coreos/prometheus-operator/ --workdir /go/src/github.com/coreos/prometheus-operator/contrib/kube-prometheus po-jsonnet make test-raw
|
|
||||||
|
|
||||||
test-raw: crdtojsonnet
|
|
||||||
jb install
|
|
||||||
./test.sh
|
./test.sh
|
||||||
|
|
||||||
.PHONY: image generate crdtojsonnet generate-raw test test-raw fmt
|
test-in-docker: ../../hack/jsonnet-docker-image
|
||||||
|
@echo ">> Compiling assets and generating Kubernetes manifests"
|
||||||
|
docker run \
|
||||||
|
--rm \
|
||||||
|
-u=$(shell id -u $(USER)):$(shell id -g $(USER)) \
|
||||||
|
-v $(shell dirname $(dir $(abspath $(dir $$PWD)))):/go/src/github.com/coreos/prometheus-operator/ \
|
||||||
|
--workdir /go/src/github.com/coreos/prometheus-operator/contrib/kube-prometheus \
|
||||||
|
po-jsonnet make test
|
||||||
|
|
||||||
|
$(JB_BINARY):
|
||||||
|
go get -u github.com/jsonnet-bundler/jsonnet-bundler/cmd/jb
|
||||||
|
|
||||||
|
$(EMBEDMD_BINARY):
|
||||||
|
go get github.com/campoy/embedmd
|
||||||
|
|
||||||
|
.PHONY: generate generate-in-docker test test-in-docker fmt
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
prometheus-config-reloader
|
|
|
@ -1,22 +0,0 @@
|
||||||
all: build
|
|
||||||
|
|
||||||
FLAGS =
|
|
||||||
ENVVAR = GOOS=linux GOARCH=amd64 CGO_ENABLED=0
|
|
||||||
NAME = prometheus-config-reloader
|
|
||||||
REPO?=quay.io/coreos/$(NAME)
|
|
||||||
TAG?=v0.20.0
|
|
||||||
IMAGE = $(REPO):$(TAG)
|
|
||||||
|
|
||||||
build:
|
|
||||||
$(ENVVAR) go build -o $(NAME) main.go
|
|
||||||
|
|
||||||
container: build
|
|
||||||
docker build -t $(IMAGE) .
|
|
||||||
|
|
||||||
push: container
|
|
||||||
docker push $(IMAGE)
|
|
||||||
|
|
||||||
clean:
|
|
||||||
rm -f $(NAME)
|
|
||||||
|
|
||||||
.PHONY: all build container push clean
|
|
|
@ -1,51 +0,0 @@
|
||||||
apiVersion: v1
|
|
||||||
kind: ConfigMap
|
|
||||||
metadata:
|
|
||||||
name: prometheus-config-reloader-example
|
|
||||||
data:
|
|
||||||
---
|
|
||||||
apiVersion: extensions/v1beta1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: prometheus-config-reloader
|
|
||||||
spec:
|
|
||||||
replicas: 1
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: prometheus-config-reloader
|
|
||||||
spec:
|
|
||||||
volumes:
|
|
||||||
- name: rules
|
|
||||||
emptyDir: {}
|
|
||||||
- name: config
|
|
||||||
configMap:
|
|
||||||
name: prometheus-config-reloader-example
|
|
||||||
containers:
|
|
||||||
- name: ubuntu
|
|
||||||
image: ubuntu
|
|
||||||
command: ["sleep", "3600"]
|
|
||||||
volumeMounts:
|
|
||||||
- name: rules
|
|
||||||
mountPath: /etc/prometheus/rules
|
|
||||||
readOnly: true
|
|
||||||
- name: prometheus-config-reloader
|
|
||||||
image: quay.io/coreos/prometheus-config-reloader:v0.0.4
|
|
||||||
args:
|
|
||||||
- '-config-volume-dir=/etc/prometheus/config'
|
|
||||||
- '-rule-volume-dir=/etc/prometheus/rules'
|
|
||||||
- '-reload-url=http://localhost:9090/-/reload'
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
memory: "16Mi"
|
|
||||||
cpu: "50m"
|
|
||||||
limits:
|
|
||||||
memory: "32Mi"
|
|
||||||
cpu: "100m"
|
|
||||||
volumeMounts:
|
|
||||||
- name: config
|
|
||||||
readOnly: true
|
|
||||||
mountPath: /etc/prometheus/config
|
|
||||||
- name: rules
|
|
||||||
mountPath: /etc/prometheus/rules
|
|
||||||
|
|
|
@ -1,43 +0,0 @@
|
||||||
apiVersion: v1
|
|
||||||
kind: ConfigMap
|
|
||||||
metadata:
|
|
||||||
name: prometheus-config-reloader-example
|
|
||||||
data:
|
|
||||||
configmaps.json: |+
|
|
||||||
{
|
|
||||||
"items": [
|
|
||||||
{
|
|
||||||
"key": "default/test0"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "default/test1"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "default/test2"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: ConfigMap
|
|
||||||
metadata:
|
|
||||||
name: test0
|
|
||||||
data:
|
|
||||||
test.rules: |+
|
|
||||||
test0
|
|
||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: ConfigMap
|
|
||||||
metadata:
|
|
||||||
name: test1
|
|
||||||
data:
|
|
||||||
test.rules: |+
|
|
||||||
test1
|
|
||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: ConfigMap
|
|
||||||
metadata:
|
|
||||||
name: test2
|
|
||||||
data:
|
|
||||||
test.rules: |+
|
|
||||||
test2
|
|
3
hack/generate/build-non-rbac-prometheus-operator.sh
Executable file
3
hack/generate/build-non-rbac-prometheus-operator.sh
Executable file
|
@ -0,0 +1,3 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
jsonnet -J hack/generate/vendor hack/generate/prometheus-operator-non-rbac.jsonnet | gojsontoyaml > example/non-rbac/prometheus-operator.yaml
|
|
@ -8,5 +8,3 @@ for file in "${files[@]}"
|
||||||
do
|
do
|
||||||
jq -r ".[\"${file}\"]" tmp/po.json | gojsontoyaml > "example/rbac/prometheus-operator/${file}"
|
jq -r ".[\"${file}\"]" tmp/po.json | gojsontoyaml > "example/rbac/prometheus-operator/${file}"
|
||||||
done
|
done
|
||||||
|
|
||||||
jsonnet -J hack/generate/vendor hack/generate/prometheus-operator-non-rbac.jsonnet | gojsontoyaml > example/non-rbac/prometheus-operator.yaml
|
|
|
@ -1,15 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
# exit immediately when a command fails
|
|
||||||
set -e
|
|
||||||
# only exit with zero if all commands of the pipeline exit successfully
|
|
||||||
set -o pipefail
|
|
||||||
# error on unset variables
|
|
||||||
set -u
|
|
||||||
# print each command before executing it
|
|
||||||
set -x
|
|
||||||
|
|
||||||
make check-license
|
|
||||||
make format
|
|
||||||
make generate
|
|
||||||
|
|
||||||
git diff --exit-code
|
|
|
@ -18,6 +18,6 @@ mkdir .tmp || true
|
||||||
wget https://www.kernel.org/pub/linux/utils/util-linux/v2.30/util-linux-2.30.2.tar.gz -qO - | tar -xz -C .tmp/
|
wget https://www.kernel.org/pub/linux/utils/util-linux/v2.30/util-linux-2.30.2.tar.gz -qO - | tar -xz -C .tmp/
|
||||||
cd .tmp/util-linux-2.30.2 && ./autogen.sh && ./configure && make nsenter && sudo cp nsenter /usr/local/bin && cd -
|
cd .tmp/util-linux-2.30.2 && ./autogen.sh && ./configure && make nsenter && sudo cp nsenter /usr/local/bin && cd -
|
||||||
|
|
||||||
make e2e-helm
|
make test-e2e-helm
|
||||||
|
|
||||||
$(dirname "$BASH_SOURCE")/delete-minikube.sh
|
$(dirname "$BASH_SOURCE")/delete-minikube.sh
|
||||||
|
|
|
@ -13,7 +13,7 @@ $(dirname "$BASH_SOURCE")/create-minikube.sh
|
||||||
# waiting for kube-dns to be ready
|
# waiting for kube-dns to be ready
|
||||||
JSONPATH='{range .items[*]}{@.metadata.name}:{range @.status.conditions[*]}{@.type}={@.status};{end}{end}'; until kubectl -n kube-system get pods -lk8s-app=kube-dns -o jsonpath="$JSONPATH" 2>&1 | grep -q "Ready=True"; do sleep 1;echo "waiting for kube-dns to be available"; kubectl get pods --all-namespaces; done
|
JSONPATH='{range .items[*]}{@.metadata.name}:{range @.status.conditions[*]}{@.type}={@.status};{end}{end}'; until kubectl -n kube-system get pods -lk8s-app=kube-dns -o jsonpath="$JSONPATH" 2>&1 | grep -q "Ready=True"; do sleep 1;echo "waiting for kube-dns to be available"; kubectl get pods --all-namespaces; done
|
||||||
|
|
||||||
make crossbuild
|
make build image
|
||||||
make e2e
|
make test-e2e
|
||||||
|
|
||||||
$(dirname "$BASH_SOURCE")/delete-minikube.sh
|
$(dirname "$BASH_SOURCE")/delete-minikube.sh
|
||||||
|
|
Loading…
Add table
Reference in a new issue