diff --git a/Makefile b/Makefile index 6c023ffa5..aba820c6b 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 000000000..30cfef5a5 --- /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 3f614fcce..4f5ab9bfe 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 84bce786d..f975840ae 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 <