
This replaces the gitcommit() shell function with kube::version_ldflags() which prepares a string suitable for Go's -ldflags parameter that fills in the git version fields in pkg/version/base.go. The gitCommit is now a full 40-character SHA1, the gitVersion will be filled from `git describe` output (which will only be available once we have annotated git tags) and gitTreeState will be filled with either "clean" or "dirty" depending on the tree status at the time of the build. Use a kube:: "namespace" (there's really no such a thing in shell, but the illusion still makes it nice) in order to make this nice to import into existing shell scripts or on a shell session. (In the future, I'm planning to introduce more functions and convert some of the top-level commands into other kube::* shell functions.) There's a difference now that -version will report a full SHA1, this will be improved in a follow up change which will improve the Go code for -version handling to give a more meaningful string that should be enough to identify the origin of the binary in git. Tested: - Built it and checked output of -version: $ hack/build-go.sh $ output/go/bin/kubelet -version Kubernetes version 0.1+, build 3ff7ee4b8c843c7767cd856fbf7d3027cd5410e6 - Ran the release script and checked output of the common.sls file: $ release/build-release.sh TESTINSTANCE $ cat output/release/master-release/src/saltbase/pillar/common.sls instance_prefix: TESTINSTANCE-minion go_opt: -ldflags '-X github.com/GoogleCloudPlatform/kubernetes/pkg/version.gitCommit 3ff7ee4b8c843c7767cd856fbf7d3027cd5410e6 -X github.com/GoogleCloudPlatform/kubernetes/pkg/version.gitTreeState clean' - Successful run of hack/e2e-test.sh end-to-end tests. Signed-off-by: Filipe Brandenburger <filbranden@google.com>
52 lines
1.6 KiB
Bash
Executable File
52 lines
1.6 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Copyright 2014 Google Inc. 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.
|
|
|
|
# This script sets up a go workspace locally and builds all go components.
|
|
|
|
set -o errexit
|
|
set -o nounset
|
|
set -o pipefail
|
|
|
|
hackdir=$(CDPATH="" cd $(dirname $0); pwd)
|
|
|
|
# Set the environment variables required by the build.
|
|
. "${hackdir}/config-go.sh"
|
|
|
|
# Go to the top of the tree.
|
|
cd "${KUBE_REPO_ROOT}"
|
|
|
|
# Check for `go` binary and set ${GOPATH}.
|
|
kube::setup_go_environment
|
|
|
|
# Fetch the version.
|
|
version_ldflags=$(kube::version_ldflags)
|
|
|
|
if [[ $# == 0 ]]; then
|
|
# Update $@ with the default list of targets to build.
|
|
set -- cmd/proxy cmd/apiserver cmd/controller-manager cmd/kubelet cmd/kubecfg plugin/cmd/scheduler
|
|
fi
|
|
|
|
binaries=()
|
|
for arg; do
|
|
binaries+=("${KUBE_GO_PACKAGE}/${arg}")
|
|
done
|
|
|
|
# Note that the flags to 'go build' are duplicated in the salt build setup for
|
|
# our cluster deploy. If we add more command line options to our standard build
|
|
# we'll want to duplicate them there. As we move to distributing pre- built
|
|
# binaries we can eliminate this duplication.
|
|
go install -ldflags "${version_ldflags}" "${binaries[@]}"
|