diff --git a/Makefile b/Makefile index 6c023ffa51375e1eadd8c50ba2e9bc8441ebfc5f..aba820c6ba630814a2b8274df019e32e6a520178 100644 --- a/Makefile +++ b/Makefile @@ -12,6 +12,12 @@ # See the License for the specific language governing permissions and # limitations under the License. +GO_DIRS ?= $(shell glide nv -x ) +GO_PKGS ?= $(shell glide nv) + +ROOTFS := rootfs +CLIENT := cmd/helm + .PHONY: info info: $(MAKE) -C $(ROOTFS) $@ @@ -21,11 +27,6 @@ ifndef GOPATH $(error No GOPATH set) endif -GO_DIRS ?= $(shell glide nv -x ) -GO_PKGS ?= $(shell glide nv) - -ROOTFS := rootfs - .PHONY: build build: gocheck @scripts/build-go.sh @@ -55,8 +56,16 @@ quicktest: test-style go test $(GO_PKGS) .PHONY: push -push: build-static - $(MAKE) -C $(ROOTFS) $@ +push: push-server push-client + +.PHONY: push-server +push-server: build-static + $(MAKE) -C $(ROOTFS) push + +.PHONY: push-client +push-client: gocheck + @BUILD_TYPE=CROSS scripts/build-go.sh $(CLIENT) + $(MAKE) -C $(CLIENT) push .PHONY: container container: build-static diff --git a/cmd/helm/Makefile b/cmd/helm/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..30cfef5a582407277b09702b2550c01b8de8173f --- /dev/null +++ b/cmd/helm/Makefile @@ -0,0 +1,39 @@ +# Copyright 2015 The Kubernetes Authors All rights reserved. +# +# 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. + +SHELL := /bin/bash + +GOLANG_CROSSPLATFORMS := darwin/386 darwin/amd64 freebsd/386 freebsd/amd64 freebsd/arm linux/386 linux/amd64 linux/arm windows/386 windows/amd64 + +ROOT_DIR := $(abspath ./../..) +BIN_DIR := $(ROOT_DIR)/bin + +DEFAULT_BUCKET := gs://get-helm +STORAGE_BUCKET ?= $(DEFAULT_BUCKET) + +DEFAULT_TAG := git-$(shell git rev-parse --short HEAD) +TAG ?= $(DEFAULT_TAG) + +all: push + +push: + for platform in ${GOLANG_CROSSPLATFORMS}; do \ + echo $$platform; \ + PLATFORM=$${platform%/*} && ARCH=$${platform##*/} && \ + BINARY=$${PLATFORM}-$${ARCH} && \ + ZIP=${TAG}-helm-$${BINARY}.zip && \ + zip -j $${ZIP} ${BIN_DIR}/$${BINARY}/helm* && \ + gsutil cp $${ZIP} ${STORAGE_BUCKET} && \ + rm $${ZIP} ; \ + done diff --git a/docs/pushing.md b/docs/pushing.md index 3f614fccedba42523be882b70f6313301efc8a37..4f5ab9bfe459c7fc9bdd84e7c35a921593c96ee2 100644 --- a/docs/pushing.md +++ b/docs/pushing.md @@ -1,10 +1,10 @@ -# Pushing DM +# Pushing Helm -This details the requirements and steps for doing a DM push. +This details the requirements and steps for doing a `helm` push. ## Prerequisites -In order to build and push DM, you must: +In order to build and push `helm`, you must: * be an editor or owner on the GCP project `kubernetes-helm` * have `docker` installed and runnable in your current environment @@ -13,17 +13,10 @@ In order to build and push DM, you must: ## Pushing -To build and push the service containers: +To build and push the service containers and the client binaries for all +supported platforms and architectures, checkout the branch and tag you intend to release, +and then run the following: ``` -$ cd ${GOPATH}/src/github.com/kubernetes/helm -$ make push +$ PROJECT=kubernetes-helm make push ``` - -To push the client binaries, run the following for both Mac OS X and Linux -environments: - -``` -$ hack/dm-push.sh -``` - diff --git a/get-install.sh b/get-install.sh index 84bce786da37f8dc29dbfd8fe23d7bc74f946cc8..f975840aee810ebd74e0fcff95919e41b7e78200 100755 --- a/get-install.sh +++ b/get-install.sh @@ -13,15 +13,28 @@ # See the License for the specific language governing permissions and # limitations under the License. +# Run this from the root of your clone of the kubernetes/helm repository. +# Be sure to checkout the release you want to install before running it, +# since it will attempt to pull the version from HEAD on the current branch. + set -euo pipefail -DEFAULT_TAG=v1.2 -DEFAULT_BINARY=${GOPATH}/bin/helm +DEFAULT_TAG=git-$(git rev-parse --short HEAD) DEFAULT_PLATFORM=$(uname | tr '[:upper:]' '[:lower:]') DEFAULT_ARCH=$(uname -m) -STORAGE_URL=http://get-dm.storage.googleapis.com -ZIP=helm-${TAG:-${DEFAULT_TAG}}-${PLATFORM:-${DEFAULT_PLATFORM}}-${ARCH:-${DEFAULT_ARCH}}.zip +if [[ "${DEFAULT_ARCH}" == x86_64 ]]; then + DEFAULT_ARCH=amd64 +fi + +PLATFORM=${PLATFORM:-${DEFAULT_PLATFORM}} +ARCH=${ARCH:-${DEFAULT_ARCH}} +TAG=${TAG:-${DEFAULT_TAG}} + +BINARY=helm-${PLATFORM}-${ARCH} +ZIP=${TAG}-${BINARY}.zip + +STORAGE_URL=http://get-helm.storage.googleapis.com echo "Downloading ${ZIP}..." curl -Ls "${STORAGE_URL}/${ZIP}" -O @@ -35,14 +48,13 @@ cat <<EOF helm is now available in your current directory. -Before using it, please install the Helm service in your +Before using it, please install the Deployment Manager service in your kubernetes cluster by running - $ helm server install +$ ./helm server install To get started, run: - $ helm help +$ ./helm help EOF - diff --git a/hack/dm-push.sh b/hack/dm-push.sh deleted file mode 100755 index bf894612ea0f6f3cbf748bae2d3bd01537a946c8..0000000000000000000000000000000000000000 --- a/hack/dm-push.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/usr/bin/env bash -# -# Copyright 2015 The Kubernetes Authors All rights reserved. -# -# 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. - -# Run this from helm root to build and push the dm client plus -# kubernetes install config into the publicly readable GCS bucket gs://get-dm. -# -# Must have EDIT permissions on the kubernetes-helm GCP project. - -set -euo pipefail - -DEFAULT_TAG=v1.2 -DEFAULT_BINARY=${GOPATH}/bin/dm -DEFAULT_PLATFORM=$(uname | tr '[:upper:]' '[:lower:]') -DEFAULT_ARCH=$(uname -m) - -STORAGE_BUCKET=gs://get-dm -ZIP=dm-${TAG:-DEFAULT_TAG}-${PLATFORM:-DEFAULT_PLATFORM}-${ARCH:-DEFAULT_ARCH}.zip - -echo "Building..." -make - -echo "Zipping ${ZIP}..." -zip -j ${ZIP} ${BINARY:-DEFAULT_BINARY} install.yaml - -echo "Uploading ${ZIP} to ${STORAGE_BUCKET}..." -gsutil cp ${ZIP} ${STORAGE_BUCKET} -rm ${ZIP} - -echo "Done." - diff --git a/rootfs/include.mk b/rootfs/include.mk index dc0c4253d79b5939e541219d451d11d2c90cb600..804c660ce90922831947aa97d3b1effdd1297c32 100644 --- a/rootfs/include.mk +++ b/rootfs/include.mk @@ -14,10 +14,11 @@ # If you update this image please check the tag value before pushing. -DOCKER_REGISTRY ?= gcr.io +DEFAULT_REGISTRY := gcr.io +DOCKER_REGISTRY ?= $(DEFAULT_REGISTRY) -# Legacy support for $PROJECT -DOCKER_PROJECT ?= $(PROJECT) +DEFAULT_PROJECT := kubernetes-helm +DOCKER_PROJECT ?= $(DEFAULT_PROJECT) # Support both local and remote repos, and support no project. ifeq ($(DOCKER_PROJECT),) diff --git a/scripts/common.sh b/scripts/common.sh index 285653999f180d55272c9256f12bf020f416b696..f596fb4012b9f8e17d32b43977c7ce55d5efde9f 100644 --- a/scripts/common.sh +++ b/scripts/common.sh @@ -71,8 +71,8 @@ build_binary_cross() { echo "Building ${target}" gox -verbose \ -ldflags="${LDFLAGS}" \ - -os="linux darwin" \ - -arch="amd64 386" \ + -os="linux darwin freebsd windows" \ + -arch="amd64 386 arm" \ -output="bin/{{.OS}}-{{.Arch}}/{{.Dir}}" \ "${REPO}/${target}" }