| # Licensed to the Apache Software Foundation (ASF) under one or more |
| # contributor license agreements. See the NOTICE file distributed with |
| # this work for additional information regarding copyright ownership. |
| # The ASF licenses this file to You 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. |
| |
| VERSIONFILE := pkg/util/defaults/defaults.go |
| VERSION := 1.3.0-SNAPSHOT |
| LAST_RELEASED_VERSION := 1.2.0 |
| RUNTIME_VERSION := 1.5.0 |
| BUILDAH_VERSION := 1.14.0 |
| KANIKO_VERSION := 0.17.1 |
| BASE_IMAGE := adoptopenjdk/openjdk11:slim |
| LOCAL_REPOSITORY := /tmp/artifacts/m2 |
| IMAGE_NAME := docker.io/apache/camel-k |
| RELEASE_GIT_REMOTE := upstream |
| GIT_COMMIT := $(shell git rev-list -1 HEAD) |
| LINT_GOGC := 10 |
| LINT_DEADLINE := 10m |
| |
| # Used to push pre-release artifacts |
| STAGING_IMAGE_NAME := docker.io/camelk/camel-k |
| |
| STAGING_RUNTIME_REPO := |
| |
| # Define here the repo containing the default Kamelet catalog (if any) |
| KAMELET_CATALOG_REPO := |
| # Optional branch for the default Kamelet catalog |
| KAMELET_CATALOG_REPO_BRANCH := |
| |
| # When packaging artifacts into the docker image, you can "copy" them from local maven |
| # or "download" them from Apache Snapshots and Maven Central |
| PACKAGE_ARTIFACTS_STRATEGY := copy |
| |
| # OLM (Operator Lifecycle Manager and Operator Hub): uncomment to override operator settings at build time |
| #GOLDFLAGS += -X github.com/apache/camel-k/pkg/util/olm.DefaultOperatorName=camel-k-operator |
| #GOLDFLAGS += -X github.com/apache/camel-k/pkg/util/olm.DefaultPackage=camel-k |
| #GOLDFLAGS += -X github.com/apache/camel-k/pkg/util/olm.DefaultChannel=alpha |
| #GOLDFLAGS += -X github.com/apache/camel-k/pkg/util/olm.DefaultSource=community-operators |
| #GOLDFLAGS += -X github.com/apache/camel-k/pkg/util/olm.DefaultSourceNamespace=openshift-marketplace |
| #GOLDFLAGS += -X github.com/apache/camel-k/pkg/util/olm.DefaultStartingCSV= |
| #GOLDFLAGS += -X github.com/apache/camel-k/pkg/util/olm.DefaultGlobalNamespace=openshift-operators |
| |
| # Get the currently used golang install path (in GOPATH/bin, unless GOBIN is set) |
| ifeq (,$(shell go env GOBIN)) |
| GOBIN=$(shell go env GOPATH)/bin |
| else |
| GOBIN=$(shell go env GOBIN) |
| endif |
| |
| # Build |
| GOLDFLAGS += -X github.com/apache/camel-k/pkg/cmd/operator.GitCommit=$(GIT_COMMIT) |
| GOFLAGS = -ldflags "$(GOLDFLAGS)" -trimpath |
| |
| define LICENSE_HEADER |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You 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. |
| endef |
| |
| export LICENSE_HEADER |
| default: test |
| |
| # |
| # Generates the version file |
| # |
| codegen: |
| @echo "/*" > $(VERSIONFILE) |
| @echo "$$LICENSE_HEADER" >> $(VERSIONFILE) |
| @echo "*/" >> $(VERSIONFILE) |
| @echo "" >> $(VERSIONFILE) |
| @echo "package defaults" >> $(VERSIONFILE) |
| @echo "" >> $(VERSIONFILE) |
| @echo "// ***********************" >> $(VERSIONFILE) |
| @echo "// DO NOT EDIT THIS FILE" >> $(VERSIONFILE) |
| @echo "// ***********************" >> $(VERSIONFILE) |
| @echo "" >> $(VERSIONFILE) |
| @echo "const (" >> $(VERSIONFILE) |
| @echo " // Version -- " >> $(VERSIONFILE) |
| @echo " Version = \"$(VERSION)\"" >> $(VERSIONFILE) |
| @echo "" >> $(VERSIONFILE) |
| @echo " // DefaultRuntimeVersion -- " >> $(VERSIONFILE) |
| @echo " DefaultRuntimeVersion = \"$(RUNTIME_VERSION)\"" >> $(VERSIONFILE) |
| @echo "" >> $(VERSIONFILE) |
| @echo " // BuildahVersion -- " >> $(VERSIONFILE) |
| @echo " BuildahVersion = \"$(BUILDAH_VERSION)\"" >> $(VERSIONFILE) |
| @echo "" >> $(VERSIONFILE) |
| @echo " // KanikoVersion -- " >> $(VERSIONFILE) |
| @echo " KanikoVersion = \"$(KANIKO_VERSION)\"" >> $(VERSIONFILE) |
| @echo "" >> $(VERSIONFILE) |
| @echo " // BaseImage -- " >> $(VERSIONFILE) |
| @echo " BaseImage = \"$(BASE_IMAGE)\"" >> $(VERSIONFILE) |
| @echo "" >> $(VERSIONFILE) |
| @echo " // LocalRepository -- " >> $(VERSIONFILE) |
| @echo " LocalRepository = \"$(LOCAL_REPOSITORY)\"" >> $(VERSIONFILE) |
| @echo "" >> $(VERSIONFILE) |
| @echo " // ImageName -- " >> $(VERSIONFILE) |
| @echo " ImageName = \"$(IMAGE_NAME)\"" >> $(VERSIONFILE) |
| @echo ")" >> $(VERSIONFILE) |
| @echo "" >> $(VERSIONFILE) |
| gofmt -w pkg/util/defaults/defaults.go |
| |
| generate: generate-deepcopy generate-crd generate-client generate-doc generate-json-schema generate-strimzi |
| |
| generate-client: |
| ./script/gen_client.sh |
| |
| generate-crd: |
| ./script/gen_crd.sh |
| |
| generate-doc: |
| ./script/gen_doc.sh |
| |
| generate-deepcopy: controller-gen |
| cd pkg/apis/camel && $(CONTROLLER_GEN) paths="./..." object |
| |
| generate-json-schema: |
| ./script/gen_json_schema.sh $(RUNTIME_VERSION) $(STAGING_RUNTIME_REPO) |
| |
| generate-strimzi: |
| cd addons/strimzi/duck && $(CONTROLLER_GEN) paths="./..." object |
| ./script/gen_client_strimzi.sh |
| |
| build: build-resources build-kamel build-compile-integration-tests build-submodules |
| |
| test: build |
| go test ./... |
| |
| test-integration: build |
| STAGING_RUNTIME_REPO="$(STAGING_RUNTIME_REPO)" go test -timeout 60m -v ./e2e/common -tags=integration |
| #go test -timeout 60m -v ./e2e/common -tags=integration |
| |
| test-knative: build |
| STAGING_RUNTIME_REPO="$(STAGING_RUNTIME_REPO)" go test -timeout 60m -v ./e2e/knative -tags=integration |
| #go test -timeout 60m -v ./e2e/knative -tags=integration |
| |
| test-builder: build |
| STAGING_RUNTIME_REPO="$(STAGING_RUNTIME_REPO)" go test -timeout 60m -v ./e2e/builder -tags=integration |
| #go test -timeout 60m -v ./e2e/builder -tags=integration |
| |
| build-kamel: |
| go build $(GOFLAGS) -o kamel ./cmd/kamel/*.go |
| |
| build-resources: bundle-kamelets |
| ./script/build_catalog.sh $(RUNTIME_VERSION) -Dcatalog.file=camel-catalog-$(RUNTIME_VERSION)-main.yaml -Dstaging.repo="$(STAGING_RUNTIME_REPO)" |
| ./script/build_catalog.sh $(RUNTIME_VERSION) -Dcatalog.file=camel-catalog-$(RUNTIME_VERSION)-quarkus.yaml -Dcatalog.runtime=quarkus -Dstaging.repo="$(STAGING_RUNTIME_REPO)" |
| ./script/embed_resources.sh deploy |
| |
| bundle-kamelets: |
| ./script/bundle_kamelets.sh $(KAMELET_CATALOG_REPO) $(KAMELET_CATALOG_REPO_BRANCH) |
| |
| build-submodules: |
| ./script/build_submodules.sh |
| |
| build-olm: |
| ./script/build_olm.sh $(VERSION) |
| |
| build-compile-integration-tests: |
| go test -c -tags="integration" ./e2e/common |
| go test -c -tags="integration" ./e2e/knative |
| go test -c -tags="integration" ./e2e/builder |
| |
| clean: |
| # disable gomodules when executing go clean: |
| # |
| # https://github.com/golang/go/issues/31002 |
| # |
| GO111MODULE=off go clean |
| rm -f camel-k |
| rm -f kamel |
| rm -f *.test |
| rm -rf build/_maven_output |
| rm -rf build/_output |
| rm -rf camel-k-client-*.tar.gz |
| rm -rf camel-k-examples-*.tar.gz |
| |
| version: |
| @echo $(VERSION) |
| |
| dep: |
| go mod tidy |
| |
| lint: |
| GOGC=$(LINT_GOGC) golangci-lint run --verbose --deadline $(LINT_DEADLINE) |
| |
| lint-fix: |
| GOGC=$(LINT_GOGC) golangci-lint run --verbose --deadline $(LINT_DEADLINE) --fix |
| |
| |
| check-licenses: |
| ./script/check_licenses.sh |
| |
| images: test |
| mkdir -p build/_maven_output |
| mkdir -p build/_output/bin |
| ifneq ($(shell uname -s 2>/dev/null || echo Unknown),Linux) |
| GOOS=linux go build $(GOFLAGS) -o build/_output/bin/kamel ./cmd/kamel/*.go |
| else |
| cp kamel build/_output/bin |
| endif |
| docker build -t $(IMAGE_NAME):$(VERSION) -f build/Dockerfile . |
| |
| images-dev: test package-artifacts |
| mkdir -p build/_maven_output |
| mkdir -p build/_output/bin |
| ifneq ($(shell uname -s 2>/dev/null || echo Unknown),Linux) |
| GOOS=linux go build $(GOFLAGS) -o build/_output/bin/kamel ./cmd/kamel/*.go |
| else |
| cp kamel build/_output/bin |
| endif |
| docker build -t $(IMAGE_NAME):$(VERSION) -f build/Dockerfile . |
| |
| images-push: |
| docker push $(IMAGE_NAME):$(VERSION) |
| |
| images-push-staging: |
| docker tag $(IMAGE_NAME):$(VERSION) $(STAGING_IMAGE_NAME):$(VERSION) |
| docker push $(STAGING_IMAGE_NAME):$(VERSION) |
| |
| set-version: |
| ./script/set_version.sh $(VERSION) $(IMAGE_NAME) |
| |
| set-module-version: |
| ./script/set_go_modules_version.sh $(VERSION) |
| |
| git-tag: |
| ./script/git_tag.sh $(VERSION) $(RELEASE_GIT_REMOTE) |
| |
| cross-compile: |
| ./script/cross_compile.sh $(VERSION) '$(GOFLAGS)' |
| |
| package-examples: |
| ./script/package_examples.sh $(VERSION) |
| |
| package-artifacts: |
| ./script/package_maven_artifacts.sh $(RUNTIME_VERSION) $(PACKAGE_ARTIFACTS_STRATEGY) $(STAGING_RUNTIME_REPO) |
| |
| unsnapshot-olm: |
| ./script/unsnapshot_olm.sh |
| |
| release: clean codegen set-module-version set-version build-resources check-licenses unsnapshot-olm build images images-push cross-compile package-examples git-tag |
| |
| release-staging: clean codegen set-module-version set-version build-resources check-licenses unsnapshot-olm build images images-push-staging cross-compile package-examples git-tag |
| |
| release-nightly: clean codegen set-module-version set-version build-resources build images images-push cross-compile package-examples |
| |
| release-helm: |
| ./script/release_helm.sh |
| |
| install-crc: |
| ./script/install_crc.sh $(VERSION) |
| install-minishift: |
| ./script/install_minishift.sh |
| install-minikube: |
| ./script/install_minikube.sh |
| |
| release-notes: |
| ./script/gen_release_notes.sh $(LAST_RELEASED_VERSION) $(VERSION) |
| |
| get-staging-repo: |
| @echo $(or ${STAGING_RUNTIME_REPO},https://repository.apache.org/content/repositories/snapshots@id=apache-snapshots@snapshots) |
| |
| get-version: |
| @echo $(VERSION) |
| |
| .PHONY: build build-kamel build-resources build-olm unsnapshot-olm dep codegen images images-dev images-push images-push-staging test check test-integration clean release cross-compile package-examples set-version git-tag release-notes check-licenses generate-deepcopy generate-client generate-doc build-resources release-helm release-staging release-nightly get-staging-repo get-version build-submodules set-module-version bundle-kamelets generate-strimzi |
| |
| # find or download controller-gen |
| # download controller-gen if necessary |
| controller-gen: |
| ifeq (, $(shell which controller-gen)) |
| @{ \ |
| set -e ;\ |
| CONTROLLER_GEN_TMP_DIR=$$(mktemp -d) ;\ |
| cd $$CONTROLLER_GEN_TMP_DIR ;\ |
| go mod init tmp ;\ |
| go get sigs.k8s.io/controller-tools/cmd/controller-gen@v0.3.0 ;\ |
| rm -rf $$CONTROLLER_GEN_TMP_DIR ;\ |
| } |
| CONTROLLER_GEN=$(GOBIN)/controller-gen |
| else |
| CONTROLLER_GEN=$(shell which controller-gen) |
| endif |