From 08c1bfd897eabab227a2d92a4d663d6a71d3ab35 Mon Sep 17 00:00:00 2001
From: Rafael Franzke
Date: Mon, 6 Apr 2020 06:49:41 +0200
Subject: [PATCH] Adapt hack scripts
---
.ci/check | 89 -----------
.ci/component_descriptor | 21 +--
.ci/set_dependency_version | 108 +------------
.ci/test | 66 --------
.ci/verify | 14 ++
.dockerignore | 15 +-
.golangci.yaml | 17 ++
Dockerfile | 8 +-
Makefile | 149 ++++++++----------
docs/deployment/aks.md | 2 +-
extensions/hack/LICENSE_BOILERPLATE.txt | 15 --
go.mod | 1 +
go.sum | 7 +
{extensions/hack => hack}/.ci/ci.go | 0
.../hack => hack}/.ci/component_descriptor | 8 +-
{extensions/hack => hack}/.ci/prepare_release | 0
.../hack => hack}/.ci/set_dependency_version | 0
hack/api-reference/core.md | 4 -
hack/api-reference/extensions.md | 4 -
hack/api-reference/settings.md | 4 -
hack/api-reference/template/pkg.tpl | 6 -
hack/api-reference/template/tools.go | 18 +++
.../hack/check.sh => hack/check-charts.sh | 26 +--
{extensions/hack => hack}/check-generate.sh | 6 +-
extensions/hack/common.sh => hack/check.sh | 58 ++++---
{extensions/hack => hack}/clean.sh | 2 +-
{extensions/hack => hack}/format.sh | 0
{extensions/hack => hack}/generate.sh | 2 +-
...t-build-ld-flags => get-build-ld-flags.sh} | 6 +-
.../hack => hack}/install-requirements.sh | 4 +-
{extensions/hack => hack}/install.sh | 2 +-
hack/{ => local-development}/common | 0
hack/{ => local-development}/dev-setup | 4 +-
.../dev-setup-register-gardener | 0
.../local-garden/README.md | 23 +--
.../local-garden/apply-rbac-garden-ns | 0
.../local-garden/certificates/certs/ca.crt | 0
.../certificates/certs/default-admin.crt | 0
.../certs/default-controller-manager.crt | 0
.../certificates/certs/front-proxy-client.crt | 0
.../certs/kube-apiserver-etcd-client.crt | 0
.../certificates/certs/kube-apiserver.crt | 0
.../certs/kube-etcd-healthcheck-client.crt | 0
.../certificates/certs/kube-etcd-peer.crt | 0
.../certificates/certs/kube-etcd.crt | 0
.../local-garden/certificates/certs/sa.pub | 0
.../local-garden/certificates/keys/ca.key | 0
.../certificates/keys/default-admin.key | 0
.../keys/default-controller-manager.key | 0
.../certificates/keys/front-proxy-client.key | 0
.../keys/kube-apiserver-etcd-client.key | 0
.../certificates/keys/kube-apiserver.key | 0
.../keys/kube-etcd-healthcheck-client.key | 0
.../certificates/keys/kube-etcd-peer.key | 0
.../certificates/keys/kube-etcd.key | 0
.../local-garden/certificates/keys/sa.key | 0
.../local-garden/cleanup | 0
.../garden-certificate-generator.go | 0
.../local-garden/img/2020-01-23-10-03-21.png | Bin
.../kubeconfigs/default-admin.conf | 0
.../default-controller-manager.conf | 0
.../local-garden/run-gardener-etcd | 2 +-
.../local-garden/run-kube-apiserver | 2 +-
.../local-garden/run-kube-controller-manager | 2 +-
.../local-garden/run-kube-etcd | 2 +-
.../local-imagevector-overwrite | 4 +-
hack/{ => local-development}/start-apiserver | 10 +-
.../start-controller-manager | 6 +-
hack/{ => local-development}/start-gardenlet | 6 +-
hack/{ => local-development}/start-scheduler | 6 +-
.../start-seed-admission-controller | 8 +-
hack/{generate-code => test-cover-clean.sh} | 11 +-
hack/test-cover.sh | 32 ++++
...erate-reference-doc => test-prometheus.sh} | 16 +-
{extensions/hack => hack}/test.sh | 0
hack/update-protobuf.sh | 24 +--
hack/{ => usage}/delete | 0
hack/{ => usage}/migrate-etcd | 0
hack/{ => usage}/retry-shoot-operation | 0
hack/{ => usage}/shoot-operation | 0
pkg/apis/core/v1alpha1/doc.go | 1 -
pkg/apis/core/v1beta1/doc.go | 1 +
pkg/apis/doc.go | 3 +
pkg/apis/extensions/v1alpha1/doc.go | 1 +
pkg/apis/settings/v1alpha1/doc.go | 1 +
85 files changed, 296 insertions(+), 531 deletions(-)
delete mode 100755 .ci/check
delete mode 100755 .ci/test
create mode 100755 .ci/verify
create mode 100644 .golangci.yaml
delete mode 100755 extensions/hack/LICENSE_BOILERPLATE.txt
rename {extensions/hack => hack}/.ci/ci.go (100%)
rename {extensions/hack => hack}/.ci/component_descriptor (86%)
rename {extensions/hack => hack}/.ci/prepare_release (100%)
rename {extensions/hack => hack}/.ci/set_dependency_version (100%)
create mode 100644 hack/api-reference/template/tools.go
rename extensions/hack/check.sh => hack/check-charts.sh (65%)
rename {extensions/hack => hack}/check-generate.sh (94%)
rename extensions/hack/common.sh => hack/check.sh (53%)
mode change 100644 => 100755
rename {extensions/hack => hack}/clean.sh (96%)
rename {extensions/hack => hack}/format.sh (100%)
rename {extensions/hack => hack}/generate.sh (93%)
rename hack/{get-build-ld-flags => get-build-ld-flags.sh} (94%)
rename {extensions/hack => hack}/install-requirements.sh (93%)
rename {extensions/hack => hack}/install.sh (88%)
rename hack/{ => local-development}/common (100%)
rename hack/{ => local-development}/dev-setup (99%)
rename hack/{ => local-development}/dev-setup-register-gardener (100%)
rename hack/{ => local-development}/local-garden/README.md (83%)
rename hack/{ => local-development}/local-garden/apply-rbac-garden-ns (100%)
rename hack/{ => local-development}/local-garden/certificates/certs/ca.crt (100%)
rename hack/{ => local-development}/local-garden/certificates/certs/default-admin.crt (100%)
rename hack/{ => local-development}/local-garden/certificates/certs/default-controller-manager.crt (100%)
rename hack/{ => local-development}/local-garden/certificates/certs/front-proxy-client.crt (100%)
rename hack/{ => local-development}/local-garden/certificates/certs/kube-apiserver-etcd-client.crt (100%)
rename hack/{ => local-development}/local-garden/certificates/certs/kube-apiserver.crt (100%)
rename hack/{ => local-development}/local-garden/certificates/certs/kube-etcd-healthcheck-client.crt (100%)
rename hack/{ => local-development}/local-garden/certificates/certs/kube-etcd-peer.crt (100%)
rename hack/{ => local-development}/local-garden/certificates/certs/kube-etcd.crt (100%)
rename hack/{ => local-development}/local-garden/certificates/certs/sa.pub (100%)
rename hack/{ => local-development}/local-garden/certificates/keys/ca.key (100%)
rename hack/{ => local-development}/local-garden/certificates/keys/default-admin.key (100%)
rename hack/{ => local-development}/local-garden/certificates/keys/default-controller-manager.key (100%)
rename hack/{ => local-development}/local-garden/certificates/keys/front-proxy-client.key (100%)
rename hack/{ => local-development}/local-garden/certificates/keys/kube-apiserver-etcd-client.key (100%)
rename hack/{ => local-development}/local-garden/certificates/keys/kube-apiserver.key (100%)
rename hack/{ => local-development}/local-garden/certificates/keys/kube-etcd-healthcheck-client.key (100%)
rename hack/{ => local-development}/local-garden/certificates/keys/kube-etcd-peer.key (100%)
rename hack/{ => local-development}/local-garden/certificates/keys/kube-etcd.key (100%)
rename hack/{ => local-development}/local-garden/certificates/keys/sa.key (100%)
rename hack/{ => local-development}/local-garden/cleanup (100%)
rename hack/{ => local-development}/local-garden/garden-certificate-generator.go (100%)
rename hack/{ => local-development}/local-garden/img/2020-01-23-10-03-21.png (100%)
rename hack/{ => local-development}/local-garden/kubeconfigs/default-admin.conf (100%)
rename hack/{ => local-development}/local-garden/kubeconfigs/default-controller-manager.conf (100%)
rename hack/{ => local-development}/local-garden/run-gardener-etcd (91%)
rename hack/{ => local-development}/local-garden/run-kube-apiserver (96%)
rename hack/{ => local-development}/local-garden/run-kube-controller-manager (94%)
rename hack/{ => local-development}/local-garden/run-kube-etcd (95%)
rename hack/{ => local-development}/local-imagevector-overwrite (92%)
rename hack/{ => local-development}/start-apiserver (90%)
rename hack/{ => local-development}/start-controller-manager (80%)
rename hack/{ => local-development}/start-gardenlet (86%)
rename hack/{ => local-development}/start-scheduler (81%)
rename hack/{ => local-development}/start-seed-admission-controller (75%)
rename hack/{generate-code => test-cover-clean.sh} (78%)
create mode 100755 hack/test-cover.sh
rename hack/{generate-reference-doc => test-prometheus.sh} (63%)
rename {extensions/hack => hack}/test.sh (100%)
rename hack/{ => usage}/delete (100%)
rename hack/{ => usage}/migrate-etcd (100%)
rename hack/{ => usage}/retry-shoot-operation (100%)
rename hack/{ => usage}/shoot-operation (100%)
diff --git a/.ci/check b/.ci/check
deleted file mode 100755
index 188318633b2..00000000000
--- a/.ci/check
+++ /dev/null
@@ -1,89 +0,0 @@
-#!/usr/bin/env bash
-
-set -e
-
-export GO111MODULE=on
-
-# For the check step concourse will set the following environment variables:
-# SOURCE_PATH - path to component repository root directory.
-
-# not all platforms support readlink -f
-# SOURCE_PATH must be set, and treat it as absolute path
-rlink=""
-set +e
-readlink -f /tmp >/dev/null 2>&1
-if [ $? -eq 0 ]; then
- # do not support readlink -f, so need alternative
- rlink="readlink -f"
-fi
-set -e
-
-
-if [[ -z "${SOURCE_PATH}" ]]; then
- if [ -z "$rlink" ]; then
- echo "ERROR: system does not support 'readlink -f' and SOURCE_PATH not set, exiting." >&2
- exit 1
- fi
- export SOURCE_PATH="$($rlink "$(dirname ${0})/..")"
-else
- if [ -z "$rlink" ]; then
- echo "warning: system does not support 'readlink -f', treating SOURCE_PATH as absolute path with symlinks resolved." >&2
- else
- export SOURCE_PATH="$($rlink ${SOURCE_PATH})"
- fi
-fi
-
-cd "${SOURCE_PATH}"
-
-# Build Golint.
-go install -mod=vendor ./vendor/golang.org/x/lint/golint
-
-# Install Helm (see https://docs.helm.sh/using_helm/#from-script).
-if ! which helm 1>/dev/null; then
- export DESIRED_VERSION=v2.14.3
- echo -n "Installing helm... "
- install_helm_path="./get_helm.sh"
- curl https://raw.githubusercontent.com/helm/helm/master/scripts/get > "${install_helm_path}"
- chmod 700 "${install_helm_path}"
- bash "${install_helm_path}"
- rm ./"${install_helm_path}"
- echo "done."
-fi
-
-###############################################################################
-
-PACKAGES="$(go list -mod=vendor -e ./... | grep -vE '/pkg/apis|/pkg/controllermanager/apis|/pkg/scheduler/apis|/pkg/gardenlet/apis|/pkg/openapi')"
-PACKAGES_DIRS="$(echo ${PACKAGES} | sed "s|github.com/gardener/gardener|.|g")"
-
-# Execute static code checks.
-echo "Running go vet..."
-go vet -mod=vendor ${PACKAGES}
-
-# go fmt ignores -mod=vendor and performs module lookup (https://github.com/golang/go/issues/27841).
-# Also go fmt is just alias for gofmt -l -w and does not support flags that gofmt does.
-# That is why gofmt is used.
-
-# Execute automatic code formatting directive.
-echo "Running gofmt..."
-gofmt -l -w -s ${PACKAGES_DIRS}
-
-# Execute lint checks.
-echo "Running golint..."
-for dir in ${PACKAGES_DIRS}; do
- golint -set_exit_status $(find $dir -maxdepth 1 -name "*.go" | grep -vE 'zz_generated|_test.go')
-done
-
-# Check for chart symlink errors
-BROKEN_SYMLINKS=$(find -L ${SOURCE_PATH}/charts -type l)
-if [[ -n ${BROKEN_SYMLINKS} ]]; then
- echo "Found broken symlinks:"
- echo ${BROKEN_SYMLINKS}
- exit 1
-fi
-
-# Render chart dirs
-ALL_CHART_DIRS=$(find ${SOURCE_PATH}/charts -type f -name "Chart.yaml" -exec dirname {} \; | sort -r)
-for dir in ${ALL_CHART_DIRS}
-do
- helm template ${dir} 1> /dev/null
-done
diff --git a/.ci/component_descriptor b/.ci/component_descriptor
index 2c5c36fff0c..4cc839749ad 100755
--- a/.ci/component_descriptor
+++ b/.ci/component_descriptor
@@ -1,22 +1,3 @@
#!/usr/bin/env bash
-set -e
-
-images_file="$(dirname "$0")/../charts/images.yaml"
-images="$(yaml2json < $images_file)"
-
-echo "enriching creating component descriptor from ${BASE_DEFINITION_PATH}"
-
-eval "$(jq -r ".images |
- map(select(.sourceRepository != \"github.com/gardener/gardener\") |
- if (.name == \"hyperkube\" or .name == \"kube-apiserver\" or .name == \"kube-controller-manager\" or .name == \"kube-scheduler\" or .name == \"kube-proxy\") then
- \"--generic-dependencies '{\\\"name\\\": \\\"\" + .name + \"\\\", \\\"version\\\": \\\"\" + .tag + \"\\\"}'\"
- elif (.repository | startswith(\"eu.gcr.io/gardener-project/gardener\")) then
- \"--component-dependencies '{\\\"name\\\": \\\"\" + .sourceRepository + \"\\\", \\\"version\\\": \\\"\" + .tag + \"\\\"}'\"
- else
- \"--container-image-dependencies '{\\\"name\\\": \\\"\" + .name + \"\\\", \\\"image_reference\\\": \\\"\" + .repository + \":\" + .tag + \"\\\", \\\"version\\\": \\\"\" + .tag + \"\\\"}'\"
- end) |
- \"${ADD_DEPENDENCIES_CMD} \\\\\n\" +
- join(\" \\\\\n\")" <<< "$images")"
-
-cp "${BASE_DEFINITION_PATH}" "${COMPONENT_DESCRIPTOR_PATH}"
+"$(dirname $0)"/../hack/.ci/component_descriptor "$(dirname $0)"/..
diff --git a/.ci/set_dependency_version b/.ci/set_dependency_version
index fcfa5bf5998..d9a7000d764 100755
--- a/.ci/set_dependency_version
+++ b/.ci/set_dependency_version
@@ -1,107 +1,3 @@
-#!/usr/bin/env python3
+#!/usr/bin/env bash
-import pathlib
-import yaml
-
-import util
-import product.model
-
-dependency_type = util.check_env('DEPENDENCY_TYPE')
-if not dependency_type == 'component':
- util.fail('don\'t know how to upgrade dependency type: ' + str(dependency_type))
-
-component_reference = product.model.ComponentReference.create(
- name=util.check_env('DEPENDENCY_NAME'),
- version=util.check_env('DEPENDENCY_VERSION'),
-)
-
-images_file = pathlib.Path(
- util.check_env('REPO_DIR'),
- 'charts',
- 'images.yaml',
-)
-
-class ImagesParser(object):
- '''
- a naive YAML-parser crafted for the special case of processing
- gardener's images.yaml file; crafted that way to preserve comments/empty lines
- '''
- def __init__(
- self,
- images_file,
- names,
- target_version,
- ):
- self.images_file = images_file
- self.lines = images_file.read_text().split('\n')
- self.names = names
- self.target_version = target_version
- self._line_idx = 0
-
- def _line(self):
- return self.lines[self._line_idx]
-
- def _next_line(self):
- self._line_idx += 1
- return self._line()
-
- def _skip_to_next_entry(self, names):
- while not self._line().startswith('-'):
- self._next_line()
- name = self._line().strip().split(':')[-1].strip()
-
- if name not in names:
- self._next_line()
- return self._skip_to_next_entry(names)
-
- # found one of the entries:
- return name
-
- def _skip_to_next_tag(self):
- self._next_line()
- while not self._line().startswith('-'):
- if self._line().strip().startswith('tag:'):
- return
- self._next_line()
- raise RuntimeError('did not find tag attribute')
-
- def set_versions(self):
- while self.names:
- try:
- name = self._skip_to_next_entry(self.names)
- except IndexError:
- print(str(self.names))
- util.fail('don\'t know how to update ' + str(self.names))
- self.names.remove(name)
- self._skip_to_next_tag()
- tag_line = self._line()
- indent = len(tag_line) - len(tag_line.lstrip())
- patched_line = ' ' * indent + 'tag: "{version}"'.format(version=self.target_version)
- self.lines[self._line_idx] = patched_line
-
- def write_updated_file(self):
- self.images_file.write_text(
- '\n'.join(self.lines)
- )
-
-
-# handle special cases
-name = component_reference.github_repo()
-if name == 'autoscaler':
- names = ['cluster-autoscaler']
-elif name == 'vpn':
- names = ['vpn-seed', 'vpn-shoot']
-elif name == 'logging':
- names = ['fluentd-es', 'curator-es']
-else:
- names = [name]
-
-
-parser = ImagesParser(
- images_file=images_file,
- names=names,
- target_version=str(component_reference.version()),
-)
-
-parser.set_versions()
-parser.write_updated_file()
+"$(dirname $0)"/../hack/.ci/set_dependency_version
diff --git a/.ci/test b/.ci/test
deleted file mode 100755
index b56628560c2..00000000000
--- a/.ci/test
+++ /dev/null
@@ -1,66 +0,0 @@
-#!/usr/bin/env bash
-
-set -e
-
-# For the test step concourse will set the following environment variables:
-# SOURCE_PATH - path to component repository root directory.
-
-# not all platforms support readlink -f
-# SOURCE_PATH must be set, and treat it as absolute path
-rlink=""
-set +e
-readlink -f /tmp >/dev/null 2>&1
-if [ $? -eq 0 ]; then
- # do not support readlink -f, so need alternative
- rlink="readlink -f"
-else
- greadlink -f /tmp >/dev/null 2>&1
- if [ $? -eq 0 ]; then
- rlink="greadlink -f"
- fi
-fi
-set -e
-
-if [[ -z "${SOURCE_PATH}" ]]; then
- if [ -z "$rlink" ]; then
- echo "ERROR: system does not support 'readlink -f' and SOURCE_PATH not set, exiting." >&2
- exit 1
- fi
- export SOURCE_PATH="$($rlink "$(dirname ${0})/..")"
-else
- if [ -z "$rlink" ]; then
- echo "warning: system does not support 'readlink -f', treating SOURCE_PATH as absolute path with symlinks resolved." >&2
- else
- export SOURCE_PATH="$($rlink ${SOURCE_PATH})"
- fi
-fi
-
-cd "${SOURCE_PATH}"
-
-# Build the Ginkgo (test framework) binary to be able to execute the tests.
-GO111MODULE=on go install -mod=vendor ./vendor/github.com/onsi/ginkgo/ginkgo
-
-# Install Prometheus mock test tool (promtool)
-GO111MODULE=off go get -u github.com/prometheus/prometheus/cmd/promtool
-
-###############################################################################
-
-COVER_FLAG=""
-if [[ ! -z "$COVERAGE" ]]; then
- COVER_FLAG="-cover"
-fi
-
-echo "Running ginkgo..."
-GO111MODULE=on ginkgo ${COVER_FLAG} -r -mod=vendor cmd pkg plugin
-
-###############################################################################
-
-echo "Executing Prometheus alert tests"
-pushd "$SOURCE_PATH/charts/seed-monitoring/charts/core/charts/prometheus" > /dev/null
- promtool test rules rules-tests/*test.yaml
-popd > /dev/null
-
-echo "Executing aggregate Prometheus alert tests"
-pushd "$SOURCE_PATH/charts/seed-bootstrap/aggregate-prometheus-rules-tests" > /dev/null
- promtool test rules *test.yaml
-popd > /dev/null
diff --git a/.ci/verify b/.ci/verify
new file mode 100755
index 00000000000..2f99ba3c427
--- /dev/null
+++ b/.ci/verify
@@ -0,0 +1,14 @@
+#!/bin/bash
+
+cd "$(dirname $0)/.."
+
+git config --global user.email "gardener@sap.com"
+git config --global user.name "Gardener CI/CD"
+
+apt-get update && apt-get install -y unzip
+
+mkdir -p /go/src/github.com/gardener/gardener
+cp -r . /go/src/github.com/gardener/gardener
+cd /go/src/github.com/gardener/gardener
+
+make verify-extended
diff --git a/.dockerignore b/.dockerignore
index 801f0289887..7c8a036e912 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -2,12 +2,17 @@
**
# Exclude folders relevant for build
-!pkg/
+!.git
+!charts/
!cmd/
-!vendor/
+!extensions/
+!hack/
+!pkg/
!plugin/
-!charts/
-!VERSION
-!.git
+!test/
+!vendor/
+!.golangci.yaml
!go.mod
!go.sum
+!Makefile
+!VERSION
diff --git a/.golangci.yaml b/.golangci.yaml
new file mode 100644
index 00000000000..1e05066b17d
--- /dev/null
+++ b/.golangci.yaml
@@ -0,0 +1,17 @@
+run:
+ concurrency: 4
+ deadline: 10m
+
+ skip-dirs:
+ - pkg/client/core
+ - pkg/client/extensions
+ - pkg/client/settings
+
+ skip-files:
+ - ".*\\.pb\\.go$"
+
+issues:
+ exclude-rules:
+ - linters:
+ - staticcheck
+ text: "SA1019:" # Excludes messages where deprecated variables are used
diff --git a/Dockerfile b/Dockerfile
index 0e60b598fcc..68b820097f9 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -4,13 +4,7 @@ FROM golang:1.13.9 AS builder
WORKDIR /go/src/github.com/gardener/gardener
COPY . .
-RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go install \
- -mod=vendor \
- -ldflags "-X github.com/gardener/gardener/pkg/version.gitVersion=$(cat VERSION) \
- -X github.com/gardener/gardener/pkg/version.gitTreeState=$([ -z git status --porcelain 2>/dev/null ] && echo clean || echo dirty) \
- -X github.com/gardener/gardener/pkg/version.gitCommit=$(git rev-parse --verify HEAD) \
- -X github.com/gardener/gardener/pkg/version.buildDate=$(date --iso-8601=seconds)" \
- ./...
+RUN make install
############# base
FROM alpine:3.11.3 AS base
diff --git a/Makefile b/Makefile
index efbf0a1fde8..9bbbc71e6fe 100644
--- a/Makefile
+++ b/Makefile
@@ -19,9 +19,9 @@ SCHEDULER_IMAGE_REPOSITORY := $(REGISTRY)/scheduler
SEED_ADMISSION_IMAGE_REPOSITORY := $(REGISTRY)/seed-admission-controller
GARDENLET_IMAGE_REPOSITORY := $(REGISTRY)/gardenlet
IMAGE_TAG := $(shell cat VERSION)
+PUSH_LATEST_TAG := true
+
WORKDIR := $(shell pwd)
-PUSH_LATEST := true
-LD_FLAGS := $(shell ./hack/get-build-ld-flags)
LOCAL_GARDEN_LABEL := local-garden
#########################################
@@ -30,25 +30,29 @@ LOCAL_GARDEN_LABEL := local-garden
.PHONY: dev-setup
dev-setup:
- @./hack/dev-setup
+ @./hack/local-development/dev-setup
+
+.PHONY: dev-setup-register-gardener
+dev-setup-register-gardener:
+ @./hack/local-development/dev-setup-register-gardener
.PHONY: local-garden-up
local-garden-up:
# Remove old containers and create the docker user network
- @-./hack/local-garden/cleanup
+ @-./hack/local-development/local-garden/cleanup
@-docker network create gardener-dev --label $(LOCAL_GARDEN_LABEL)
- # Start the nodeless kubernetes environment
- @./hack/local-garden/run-kube-etcd $(LOCAL_GARDEN_LABEL)
- @./hack/local-garden/run-kube-apiserver $(LOCAL_GARDEN_LABEL)
- @./hack/local-garden/run-kube-controller-manager $(LOCAL_GARDEN_LABEL)
+ # Start the nodeless kubernetes environment
+ @./hack/local-development/local-garden/run-kube-etcd $(LOCAL_GARDEN_LABEL)
+ @./hack/local-development/local-garden/run-kube-apiserver $(LOCAL_GARDEN_LABEL)
+ @./hack/local-development/local-garden/run-kube-controller-manager $(LOCAL_GARDEN_LABEL)
# This etcd will be used to storge gardener resources (e.g., seeds, shoots)
- @./hack/local-garden/run-gardener-etcd $(LOCAL_GARDEN_LABEL)
+ @./hack/local-development/local-garden/run-gardener-etcd $(LOCAL_GARDEN_LABEL)
# Applying proxy RBAC for the extension controller
# After this step, you can start using the cluster at hack/local-garden/kubeconfigs/admin.conf
- @./hack/local-garden/apply-rbac-garden-ns
+ @./hack/local-development/local-garden/apply-rbac-garden-ns
# Now you can start using the cluster at with `export KUBECONFIG=hack/local-garden/kubeconfigs/default-admin.conf`
# Then you need to run `make dev-setup` to setup config and certificates files for gardener's components and to register the gardener-apiserver.
@@ -56,73 +60,35 @@ local-garden-up:
.PHONY: local-garden-down
local-garden-down:
- @-./hack/local-garden/cleanup
+ @-./hack/local-development/local-garden/cleanup
.PHONY: start-apiserver
start-apiserver:
- @./hack/start-apiserver
+ @./hack/local-development/start-apiserver
.PHONY: start-controller-manager
start-controller-manager:
- @./hack/start-controller-manager
+ @./hack/local-development/start-controller-manager
.PHONY: start-scheduler
start-scheduler:
- @./hack/start-scheduler
+ @./hack/local-development/start-scheduler
.PHONY: start-seed-admission-controller
start-seed-admission-controller:
- @./hack/start-seed-admission-controller
+ @./hack/local-development/start-seed-admission-controller
.PHONY: start-gardenlet
start-gardenlet:
- @./hack/start-gardenlet
+ @./hack/local-development/start-gardenlet
#################################################################
# Rules related to binary build, Docker image build and release #
#################################################################
-.PHONY: revendor
-revendor:
- @GO111MODULE=on go mod vendor
- @GO111MODULE=on go mod tidy
-
-.PHONY: build
-build:
- @CGO_ENABLED=0 GOOS=linux GOARCH=amd64 GO111MODULE=on go build \
- -mod=vendor \
- -ldflags "$(LD_FLAGS)" \
- -o bin/gardener-apiserver \
- cmd/gardener-apiserver/*.go
- @CGO_ENABLED=0 GOOS=linux GOARCH=amd64 GO111MODULE=on go build \
- -mod=vendor \
- -ldflags "$(LD_FLAGS)" \
- -o bin/gardener-controller-manager \
- cmd/gardener-controller-manager/*.go
- @CGO_ENABLED=0 GOOS=linux GOARCH=amd64 GO111MODULE=on go build \
- -mod=vendor \
- -ldflags "$(LD_FLAGS)" \
- -o bin/gardener-scheduler \
- cmd/gardener-scheduler/*.go
- @CGO_ENABLED=0 GOOS=linux GOARCH=amd64 GO111MODULE=on go build \
- -mod=vendor \
- -ldflags "$(LD_FLAGS)" \
- -o bin/gardener-seed-admission-controller \
- cmd/gardener-seed-admission-controller/*.go
- @CGO_ENABLED=0 GOOS=linux GOARCH=amd64 GO111MODULE=on go build \
- -mod=vendor \
- -ldflags "$(LD_FLAGS)" \
- -o bin/gardenlet \
- cmd/gardenlet/*.go
-
-.PHONY: build-local
-build-local:
- @GOBIN=${WORKDIR}/bin go install \
- -ldflags "$(LD_FLAGS)" \
- ./cmd/...
-
-.PHONY: release
-release: build build-local docker-images docker-login docker-push rename-binaries
+.PHONY: install
+install:
+ @./hack/install.sh ./...
.PHONY: docker-images
docker-images:
@@ -144,21 +110,15 @@ docker-push:
@if ! docker images $(SEED_ADMISSION_IMAGE_REPOSITORY) | awk '{ print $$2 }' | grep -q -F $(IMAGE_TAG); then echo "$(SEED_ADMISSION_IMAGE_REPOSITORY) version $(IMAGE_TAG) is not yet built. Please run 'make docker-images'"; false; fi
@if ! docker images $(GARDENLET_IMAGE_REPOSITORY) | awk '{ print $$2 }' | grep -q -F $(IMAGE_TAG); then echo "$(GARDENLET_IMAGE_REPOSITORY) version $(IMAGE_TAG) is not yet built. Please run 'make docker-images'"; false; fi
@gcloud docker -- push $(APISERVER_IMAGE_REPOSITORY):$(IMAGE_TAG)
- @if [[ "$(PUSH_LATEST)" == "true" ]]; then gcloud docker -- push $(APISERVER_IMAGE_REPOSITORY):latest; fi
+ @if [[ "$(PUSH_LATEST_TAG)" == "true" ]]; then gcloud docker -- push $(APISERVER_IMAGE_REPOSITORY):latest; fi
@gcloud docker -- push $(CONROLLER_MANAGER_IMAGE_REPOSITORY):$(IMAGE_TAG)
- @if [[ "$(PUSH_LATEST)" == "true" ]]; then gcloud docker -- push $(CONROLLER_MANAGER_IMAGE_REPOSITORY):latest; fi
+ @if [[ "$(PUSH_LATEST_TAG)" == "true" ]]; then gcloud docker -- push $(CONROLLER_MANAGER_IMAGE_REPOSITORY):latest; fi
@gcloud docker -- push $(SCHEDULER_IMAGE_REPOSITORY):$(IMAGE_TAG)
- @if [[ "$(PUSH_LATEST)" == "true" ]]; then gcloud docker -- push $(SCHEDULER_IMAGE_REPOSITORY):latest; fi
+ @if [[ "$(PUSH_LATEST_TAG)" == "true" ]]; then gcloud docker -- push $(SCHEDULER_IMAGE_REPOSITORY):latest; fi
@gcloud docker -- push $(SEED_ADMISSION_IMAGE_REPOSITORY):$(IMAGE_TAG)
- @if [[ "$(PUSH_LATEST)" == "true" ]]; then gcloud docker -- push $(SEED_ADMISSION_IMAGE_REPOSITORY):latest; fi
+ @if [[ "$(PUSH_LATEST_TAG)" == "true" ]]; then gcloud docker -- push $(SEED_ADMISSION_IMAGE_REPOSITORY):latest; fi
@gcloud docker -- push $(GARDENLET_IMAGE_REPOSITORY):$(IMAGE_TAG)
- @if [[ "$(PUSH_LATEST)" == "true" ]]; then gcloud docker -- push $(GARDENLET_IMAGE_REPOSITORY):latest; fi
-
-.PHONY: clean
-clean:
- @rm -rf bin/
- @rm -f *linux-amd64
- @rm -f *darwin-amd64
+ @if [[ "$(PUSH_LATEST_TAG)" == "true" ]]; then gcloud docker -- push $(GARDENLET_IMAGE_REPOSITORY):latest; fi
#####################################################################
# Rules for verification, formatting, linting, testing and cleaning #
@@ -166,35 +126,54 @@ clean:
.PHONY: install-requirements
install-requirements:
- @go install -mod=vendor ./vendor/github.com/gobuffalo/packr/v2/packr2
- @go install -mod=vendor ./vendor/github.com/golang/mock/mockgen
- @go install -mod=vendor ./vendor/github.com/onsi/ginkgo/ginkgo
+ @go install -mod=vendor github.com/gobuffalo/packr/v2/packr2
+ @go install -mod=vendor github.com/onsi/ginkgo/ginkgo
+ @go install -mod=vendor github.com/ahmetb/gen-crd-api-reference-docs
+ @go get github.com/golang/mock/mockgen
+ @GO111MODULE=off go get github.com/prometheus/prometheus/cmd/promtool
@./hack/install-requirements.sh
-.PHONY: verify
-verify: check test
+.PHONY: revendor
+revendor:
+ @GO111MODULE=on go mod vendor
+ @GO111MODULE=on go mod tidy
+
+.PHONY: clean
+clean:
+ @hack/clean.sh ./cmd/... ./extensions/... ./pkg/... ./plugin/... ./test/...
+
+.PHONY: check-generate
+check-generate:
+ @hack/check-generate.sh ./cmd/... ./extensions/... ./pkg/... ./plugin/... ./test/...
.PHONY: check
check:
- @.ci/check
+ @hack/check.sh --golangci-lint-config=./.golangci.yaml ./cmd/... ./extensions/... ./pkg/... ./plugin/... ./test/...
+ @hack/check-charts.sh ./charts
+
+.PHONY: generate
+generate:
+ @hack/generate.sh ./cmd/... ./extensions/... ./pkg/... ./plugin/... ./test/...
+
+.PHONY: format
+format:
+ @./hack/format.sh ./cmd ./extensions ./pkg ./plugin ./test
.PHONY: test
test:
- @.ci/test
+ @./hack/test.sh -r ./cmd/... ./extensions/... ./pkg/... ./plugin/...
+ @./hack/test-prometheus.sh
.PHONY: test-cov
test-cov:
- @env COVERAGE=1 .ci/test
- @echo "mode: set" > gardener.coverprofile && find . -name "*.coverprofile" -type f | xargs cat | grep -v mode: | sort -r | awk '{if($$1 != last) {print $$0;last=$$1}}' >> gardener.coverprofile
- @go tool cover -html=gardener.coverprofile -o=gardener.coverage.html
- @rm gardener.coverprofile
+ @./hack/test-cover.sh -r ./cmd/... ./extensions/... ./pkg/... ./plugin/...
.PHONY: test-clean
test-clean:
- @find . -name "*.coverprofile" -type f -delete
- @rm -f gardener.coverage.html
+ @./hack/test-cover-clean.sh
-.PHONY: generate
-generate:
- @./hack/generate-code
- @./hack/generate-reference-doc
+.PHONY: verify
+verify: check format test
+
+.PHONY: verify-extended
+verify-extended: install-requirements check-generate check format test-cov test-clean
diff --git a/docs/deployment/aks.md b/docs/deployment/aks.md
index 4de5594bf89..8d6a3b811e3 100644
--- a/docs/deployment/aks.md
+++ b/docs/deployment/aks.md
@@ -769,7 +769,7 @@ export KUBECONFIG=/tmp/johndoe-azure-kubeconfig.yaml
Deleting a Shoot cluster is not straight forward, and this is to
protect users from undesired/accidental cluster deletion. One has to
place some special annotations to get a Shoot cluster removed. We use
-the [hack/delete](../../hack/delete) script for this purpose.
+the [hack/usage/delete](../../hack/usage/delete) script for this purpose.
Please refer to [Creating / Deleting a Shoot
cluster](../usage/shoots.md) document for more details.
diff --git a/extensions/hack/LICENSE_BOILERPLATE.txt b/extensions/hack/LICENSE_BOILERPLATE.txt
deleted file mode 100755
index e12758c65a2..00000000000
--- a/extensions/hack/LICENSE_BOILERPLATE.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-/*
-Copyright (c) YEAR SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
diff --git a/go.mod b/go.mod
index f79d1070314..e6c2e02b7af 100644
--- a/go.mod
+++ b/go.mod
@@ -38,6 +38,7 @@ require (
go.uber.org/zap v1.13.0
golang.org/x/crypto v0.0.0-20200220183623-bac4c82f6975
golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f
+ golang.org/x/tools v0.0.0-20200403190813-44a64ad78b9b // indirect
gomodules.xyz/jsonpatch/v2 v2.0.1
google.golang.org/grpc v1.26.0
gopkg.in/yaml.v2 v2.2.8
diff --git a/go.sum b/go.sum
index d4239317924..821dff4a1aa 100644
--- a/go.sum
+++ b/go.sum
@@ -545,6 +545,7 @@ github.com/xiang90/probing v0.0.0-20160813154853-07dd2e8dfe18/go.mod h1:UETIi67q
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8=
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q=
+github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
go.etcd.io/bbolt v1.3.2 h1:Z/90sZLPOeCy2PwprqkFa25PdkusRzaj9P8zm/KNyvk=
go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
go.etcd.io/bbolt v1.3.3 h1:MUGmc65QhB3pIlaQ5bB4LwqSj6GIonVJXpZiaKNyaKk=
@@ -611,6 +612,8 @@ golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCc
golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
+golang.org/x/mod v0.2.0 h1:KU7oHjnv3XNWfa5COkzUifxZmxp1TyI7ImMXqFxLwvQ=
+golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180112015858-5ccada7d0a7b/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -635,6 +638,7 @@ golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLL
golang.org/x/net v0.0.0-20191126235420-ef20fe5d7933/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553 h1:efeOvDhwQ29Dj3SdAV/MJf8oukgn+8D8WgaCaRMchF8=
golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200301022130-244492dfa37a h1:GuSPYbZzB5/dcLNCwLQLsg3obCJtX9IJhpXkvY7kzk0=
golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
@@ -719,12 +723,15 @@ golang.org/x/tools v0.0.0-20190920225731-5eefd052ad72/go.mod h1:b+2E5dAYhXwXZwtn
golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191127201027-ecd32218bd7f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191203134012-c197fd4bf371/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
golang.org/x/tools v0.0.0-20191230220329-2aa90c603ae3 h1:2+KluhQfJ1YhW+TB1KrISS2SfiG1pLEoseB0D4VF/bo=
golang.org/x/tools v0.0.0-20191230220329-2aa90c603ae3/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
+golang.org/x/tools v0.0.0-20200403190813-44a64ad78b9b h1:AFZdJUT7jJYXQEC29hYH/WZkoV7+KhwxQGmdZ19yYoY=
+golang.org/x/tools v0.0.0-20200403190813-44a64ad78b9b/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
diff --git a/extensions/hack/.ci/ci.go b/hack/.ci/ci.go
similarity index 100%
rename from extensions/hack/.ci/ci.go
rename to hack/.ci/ci.go
diff --git a/extensions/hack/.ci/component_descriptor b/hack/.ci/component_descriptor
similarity index 86%
rename from extensions/hack/.ci/component_descriptor
rename to hack/.ci/component_descriptor
index c4c7eddb30f..6db6b564946 100755
--- a/extensions/hack/.ci/component_descriptor
+++ b/hack/.ci/component_descriptor
@@ -3,6 +3,7 @@
set -e
repo_root_dir="$1"
+repo_name="${2:-github.com/gardener/gardener}"
descriptor_out_file="${COMPONENT_DESCRIPTOR_PATH}"
echo "enriching creating component descriptor from ${BASE_DEFINITION_PATH}"
@@ -10,9 +11,10 @@ echo "enriching creating component descriptor from ${BASE_DEFINITION_PATH}"
if [[ -f "$repo_root_dir/charts/images.yaml" ]]; then
images="$(yaml2json < "$repo_root_dir/charts/images.yaml")"
eval "$(jq -r ".images |
- map(if (.name == \"hyperkube\" or .repository == \"k8s.gcr.io/hyperkube\") then
+ map(select(.sourceRepository != \"$repo_name\") |
+ if (.name == \"hyperkube\" or .name == \"kube-apiserver\" or .name == \"kube-controller-manager\" or .name == \"kube-scheduler\" or .name == \"kube-proxy\") then
\"--generic-dependencies '{\\\"name\\\": \\\"\" + .name + \"\\\", \\\"version\\\": \\\"\" + .tag + \"\\\"}'\"
- elif (.repository | startswith(\"eu.gcr.io/gardener-project\")) then
+ elif (.repository | startswith(\"eu.gcr.io/gardener-project/gardener\")) then
\"--component-dependencies '{\\\"name\\\": \\\"\" + .sourceRepository + \"\\\", \\\"version\\\": \\\"\" + .tag + \"\\\"}'\"
else
\"--container-image-dependencies '{\\\"name\\\": \\\"\" + .name + \"\\\", \\\"image_reference\\\": \\\"\" + .repository + \":\" + .tag + \"\\\", \\\"version\\\": \\\"\" + .tag + \"\\\"}'\"
@@ -42,7 +44,7 @@ if [[ -d "$repo_root_dir/charts/" ]]; then
gardener="eu.gcr.io/gardener-project/gardener"
if [[ "$NAME" == "hyperkube" ]]; then
${ADD_DEPENDENCIES_CMD} --generic-dependencies "{\"name\": \"$NAME\", \"version\": \"$TAG\"}"
- elif [[ $REPOSITORY =~ "eu.gcr.io/gardener-project/gardener*" ]]; then
+ elif [[ $REPOSITORY =~ "eu.gcr.io/gardener-project/gardener"* ]]; then
${ADD_DEPENDENCIES_CMD} --generic-dependencies "{\"name\": \"$NAME\", \"version\": \"$TAG\"}"
else
${ADD_DEPENDENCIES_CMD} --container-image-dependencies "{\"name\": \"${NAME}\", \"image_reference\": \"${REPOSITORY}:${TAG}\", \"version\": \"$TAG\"}"
diff --git a/extensions/hack/.ci/prepare_release b/hack/.ci/prepare_release
similarity index 100%
rename from extensions/hack/.ci/prepare_release
rename to hack/.ci/prepare_release
diff --git a/extensions/hack/.ci/set_dependency_version b/hack/.ci/set_dependency_version
similarity index 100%
rename from extensions/hack/.ci/set_dependency_version
rename to hack/.ci/set_dependency_version
diff --git a/hack/api-reference/core.md b/hack/api-reference/core.md
index bdd89160a88..bf6e812f92f 100644
--- a/hack/api-reference/core.md
+++ b/hack/api-reference/core.md
@@ -7435,7 +7435,3 @@ KubeletConfig
-
-Generated with gen-crd-api-reference-docs
-on git commit 5743c5d16
.
-
diff --git a/hack/api-reference/extensions.md b/hack/api-reference/extensions.md
index 7d65063abff..7a514acd644 100644
--- a/hack/api-reference/extensions.md
+++ b/hack/api-reference/extensions.md
@@ -3354,7 +3354,3 @@ the cluster-autoscaler properly.
-
-Generated with gen-crd-api-reference-docs
-on git commit 5743c5d16
.
-
diff --git a/hack/api-reference/settings.md b/hack/api-reference/settings.md
index 5c0f97b3d85..67ef2ffb2d3 100644
--- a/hack/api-reference/settings.md
+++ b/hack/api-reference/settings.md
@@ -553,7 +553,3 @@ Required.
-
-Generated with gen-crd-api-reference-docs
-on git commit 5743c5d16
.
-
diff --git a/hack/api-reference/template/pkg.tpl b/hack/api-reference/template/pkg.tpl
index 2f03a803b61..1312e1259b5 100644
--- a/hack/api-reference/template/pkg.tpl
+++ b/hack/api-reference/template/pkg.tpl
@@ -40,10 +40,4 @@
{{ end }}
{{ end }}
-
-
- Generated with gen-crd-api-reference-docs
- {{ with .gitCommit }} on git commit {{ . }}
{{end}}.
-
-
{{ end }}
diff --git a/hack/api-reference/template/tools.go b/hack/api-reference/template/tools.go
new file mode 100644
index 00000000000..87d0d26f8b2
--- /dev/null
+++ b/hack/api-reference/template/tools.go
@@ -0,0 +1,18 @@
+// +build tools
+
+// Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// This package imports things required by build scripts, to force `go mod` to see them as dependencies
+package template
diff --git a/extensions/hack/check.sh b/hack/check-charts.sh
similarity index 65%
rename from extensions/hack/check.sh
rename to hack/check-charts.sh
index 27433eaa161..5fdadacab67 100755
--- a/extensions/hack/check.sh
+++ b/hack/check-charts.sh
@@ -16,29 +16,11 @@
set -e
-echo "> Check"
+echo "> Check Helm charts"
-echo "Executing check-generate"
-$(dirname $0)/check-generate.sh $@
-
-echo "Executing golangci-lint"
-golangci-lint run --timeout 5m $@
-
-echo "Checking for format issues with gofmt"
-folders="pkg"
-if [[ -d "$(dirname $0)/cmd" ]]; then
- folders="cmd pkg"
-fi
-unformatted_files="$(gofmt -l "$folders")"
-if [[ "$unformatted_files" ]]; then
- echo "Unformatted files detected:"
- echo "$unformatted_files"
- exit 1
-fi
-
-if [[ -d "$(dirname $0)/charts" ]]; then
+if [[ -d "$1" ]]; then
echo "Checking for chart symlink errors"
- BROKEN_SYMLINKS=$(find -L charts -type l)
+ BROKEN_SYMLINKS=$(find -L $1 -type l)
if [[ "$BROKEN_SYMLINKS" ]]; then
echo "Found broken symlinks:"
echo "$BROKEN_SYMLINKS"
@@ -46,7 +28,7 @@ if [[ -d "$(dirname $0)/charts" ]]; then
fi
echo "Checking whether all charts can be rendered"
- for chart_file in charts/*/Chart.yaml; do
+ for chart_file in $1/*/Chart.yaml; do
helm template "$(dirname "$chart_file")" 1> /dev/null
done
fi
diff --git a/extensions/hack/check-generate.sh b/hack/check-generate.sh
similarity index 94%
rename from extensions/hack/check-generate.sh
rename to hack/check-generate.sh
index 9cc388b1f38..691ba56fa15 100755
--- a/extensions/hack/check-generate.sh
+++ b/hack/check-generate.sh
@@ -16,6 +16,8 @@
set -e
+echo "> Generate Check"
+
check_branch="__generate_check"
initialized_git=false
stashed=false
@@ -28,7 +30,7 @@ function delete-check-branch {
function cleanup {
if [[ "$generated" == true ]]; then
- if ! clean_err="$("$(dirname $0)/clean.sh" && git reset --hard -q && git clean -qdf)"; then
+ if ! clean_err="$("$(dirname $0)/clean.sh" $@ && git reset --hard -q && git clean -qdf)"; then
echo "Could not clean: $clean_err"
fi
fi
@@ -84,7 +86,7 @@ if which git &>/dev/null; then
git commit -q --allow-empty -m 'check-generate checkpoint'
old_status="$(git status -s)"
- if ! out=$("$(dirname $0)/clean.sh" 2>&1); then
+ if ! out=$("$(dirname $0)/clean.sh" $@ 2>&1); then
echo "Error during calling $(dirname $0)/clean.sh: $out"
exit 1
fi
diff --git a/extensions/hack/common.sh b/hack/check.sh
old mode 100644
new mode 100755
similarity index 53%
rename from extensions/hack/common.sh
rename to hack/check.sh
index e82bd0848fb..91f6646c9d1
--- a/extensions/hack/common.sh
+++ b/hack/check.sh
@@ -1,4 +1,4 @@
-#!/bin/bash -e
+#!/bin/bash
#
# Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file
#
@@ -14,31 +14,37 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-# Enable tracing in this script off by setting the TRACE variable in your
-# environment to any value:
-#
-# $ TRACE=1 test.sh
-TRACE=${TRACE:-""}
-if [[ -n "$TRACE" ]]; then
- set -x
-fi
+set -e
-# Turn colors in this script off by setting the NO_COLOR variable in your
-# environment to any value:
-#
-# $ NO_COLOR=1 test.sh
-NO_COLOR=${NO_COLOR:-""}
-if [[ -z "$NO_COLOR" ]]; then
- header=$'\e[1;33m'
- reset=$'\e[0m'
-else
- header=''
- reset=''
-fi
+GOLANGCI_LINT_CONFIG_FILE=""
+
+for arg in "$@"; do
+ case $arg in
+ --golangci-lint-config=*)
+ GOLANGCI_LINT_CONFIG_FILE="-c ${arg#*=}"
+ shift
+ ;;
+ esac
+done
-function header_text {
- echo "$header$*$reset"
-}
+echo "> Check"
+
+echo "Executing golangci-lint"
+golangci-lint run $GOLANGCI_LINT_CONFIG_FILE --timeout 10m $@
+
+echo "Executing go vet"
+go vet -mod=vendor $@
+
+echo "Executing gofmt"
+folders=()
+for f in $@; do
+ folders+=( "$(echo $f | sed 's/\.\/\(.*\)\/\.\.\./\1/')" )
+done
+unformatted_files="$(gofmt -l ${folders[*]})"
+if [[ "$unformatted_files" ]]; then
+ echo "Unformatted files detected:"
+ echo "$unformatted_files"
+ exit 1
+fi
-SOURCE_TREES=(./cmd/... ./pkg/...)
-CMD_TREES=(./cmd/...)
+echo "All checks successful"
diff --git a/extensions/hack/clean.sh b/hack/clean.sh
similarity index 96%
rename from extensions/hack/clean.sh
rename to hack/clean.sh
index e1d510f1085..9b67b12c201 100755
--- a/extensions/hack/clean.sh
+++ b/hack/clean.sh
@@ -18,7 +18,7 @@ set -e
echo "> Clean"
-for source_tree in ${SOURCE_TREES[@]}; do
+for source_tree in $@; do
find "$(dirname "$source_tree")" -type f -name "controller-registration.yaml" -exec rm '{}' \;
find "$(dirname "$source_tree")" -type f -name "zz_*.go" -exec rm '{}' \;
grep -lr --include="*.go" "//go:generate packr2" . | xargs -I {} packr2 clean "{}/.."
diff --git a/extensions/hack/format.sh b/hack/format.sh
similarity index 100%
rename from extensions/hack/format.sh
rename to hack/format.sh
diff --git a/extensions/hack/generate.sh b/hack/generate.sh
similarity index 93%
rename from extensions/hack/generate.sh
rename to hack/generate.sh
index cb8f8fce51f..0b3338a1c5b 100755
--- a/extensions/hack/generate.sh
+++ b/hack/generate.sh
@@ -18,4 +18,4 @@ set -e
echo "> Generate"
-GO111MODULE=on GOFLAGS="-mod=vendor" go generate $@
+GO111MODULE=on go generate -mod=vendor $@
diff --git a/hack/get-build-ld-flags b/hack/get-build-ld-flags.sh
similarity index 94%
rename from hack/get-build-ld-flags
rename to hack/get-build-ld-flags.sh
index c607cb94bad..b45f91803df 100755
--- a/hack/get-build-ld-flags
+++ b/hack/get-build-ld-flags.sh
@@ -14,7 +14,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-echo "-X github.com/gardener/gardener/pkg/version.gitVersion=$(cat VERSION)
- -X github.com/gardener/gardener/pkg/version.gitTreeState=$([ -z git status --porcelain 2>/dev/null ] && echo clean || echo dirty)
- -X github.com/gardener/gardener/pkg/version.gitCommit=$(git rev-parse --verify HEAD)
+echo "-X github.com/gardener/gardener/pkg/version.gitVersion=$(cat "$(dirname $0)/../VERSION") \
+ -X github.com/gardener/gardener/pkg/version.gitTreeState=$([ -z git status --porcelain 2>/dev/null ] && echo clean || echo dirty) \
+ -X github.com/gardener/gardener/pkg/version.gitCommit=$(git rev-parse --verify HEAD) \
-X github.com/gardener/gardener/pkg/version.buildDate=$(date '+%Y-%m-%dT%H:%M:%S%z' | sed 's/\([0-9][0-9]\)$/:\1/g')"
diff --git a/extensions/hack/install-requirements.sh b/hack/install-requirements.sh
similarity index 93%
rename from extensions/hack/install-requirements.sh
rename to hack/install-requirements.sh
index 7e58c653045..64e413327a6 100755
--- a/extensions/hack/install-requirements.sh
+++ b/hack/install-requirements.sh
@@ -19,8 +19,9 @@ set -e
echo "> Installing requirements"
export GO111MODULE=on
-curl -sfL "https://install.goreleaser.com/github.com/golangci/golangci-lint.sh" | sh -s -- -b $(go env GOPATH)/bin v1.20.1
+curl -sfL "https://install.goreleaser.com/github.com/golangci/golangci-lint.sh" | sh -s -- -b $(go env GOPATH)/bin v1.24.0
curl -s "https://raw.githubusercontent.com/helm/helm/v2.13.1/scripts/get" | bash -s -- --version 'v2.13.1'
+go get golang.org/x/tools/cmd/goimports
if [[ "$(uname -s)" == *"Darwin"* ]]; then
cat < Install"
-LD_FLAGS="${LD_FLAGS:-"-w -X github.com/gardener/gardener/extensions/pkg/version.Version=$(cat ../VERSION)"}"
+LD_FLAGS="${LD_FLAGS:-$($(dirname $0)/get-build-ld-flags.sh)}"
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 GO111MODULE=on \
go install -mod=vendor -ldflags "$LD_FLAGS" \
diff --git a/hack/common b/hack/local-development/common
similarity index 100%
rename from hack/common
rename to hack/local-development/common
diff --git a/hack/dev-setup b/hack/local-development/dev-setup
similarity index 99%
rename from hack/dev-setup
rename to hack/local-development/dev-setup
index 12e387f331e..6020040bdc5 100755
--- a/hack/dev-setup
+++ b/hack/local-development/dev-setup
@@ -16,8 +16,8 @@
set -e
-DEV_DIR=$(dirname "${0}")/../dev
-EXAMPLE_DIR=$(dirname "${0}")/../example
+DEV_DIR=$(dirname "${0}")/../../dev
+EXAMPLE_DIR=$(dirname "${0}")/../../example
source $(dirname "${0}")/common
kubernetes_env="$(k8s_env)"
diff --git a/hack/dev-setup-register-gardener b/hack/local-development/dev-setup-register-gardener
similarity index 100%
rename from hack/dev-setup-register-gardener
rename to hack/local-development/dev-setup-register-gardener
diff --git a/hack/local-garden/README.md b/hack/local-development/local-garden/README.md
similarity index 83%
rename from hack/local-garden/README.md
rename to hack/local-development/local-garden/README.md
index 7feae4d86e4..f52f5742118 100644
--- a/hack/local-garden/README.md
+++ b/hack/local-development/local-garden/README.md
@@ -1,34 +1,35 @@
# Local-Garden
-This is a small guide on how the local-garden directory is structured.
-To learn how you can use the nodeless setup in this directory, please see [this document](../../docs/development/local_setup.md).
+This is a small guide on how the local-garden directory is structured.
+To learn how you can use the nodeless setup in this directory, please see [this document](../../../docs/development/local_setup.md).
+
+## Components
-## Components
Local-Garden consists of the following main directories:
- *Certificates:* This directory contains all the certificates/keys/configs required for this setup.
- *Kubeconfigs:* Contains the necessary configuration required for creating the admin and the controller-manager kubeconfigs.
The rest of the directory consists of scripts to run the nodeless cluster components `kube-api-server`, `kube-controller-manager`,
-`etcd`. As well as scripts required for the Gardener aggregated API-server `gardener-etcd` and `apply-proxy-rbac`.
+`etcd`. As well as scripts required for the Gardener aggregated API-server `gardener-etcd` and `apply-proxy-rbac`.
-The below figure describes how these components interact with one another.
+The below figure describes how these components interact with one another.
![](img/2020-01-23-10-03-21.png)
-The only requirement to run this setup is to have `docker` installed. In addition there are a few other steps required
-to get this setup to work:
+The only requirement to run this setup is to have `docker` installed. In addition there are a few other steps required
+to get this setup to work:
- A user-defined docker network called `gardener-dev` is created. This is to enable DNS between the containers (e.g., curl http://kube-apiserver)
- A DNS mapping in the hosts `/etc/hosts` file. This is to enable connectivity from `kube-apiserver` to the `gardener-apiserver` which is applied to the container's DNS. hosts file.
-
-These steps are automated and can be executed simply by running `make dev-setup-local-garden`.
+
+These steps are automated and can be executed simply by running `make dev-setup-local-garden`.
## Certificate Generation
Certificate Generation for all the components are automated, and can be re-generated by simply
-executing the `./garden-certificate-generator.go` optionally with one or more of the following
-flags:
+executing the `./garden-certificate-generator.go` optionally with one or more of the following
+flags:
```bash
-certs-path string
diff --git a/hack/local-garden/apply-rbac-garden-ns b/hack/local-development/local-garden/apply-rbac-garden-ns
similarity index 100%
rename from hack/local-garden/apply-rbac-garden-ns
rename to hack/local-development/local-garden/apply-rbac-garden-ns
diff --git a/hack/local-garden/certificates/certs/ca.crt b/hack/local-development/local-garden/certificates/certs/ca.crt
similarity index 100%
rename from hack/local-garden/certificates/certs/ca.crt
rename to hack/local-development/local-garden/certificates/certs/ca.crt
diff --git a/hack/local-garden/certificates/certs/default-admin.crt b/hack/local-development/local-garden/certificates/certs/default-admin.crt
similarity index 100%
rename from hack/local-garden/certificates/certs/default-admin.crt
rename to hack/local-development/local-garden/certificates/certs/default-admin.crt
diff --git a/hack/local-garden/certificates/certs/default-controller-manager.crt b/hack/local-development/local-garden/certificates/certs/default-controller-manager.crt
similarity index 100%
rename from hack/local-garden/certificates/certs/default-controller-manager.crt
rename to hack/local-development/local-garden/certificates/certs/default-controller-manager.crt
diff --git a/hack/local-garden/certificates/certs/front-proxy-client.crt b/hack/local-development/local-garden/certificates/certs/front-proxy-client.crt
similarity index 100%
rename from hack/local-garden/certificates/certs/front-proxy-client.crt
rename to hack/local-development/local-garden/certificates/certs/front-proxy-client.crt
diff --git a/hack/local-garden/certificates/certs/kube-apiserver-etcd-client.crt b/hack/local-development/local-garden/certificates/certs/kube-apiserver-etcd-client.crt
similarity index 100%
rename from hack/local-garden/certificates/certs/kube-apiserver-etcd-client.crt
rename to hack/local-development/local-garden/certificates/certs/kube-apiserver-etcd-client.crt
diff --git a/hack/local-garden/certificates/certs/kube-apiserver.crt b/hack/local-development/local-garden/certificates/certs/kube-apiserver.crt
similarity index 100%
rename from hack/local-garden/certificates/certs/kube-apiserver.crt
rename to hack/local-development/local-garden/certificates/certs/kube-apiserver.crt
diff --git a/hack/local-garden/certificates/certs/kube-etcd-healthcheck-client.crt b/hack/local-development/local-garden/certificates/certs/kube-etcd-healthcheck-client.crt
similarity index 100%
rename from hack/local-garden/certificates/certs/kube-etcd-healthcheck-client.crt
rename to hack/local-development/local-garden/certificates/certs/kube-etcd-healthcheck-client.crt
diff --git a/hack/local-garden/certificates/certs/kube-etcd-peer.crt b/hack/local-development/local-garden/certificates/certs/kube-etcd-peer.crt
similarity index 100%
rename from hack/local-garden/certificates/certs/kube-etcd-peer.crt
rename to hack/local-development/local-garden/certificates/certs/kube-etcd-peer.crt
diff --git a/hack/local-garden/certificates/certs/kube-etcd.crt b/hack/local-development/local-garden/certificates/certs/kube-etcd.crt
similarity index 100%
rename from hack/local-garden/certificates/certs/kube-etcd.crt
rename to hack/local-development/local-garden/certificates/certs/kube-etcd.crt
diff --git a/hack/local-garden/certificates/certs/sa.pub b/hack/local-development/local-garden/certificates/certs/sa.pub
similarity index 100%
rename from hack/local-garden/certificates/certs/sa.pub
rename to hack/local-development/local-garden/certificates/certs/sa.pub
diff --git a/hack/local-garden/certificates/keys/ca.key b/hack/local-development/local-garden/certificates/keys/ca.key
similarity index 100%
rename from hack/local-garden/certificates/keys/ca.key
rename to hack/local-development/local-garden/certificates/keys/ca.key
diff --git a/hack/local-garden/certificates/keys/default-admin.key b/hack/local-development/local-garden/certificates/keys/default-admin.key
similarity index 100%
rename from hack/local-garden/certificates/keys/default-admin.key
rename to hack/local-development/local-garden/certificates/keys/default-admin.key
diff --git a/hack/local-garden/certificates/keys/default-controller-manager.key b/hack/local-development/local-garden/certificates/keys/default-controller-manager.key
similarity index 100%
rename from hack/local-garden/certificates/keys/default-controller-manager.key
rename to hack/local-development/local-garden/certificates/keys/default-controller-manager.key
diff --git a/hack/local-garden/certificates/keys/front-proxy-client.key b/hack/local-development/local-garden/certificates/keys/front-proxy-client.key
similarity index 100%
rename from hack/local-garden/certificates/keys/front-proxy-client.key
rename to hack/local-development/local-garden/certificates/keys/front-proxy-client.key
diff --git a/hack/local-garden/certificates/keys/kube-apiserver-etcd-client.key b/hack/local-development/local-garden/certificates/keys/kube-apiserver-etcd-client.key
similarity index 100%
rename from hack/local-garden/certificates/keys/kube-apiserver-etcd-client.key
rename to hack/local-development/local-garden/certificates/keys/kube-apiserver-etcd-client.key
diff --git a/hack/local-garden/certificates/keys/kube-apiserver.key b/hack/local-development/local-garden/certificates/keys/kube-apiserver.key
similarity index 100%
rename from hack/local-garden/certificates/keys/kube-apiserver.key
rename to hack/local-development/local-garden/certificates/keys/kube-apiserver.key
diff --git a/hack/local-garden/certificates/keys/kube-etcd-healthcheck-client.key b/hack/local-development/local-garden/certificates/keys/kube-etcd-healthcheck-client.key
similarity index 100%
rename from hack/local-garden/certificates/keys/kube-etcd-healthcheck-client.key
rename to hack/local-development/local-garden/certificates/keys/kube-etcd-healthcheck-client.key
diff --git a/hack/local-garden/certificates/keys/kube-etcd-peer.key b/hack/local-development/local-garden/certificates/keys/kube-etcd-peer.key
similarity index 100%
rename from hack/local-garden/certificates/keys/kube-etcd-peer.key
rename to hack/local-development/local-garden/certificates/keys/kube-etcd-peer.key
diff --git a/hack/local-garden/certificates/keys/kube-etcd.key b/hack/local-development/local-garden/certificates/keys/kube-etcd.key
similarity index 100%
rename from hack/local-garden/certificates/keys/kube-etcd.key
rename to hack/local-development/local-garden/certificates/keys/kube-etcd.key
diff --git a/hack/local-garden/certificates/keys/sa.key b/hack/local-development/local-garden/certificates/keys/sa.key
similarity index 100%
rename from hack/local-garden/certificates/keys/sa.key
rename to hack/local-development/local-garden/certificates/keys/sa.key
diff --git a/hack/local-garden/cleanup b/hack/local-development/local-garden/cleanup
similarity index 100%
rename from hack/local-garden/cleanup
rename to hack/local-development/local-garden/cleanup
diff --git a/hack/local-garden/garden-certificate-generator.go b/hack/local-development/local-garden/garden-certificate-generator.go
similarity index 100%
rename from hack/local-garden/garden-certificate-generator.go
rename to hack/local-development/local-garden/garden-certificate-generator.go
diff --git a/hack/local-garden/img/2020-01-23-10-03-21.png b/hack/local-development/local-garden/img/2020-01-23-10-03-21.png
similarity index 100%
rename from hack/local-garden/img/2020-01-23-10-03-21.png
rename to hack/local-development/local-garden/img/2020-01-23-10-03-21.png
diff --git a/hack/local-garden/kubeconfigs/default-admin.conf b/hack/local-development/local-garden/kubeconfigs/default-admin.conf
similarity index 100%
rename from hack/local-garden/kubeconfigs/default-admin.conf
rename to hack/local-development/local-garden/kubeconfigs/default-admin.conf
diff --git a/hack/local-garden/kubeconfigs/default-controller-manager.conf b/hack/local-development/local-garden/kubeconfigs/default-controller-manager.conf
similarity index 100%
rename from hack/local-garden/kubeconfigs/default-controller-manager.conf
rename to hack/local-development/local-garden/kubeconfigs/default-controller-manager.conf
diff --git a/hack/local-garden/run-gardener-etcd b/hack/local-development/local-garden/run-gardener-etcd
similarity index 91%
rename from hack/local-garden/run-gardener-etcd
rename to hack/local-development/local-garden/run-gardener-etcd
index 9c48e21233b..1babae9abac 100755
--- a/hack/local-garden/run-gardener-etcd
+++ b/hack/local-development/local-garden/run-gardener-etcd
@@ -15,7 +15,7 @@ PORTS="-p $PORT:$PORT -p $ETCDPORT:$ETCDPORT"
MOUNTS="-v $ETCD_DATA_DIR:/etcd-data"
-echo "Starting gardener-dev gardener-etcd cluster..!"
+echo "Starting gardener-dev gardener-etcd cluster!"
docker run -d --name g-etcd -l $LABEL --network gardener-dev --rm $PORTS $MOUNTS $IMAGE etcd --name $CLUSTERNAME \
--listen-client-urls "http://0.0.0.0:${ETCDPORT}" \
--advertise-client-urls "http://0.0.0.0:${ETCDPORT}" \
diff --git a/hack/local-garden/run-kube-apiserver b/hack/local-development/local-garden/run-kube-apiserver
similarity index 96%
rename from hack/local-garden/run-kube-apiserver
rename to hack/local-development/local-garden/run-kube-apiserver
index 6200c92d23d..11b55599ebf 100755
--- a/hack/local-garden/run-kube-apiserver
+++ b/hack/local-development/local-garden/run-kube-apiserver
@@ -16,7 +16,7 @@ MOUNTS="-v $SCRIPTPATH/certificates/certs:/certs -v $SCRIPTPATH/certificates/key
ETCD_PORT=12379
LISTEN_PORT="2443"
-echo "Starting gardener-dev kube-apiserver..!"
+echo "Starting gardener-dev kube-apiserver!"
docker run -d --name kube-apiserver -l $LABEL --add-host $HOSTS_LINE --network gardener-dev --rm -p $LISTEN_PORT:$LISTEN_PORT $MOUNTS $IMAGE /usr/local/bin/kube-apiserver \
--etcd-servers="https://etcd:$ETCD_PORT" \
--storage-media-type='application/json' \
diff --git a/hack/local-garden/run-kube-controller-manager b/hack/local-development/local-garden/run-kube-controller-manager
similarity index 94%
rename from hack/local-garden/run-kube-controller-manager
rename to hack/local-development/local-garden/run-kube-controller-manager
index b4755417b84..f4309723663 100755
--- a/hack/local-garden/run-kube-controller-manager
+++ b/hack/local-development/local-garden/run-kube-controller-manager
@@ -8,7 +8,7 @@ IMAGE=k8s.gcr.io/kube-controller-manager:v1.17.3
MOUNTS="-v $SCRIPTPATH/certificates/certs:/certs -v $SCRIPTPATH/certificates/keys:/keys -v $SCRIPTPATH/kubeconfigs/default-controller-manager.conf:/kubeconfig"
-echo "Starting gardener-dev kube-controller-manager..!"
+echo "Starting gardener-dev kube-controller-manager!"
docker run -d --name kube-controller-manager -l $LABEL --network gardener-dev --rm $MOUNTS $IMAGE /usr/local/bin/kube-controller-manager \
--authentication-kubeconfig="/kubeconfig" \
--authorization-kubeconfig="/kubeconfig" \
diff --git a/hack/local-garden/run-kube-etcd b/hack/local-development/local-garden/run-kube-etcd
similarity index 95%
rename from hack/local-garden/run-kube-etcd
rename to hack/local-development/local-garden/run-kube-etcd
index fd5874e5293..2cef4aa7a23 100755
--- a/hack/local-garden/run-kube-etcd
+++ b/hack/local-development/local-garden/run-kube-etcd
@@ -21,7 +21,7 @@ PORTS="-p $PORT:$PORT -p $ETCDPORT:$ETCDPORT"
MOUNTS="-v $SCRIPTPATH/certificates/certs:/certs -v $SCRIPTPATH/certificates/keys:/keys -v $ETCD_DATA_DIR:/etcd-data"
-echo "Starting gardener-dev kube-etcd cluster..!"
+echo "Starting gardener-dev kube-etcd cluster!"
docker run -d --name etcd -l $LABEL --network gardener-dev --rm $MOUNTS $IMAGE etcd --name $CLUSTERNAME \
--listen-client-urls "https://0.0.0.0:${HTTPS_ETCD_PORT},http://0.0.0.0:${HTTP_ETCD_PORT}" \
--advertise-client-urls "https://0.0.0.0:${HTTPS_ETCD_PORT},http://0.0.0.0:3${HTTP_ETCD_PORT}" \
diff --git a/hack/local-imagevector-overwrite b/hack/local-development/local-imagevector-overwrite
similarity index 92%
rename from hack/local-imagevector-overwrite
rename to hack/local-development/local-imagevector-overwrite
index c07e471dc6a..96661441fc8 100755
--- a/hack/local-imagevector-overwrite
+++ b/hack/local-development/local-imagevector-overwrite
@@ -36,13 +36,13 @@ cleanup_imagevector_overwrite() {
compute_imagevector_overwrite() {
imagevector_overwrite="images: []"
- VERSION="$(cat $(dirname $0)/../VERSION)"
+ VERSION="$(cat $(dirname $0)/../../VERSION)"
if [[ "$VERSION" != *"-dev"* ]]; then
echo "$imagevector_overwrite"
return
fi
- gardener_images_without_tag="$(yaml2json < "$(dirname $0)/../charts/images.yaml" | jq -r '.images | map(select(.sourceRepository == "github.com/gardener/gardener" and .tag == null))')"
+ gardener_images_without_tag="$(yaml2json < "$(dirname $0)/../../charts/images.yaml" | jq -r '.images | map(select(.sourceRepository == "github.com/gardener/gardener" and .tag == null))')"
if [[ "$(echo $gardener_images_without_tag | jq -r 'length')" == "0" ]]; then
echo "$imagevector_overwrite"
return
diff --git a/hack/start-apiserver b/hack/local-development/start-apiserver
similarity index 90%
rename from hack/start-apiserver
rename to hack/local-development/start-apiserver
index 644ed7f6462..406b5743e26 100755
--- a/hack/start-apiserver
+++ b/hack/local-development/start-apiserver
@@ -27,7 +27,7 @@ apiserver_flags="
--secure-port=8443 \
--v 2"
-ld_flags="$(./hack/get-build-ld-flags)"
+ldflags="$("$(dirname $0)"/../get-build-ld-flags.sh)"
case $(k8s_env) in
$KIND)
echo "Found kind ..."
@@ -36,7 +36,7 @@ case $(k8s_env) in
GO111MODULE=on go run \
-mod=vendor \
-ldflags "$ld_flags" \
- cmd/gardener-apiserver/main.go \
+ "$(dirname $0)"/../../cmd/gardener-apiserver/main.go \
--etcd-servers http://localhost:32379 \
--tls-cert-file <(kind get kubeconfig | sed -n -e 's/^.*client-certificate-data: //p' | base64 -d) \
--tls-private-key-file <(kind get kubeconfig | sed -n -e 's/^.*client-key-data: //p' | base64 -d) \
@@ -47,7 +47,7 @@ case $(k8s_env) in
GO111MODULE=on go run \
-mod=vendor \
-ldflags "$ld_flags" \
- cmd/gardener-apiserver/main.go \
+ "$(dirname $0)"/../../cmd/gardener-apiserver/main.go \
--etcd-servers http://localhost:32379 \
--tls-cert-file <(kubectl config view -o go-template="{{range .users}}{{if eq .name \""$(k8s_username)"\"}}{{index .user \"client-certificate-data\"}}{{end}}{{end}}" --raw | base64 -d) \
--tls-private-key-file <(kubectl config view -o go-template="{{range .users}}{{if eq .name \""$(k8s_username)"\"}}{{index .user \"client-key-data\"}}{{end}}{{end}}" --raw | base64 -d) \
@@ -58,7 +58,7 @@ case $(k8s_env) in
GO111MODULE=on go run \
-mod=vendor \
-ldflags "$ld_flags" \
- cmd/gardener-apiserver/main.go \
+ "$(dirname $0)"/../../cmd/gardener-apiserver/main.go \
--etcd-servers http://$(minikube ip):32379 \
--tls-cert-file ~/.minikube/apiserver.crt \
--tls-private-key-file ~/.minikube/apiserver.key \
@@ -69,7 +69,7 @@ case $(k8s_env) in
GO111MODULE=on go run \
-mod=vendor \
-ldflags "$ld_flags" \
- cmd/gardener-apiserver/main.go \
+ "$(dirname $0)"/../../cmd/gardener-apiserver/main.go \
--etcd-servers http://localhost:22379 \
--tls-cert-file <(kubectl config view --minify --flatten -ojsonpath='{.users[0].user.client-certificate-data}' --raw | base64 -d) \
--tls-private-key-file <(kubectl config view --minify --flatten -ojsonpath='{.users[0].user.client-key-data}' --raw | base64 -d) \
diff --git a/hack/start-controller-manager b/hack/local-development/start-controller-manager
similarity index 80%
rename from hack/start-controller-manager
rename to hack/local-development/start-controller-manager
index 63a2f34353e..80b49be13a3 100755
--- a/hack/start-controller-manager
+++ b/hack/local-development/start-controller-manager
@@ -22,6 +22,6 @@ trap cleanup_kubeconfig EXIT
KUBECONFIG="${KUBECONFIG:-$kubeconfig}" GO111MODULE=on \
go run \
-mod=vendor \
- -ldflags "$(./hack/get-build-ld-flags)" \
- cmd/gardener-controller-manager/main.go \
- --config=dev/20-componentconfig-gardener-controller-manager.yaml
+ -ldflags "$("$(dirname $0)"/../get-build-ld-flags.sh)" \
+ "$(dirname $0)"/../../cmd/gardener-controller-manager/main.go \
+ --config="$(dirname $0)"/../../dev/20-componentconfig-gardener-controller-manager.yaml
diff --git a/hack/start-gardenlet b/hack/local-development/start-gardenlet
similarity index 86%
rename from hack/start-gardenlet
rename to hack/local-development/start-gardenlet
index af5024d4cbc..eb39d1dd939 100755
--- a/hack/start-gardenlet
+++ b/hack/local-development/start-gardenlet
@@ -29,6 +29,6 @@ IMAGEVECTOR_OVERWRITE="$imagevector_overwrite" \
GO111MODULE=on \
go run \
-mod=vendor \
- -ldflags "$(./hack/get-build-ld-flags)" \
- cmd/gardenlet/main.go \
- --config=dev/20-componentconfig-gardenlet.yaml
+ -ldflags "$("$(dirname $0)"/../get-build-ld-flags.sh)" \
+ "$(dirname $0)"/../../cmd/gardenlet/main.go \
+ --config="$(dirname $0)"/../../dev/20-componentconfig-gardenlet.yaml
diff --git a/hack/start-scheduler b/hack/local-development/start-scheduler
similarity index 81%
rename from hack/start-scheduler
rename to hack/local-development/start-scheduler
index 3a1eb5f3176..7cf343b6d54 100755
--- a/hack/start-scheduler
+++ b/hack/local-development/start-scheduler
@@ -22,6 +22,6 @@ trap cleanup_kubeconfig EXIT
KUBECONFIG="${KUBECONFIG:-$kubeconfig}" GO111MODULE=on \
go run \
-mod=vendor \
- -ldflags "$(./hack/get-build-ld-flags)" \
- cmd/gardener-scheduler/main.go \
- --config=dev/20-componentconfig-gardener-scheduler.yaml
+ -ldflags "$("$(dirname $0)"/../get-build-ld-flags.sh)" \
+ "$(dirname $0)"/../../cmd/gardener-scheduler/main.go \
+ --config="$(dirname $0)"/../../dev/20-componentconfig-gardener-scheduler.yaml
diff --git a/hack/start-seed-admission-controller b/hack/local-development/start-seed-admission-controller
similarity index 75%
rename from hack/start-seed-admission-controller
rename to hack/local-development/start-seed-admission-controller
index 52920eeeb89..fe6a6ef810c 100755
--- a/hack/start-seed-admission-controller
+++ b/hack/local-development/start-seed-admission-controller
@@ -22,8 +22,8 @@ trap cleanup_kubeconfig EXIT
GO111MODULE=on \
go run \
-mod=vendor \
- -ldflags "$(./hack/get-build-ld-flags)" \
- cmd/gardener-seed-admission-controller/main.go \
+ -ldflags "$(./hack/get-build-ld-flags.sh)" \
+ "$(dirname $0)"/../../cmd/gardener-seed-admission-controller/main.go \
--kubeconfig="${KUBECONFIG:-$kubeconfig}" \
- --tls-cert-path="example/seed-admission-controller/tls.crt" \
- --tls-private-key-path="example/seed-admission-controller/tls.key"
+ --tls-cert-path="$(dirname $0)/../../example/seed-admission-controller/tls.crt" \
+ --tls-private-key-path="$(dirname $0)/../../example/seed-admission-controller/tls.key"
diff --git a/hack/generate-code b/hack/test-cover-clean.sh
similarity index 78%
rename from hack/generate-code
rename to hack/test-cover-clean.sh
index 76ff753196b..7521f197e3e 100755
--- a/hack/generate-code
+++ b/hack/test-cover-clean.sh
@@ -1,6 +1,6 @@
#!/bin/bash
#
-# Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file
+# Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -13,10 +13,9 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
+set -e
-set -o errexit
-set -o nounset
-set -o pipefail
+echo "> Test Cover Clean"
-$(dirname $0)/update-codegen.sh
-$(dirname $0)/update-protobuf.sh
+find . -name "*.coverprofile" -type f -delete
+rm -f test.coverage.html test.coverprofile
diff --git a/hack/test-cover.sh b/hack/test-cover.sh
new file mode 100755
index 00000000000..16b9a84b4d1
--- /dev/null
+++ b/hack/test-cover.sh
@@ -0,0 +1,32 @@
+#!/bin/bash
+#
+# Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+set -e
+
+echo "> Test Cover"
+
+"$(dirname $0)"/test.sh -cover $@
+
+COVERPROFILE="$(dirname $0)/../test.coverprofile"
+COVERPROFILE_TMP="$(dirname $0)/../test.coverprofile.tmp"
+COVERPROFILE_HTML="$(dirname $0)/../test.coverage.html"
+
+echo "mode: set" > "$COVERPROFILE_TMP"
+find . -name "*.coverprofile" -type f | xargs cat | grep -v mode: | sort -r | awk '{if($$1 != last) {print $$0;last=$$1}}' >> "$COVERPROFILE_TMP"
+cat "$COVERPROFILE_TMP" | grep -vE "\.pb\.go|\/test\/|zz_generated" > "$COVERPROFILE"
+rm -rf "$COVERPROFILE_TMP"
+go tool cover -html="$COVERPROFILE" -o="$COVERPROFILE_HTML"
+
+go tool cover -func="$COVERPROFILE"
diff --git a/hack/generate-reference-doc b/hack/test-prometheus.sh
similarity index 63%
rename from hack/generate-reference-doc
rename to hack/test-prometheus.sh
index dc0b77e2dbc..50d65adcd26 100755
--- a/hack/generate-reference-doc
+++ b/hack/test-prometheus.sh
@@ -1,4 +1,4 @@
-#!/bin/bash -e
+#!/bin/bash
#
# Copyright (c) 2019 SAP SE or an SAP affiliate company. All rights reserved. This file is licensed under the Apache Software License, v. 2 except as noted otherwise in the LICENSE file
#
@@ -13,10 +13,16 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
+set -e
-CURRENT_DIR=$(dirname $0)
-PROJECT_ROOT="${CURRENT_DIR}"/..
+echo "> Test Prometheus"
-GO111MODULE=on go install github.com/ahmetb/gen-crd-api-reference-docs
+echo "Executing Prometheus alert tests"
+pushd "$(dirname $0)/../charts/seed-monitoring/charts/core/charts/prometheus" > /dev/null
+promtool test rules rules-tests/*test.yaml
+popd > /dev/null
-GO111MODULE=on go generate ${PROJECT_ROOT}/pkg/apis/...
+echo "Executing aggregate Prometheus alert tests"
+pushd "$(dirname $0)/../charts/seed-bootstrap/aggregate-prometheus-rules-tests" > /dev/null
+promtool test rules *test.yaml
+popd > /dev/null
diff --git a/extensions/hack/test.sh b/hack/test.sh
similarity index 100%
rename from extensions/hack/test.sh
rename to hack/test.sh
diff --git a/hack/update-protobuf.sh b/hack/update-protobuf.sh
index 487a2b6a527..9a1a3ab2e11 100755
--- a/hack/update-protobuf.sh
+++ b/hack/update-protobuf.sh
@@ -18,29 +18,35 @@ set -o errexit
set -o nounset
set -o pipefail
-CURRENT_DIR=$(dirname $0)
+CURRENT_DIR="$(dirname $0)"
PROJECT_ROOT="${CURRENT_DIR}"/..
+pushd "$PROJECT_ROOT" > /dev/null
APIROOTS=${APIROOTS:-$(git grep --files-with-matches -e '// +k8s:protobuf-gen=package' cmd pkg | \
xargs -n 1 dirname | \
sed 's,^,github.com/gardener/gardener/,;' | \
sort | uniq
)}
+popd > /dev/null
rm -f ${GOPATH}/bin/go-to-protobuf
rm -f ${GOPATH}/bin/protoc-gen-gogo
-GOFLAGS="" go build -o ${GOPATH}/bin ./vendor/k8s.io/code-generator/cmd/go-to-protobuf
-GOFLAGS="" go build -o ${GOPATH}/bin ./vendor/k8s.io/code-generator/cmd/go-to-protobuf/protoc-gen-gogo
+GOFLAGS="" go build -o ${GOPATH}/bin "$PROJECT_ROOT/vendor/k8s.io/code-generator/cmd/go-to-protobuf"
+GOFLAGS="" go build -o ${GOPATH}/bin "$PROJECT_ROOT/vendor/k8s.io/code-generator/cmd/go-to-protobuf/protoc-gen-gogo"
if [[ -z "$(which protoc)" || "$(protoc --version)" != "libprotoc 3."* ]]; then
- echo "Generating protobuf requires protoc 3.0.0-beta1 or newer. Please download and"
- echo "install the platform appropriate Protobuf package for your OS: "
- echo
- echo " https://github.com/google/protobuf/releases"
- echo
+ if [[ "$(uname -s)" == *"Darwin"* ]]; then
+ brew install protobuf
+ else
+ PROTOC_ZIP=protoc-3.7.1-linux-x86_64.zip
+ curl -OL https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/$PROTOC_ZIP
+ unzip -o $PROTOC_ZIP -d /usr/local bin/protoc
+ unzip -o $PROTOC_ZIP -d /usr/local 'include/*'
+ rm -f $PROTOC_ZIP
+ fi
+
echo "WARNING: Protobuf changes are not being validated"
- exit 1
fi
read -ra PACKAGES <<< $(echo ${APIROOTS})
diff --git a/hack/delete b/hack/usage/delete
similarity index 100%
rename from hack/delete
rename to hack/usage/delete
diff --git a/hack/migrate-etcd b/hack/usage/migrate-etcd
similarity index 100%
rename from hack/migrate-etcd
rename to hack/usage/migrate-etcd
diff --git a/hack/retry-shoot-operation b/hack/usage/retry-shoot-operation
similarity index 100%
rename from hack/retry-shoot-operation
rename to hack/usage/retry-shoot-operation
diff --git a/hack/shoot-operation b/hack/usage/shoot-operation
similarity index 100%
rename from hack/shoot-operation
rename to hack/usage/shoot-operation
diff --git a/pkg/apis/core/v1alpha1/doc.go b/pkg/apis/core/v1alpha1/doc.go
index a5e4119c385..ac2cfd19b5b 100644
--- a/pkg/apis/core/v1alpha1/doc.go
+++ b/pkg/apis/core/v1alpha1/doc.go
@@ -18,7 +18,6 @@
// +k8s:openapi-gen=true
// +k8s:defaulter-gen=TypeMeta
// +k8s:protobuf-gen=package
-//go:generate gen-crd-api-reference-docs -api-dir . -config ../../../../hack/api-reference/core-config.json -template-dir ../../../../hack/api-reference/template -out-file ../../../../hack/api-reference/core.md
// Package v1alpha1 is a version of the API.
// +groupName=core.gardener.cloud
diff --git a/pkg/apis/core/v1beta1/doc.go b/pkg/apis/core/v1beta1/doc.go
index ac47680be7b..7b83248db92 100644
--- a/pkg/apis/core/v1beta1/doc.go
+++ b/pkg/apis/core/v1beta1/doc.go
@@ -18,6 +18,7 @@
// +k8s:openapi-gen=true
// +k8s:defaulter-gen=TypeMeta
// +k8s:protobuf-gen=package
+
//go:generate gen-crd-api-reference-docs -api-dir . -config ../../../../hack/api-reference/core-config.json -template-dir ../../../../hack/api-reference/template -out-file ../../../../hack/api-reference/core.md
// Package v1beta1 is a version of the API.
diff --git a/pkg/apis/doc.go b/pkg/apis/doc.go
index 4fbca327208..6781ad08b6e 100644
--- a/pkg/apis/doc.go
+++ b/pkg/apis/doc.go
@@ -12,4 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
+//go:generate ../../hack/update-protobuf.sh
+//go:generate ../../hack/update-codegen.sh
+
package apis
diff --git a/pkg/apis/extensions/v1alpha1/doc.go b/pkg/apis/extensions/v1alpha1/doc.go
index 61cc19c84c5..eceb2a6d06a 100644
--- a/pkg/apis/extensions/v1alpha1/doc.go
+++ b/pkg/apis/extensions/v1alpha1/doc.go
@@ -13,6 +13,7 @@
// limitations under the License.
// +k8s:deepcopy-gen=package
+
//go:generate gen-crd-api-reference-docs -api-dir . -config ../../../../hack/api-reference/extensions-config.json -template-dir ../../../../hack/api-reference/template -out-file ../../../../hack/api-reference/extensions.md
// Package v1alpha1 is the v1alpha1 version of the API.
diff --git a/pkg/apis/settings/v1alpha1/doc.go b/pkg/apis/settings/v1alpha1/doc.go
index 7179811664c..7ce0b2eeff8 100644
--- a/pkg/apis/settings/v1alpha1/doc.go
+++ b/pkg/apis/settings/v1alpha1/doc.go
@@ -18,6 +18,7 @@
// +k8s:openapi-gen=true
// +k8s:defaulter-gen=TypeMeta
// +k8s:protobuf-gen=package
+
//go:generate gen-crd-api-reference-docs -api-dir . -config ../../../../hack/api-reference/settings-config.json -template-dir ../../../../hack/api-reference/template -out-file ../../../../hack/api-reference/settings.md
// Package v1alpha1 is a version of the API.