Commit Graph

21 Commits

Author SHA1 Message Date
Filipe Brandenburger
e33d4678e6 Fix line 55: ldflags[*]: unbound variable
This is caused by bash thinking that an empty array is the same as an
undefined variable and `set -o nounset` treating that as an error.

Fix that by using an empty string as the default for the expansion.

Fixes PR #1069 (6e25f60288).

Tested:
- Before this patch:
  $ mv .git .gitbackup
  $ hack/build-go.sh
  /home/filbranden/devel/kubernetes/hack/config-go.sh: line 55: ldflags[*]: unbound variable

- After this patch:
  $ mv .git .gitbackup
  $ rm -rf output/
  $ hack/build-go.sh
  $ output/go/bin/kubelet -version
  Kubernetes version 0.1+, build (unknown)

Signed-off-by: Filipe Brandenburger <filbranden@google.com>
2014-08-27 19:04:48 -07:00
Filipe Brandenburger
bf9113ea2e Grab complete version information from git
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>
2014-08-27 17:36:04 -07:00
Filipe Brandenburger
6e25f60288 Move go detection and environment setup into its own function
This way hack/config-go.sh can be used in environments where Go is not
available, such as running release/build-release.sh for Vagrant.

(The intention is to make config-go.sh a general library of helper
functions and import it from most other shell scripts.)

Fixes Issue #1057.

Tested:
- Built it and made sure it works.
  $ hack/build-go.sh
  $ output/go/bin/kubelet -version
  Kubernetes version 0.1+, build 0766e7a411c7-dirty

- Ran unit tests.
  $ hack/test-go.sh
  ok      github.com/GoogleCloudPlatform/kubernetes/examples      1.105s  coverage: 0.0% of statements
  ok      github.com/GoogleCloudPlatform/kubernetes/pkg/api       6.188s  coverage: 86.1% of statements
  ok      github.com/GoogleCloudPlatform/kubernetes/pkg/api/errors        1.015s  coverage: 81.8% of statements
  ok      github.com/GoogleCloudPlatform/kubernetes/pkg/apiserver 1.806s  coverage: 85.1% of statements
  ok      github.com/GoogleCloudPlatform/kubernetes/pkg/client    1.211s  coverage: 67.2% of statements
  ok      github.com/GoogleCloudPlatform/kubernetes/pkg/client/cache      1.115s  coverage: 95.5% of statements
  ok      github.com/GoogleCloudPlatform/kubernetes/pkg/cloudprovider/gce 1.052s  coverage: 7.3% of statements
  ok      github.com/GoogleCloudPlatform/kubernetes/pkg/cloudprovider/vagrant     1.045s  coverage: 76.8% of statements
  ok      github.com/GoogleCloudPlatform/kubernetes/pkg/constraint        1.038s  coverage: 100.0% of statements
  ok      github.com/GoogleCloudPlatform/kubernetes/pkg/controller        1.559s  coverage: 78.8% of statements
  ok      github.com/GoogleCloudPlatform/kubernetes/pkg/conversion        3.440s  coverage: 72.4% of statements
  ok      github.com/GoogleCloudPlatform/kubernetes/pkg/election  1.034s  coverage: 71.4% of statements
  ok      github.com/GoogleCloudPlatform/kubernetes/pkg/health    1.043s  coverage: 94.5% of statements
  ok      github.com/GoogleCloudPlatform/kubernetes/pkg/healthz   1.034s  coverage: 100.0% of statements
  ok      github.com/GoogleCloudPlatform/kubernetes/pkg/httplog   1.027s  coverage: 82.4% of statements
  ok      github.com/GoogleCloudPlatform/kubernetes/pkg/kubecfg   6.081s  coverage: 58.5% of statements
  ok      github.com/GoogleCloudPlatform/kubernetes/pkg/kubelet   1.400s  coverage: 72.2% of statements
  ok      github.com/GoogleCloudPlatform/kubernetes/pkg/kubelet/config    1.139s  coverage: 90.1% of statements
  ok      github.com/GoogleCloudPlatform/kubernetes/pkg/labels    1.041s  coverage: 98.7% of statements
  ok      github.com/GoogleCloudPlatform/kubernetes/pkg/master    1.033s  coverage: 33.3% of statements
  ok      github.com/GoogleCloudPlatform/kubernetes/pkg/proxy     1.095s  coverage: 86.5% of statements
  ok      github.com/GoogleCloudPlatform/kubernetes/pkg/proxy/config      1.038s  coverage: 39.2% of statements
  ok      github.com/GoogleCloudPlatform/kubernetes/pkg/registry/binding  1.046s  coverage: 100.0% of statements
  ok      github.com/GoogleCloudPlatform/kubernetes/pkg/registry/controller       1.039s  coverage: 43.6% of statements
  ok      github.com/GoogleCloudPlatform/kubernetes/pkg/registry/endpoint 1.029s  coverage: 25.0% of statements
  ok      github.com/GoogleCloudPlatform/kubernetes/pkg/registry/etcd     1.110s  coverage: 79.5% of statements
  ok      github.com/GoogleCloudPlatform/kubernetes/pkg/registry/minion   1.048s  coverage: 72.3% of statements
  ok      github.com/GoogleCloudPlatform/kubernetes/pkg/registry/pod      1.052s  coverage: 62.1% of statements
  ok      github.com/GoogleCloudPlatform/kubernetes/pkg/registry/service  1.054s  coverage: 80.0% of statements
  ok      github.com/GoogleCloudPlatform/kubernetes/pkg/scheduler 1.030s  coverage: 90.4% of statements
  ok      github.com/GoogleCloudPlatform/kubernetes/pkg/service   1.363s  coverage: 83.8% of statements
  ok      github.com/GoogleCloudPlatform/kubernetes/pkg/tools     1.136s  coverage: 81.9% of statements
  ok      github.com/GoogleCloudPlatform/kubernetes/pkg/util      1.049s  coverage: 83.9% of statements
  ok      github.com/GoogleCloudPlatform/kubernetes/pkg/util/config       1.036s  coverage: 92.9% of statements
  ok      github.com/GoogleCloudPlatform/kubernetes/pkg/util/wait 1.029s  coverage: 86.7% of statements
  ok      github.com/GoogleCloudPlatform/kubernetes/pkg/volume    1.032s  coverage: 83.3% of statements
  ok      github.com/GoogleCloudPlatform/kubernetes/pkg/watch     1.040s  coverage: 100.0% of statements
  ok      github.com/GoogleCloudPlatform/kubernetes/plugin/pkg/scheduler  1.026s  coverage: 90.9% of statements
  ok      github.com/GoogleCloudPlatform/kubernetes/plugin/pkg/scheduler/factory  1.075s  coverage: 85.4% of statements
  ?       github.com/GoogleCloudPlatform/kubernetes/test/integration      [no test files]

- Ran release/build-release.sh without go or godep in my $PATH.
  $ PATH=...
  $ which go
  $ which godep
  $ release/build-release.sh MYTEST
  Building release tree
  ~/devel/kubernetes ~/devel/kubernetes
  ~/devel/kubernetes
  Packaging release
  $ cat output/release/master-release/src/saltbase/pillar/common.sls
  instance_prefix: MYTEST-minion
  go_opt: -ldflags "-X
  github.com/GoogleCloudPlatform/kubernetes/pkg/version.gitCommit '0766e7a411c7-dirty'"
  $ find output/release/master-release/ | wc -l
  598

Signed-off-by: Filipe Brandenburger <filbranden@google.com>
2014-08-27 17:04:19 -07:00
Filipe Brandenburger
7785f14b32 Fix gitcommit() in hack/config-go.sh
Previously it would only print a version when the tree was dirty. Fix it
so that it will also print one on a clean tree.

Tested:
- Built it from a committed tree:
  $ hack/build-go.sh
  $ output/go/bin/kubelet -version
  Kubernetes version 0.1, build a091590dd10c

Signed-off-by: Filipe Brandenburger <filbranden@google.com>
2014-08-27 09:16:35 -07:00
Clayton Coleman
9336373857 Use -ldflags to set git commit version 2014-08-25 16:40:47 -04:00
Joe Beda
617e5c72af Improve documentation and checks for godep 2014-08-18 15:34:00 -07:00
Brendan Burns
ff5ca94aa0 Add a better error message if godep isn't in the path. 2014-08-15 20:44:29 -07:00
Nan Monnand Deng
eb462eba06 changed scripts to use godep 2014-08-13 15:02:14 -04:00
Filipe Brandenburger
d00e08bb5f Fix shell script quoting, clean up build scripts
Fix quoting so that it works with arbitrary path names (e.g. containing
spaces.)  Make hack/config-go.sh non-executable since it is meant for
sourcing and not as a standalone.

Tested:
- Checked out the tree to a directory with spaces, called the
  build script from outside the tree, confirmed it worked as expected.
- Confirmed binaries work by running them with -version.
- Ran hack/build-go.sh cmd/kubecfg and confirmed only kubecfg was built.
- Ran hack/build-go.sh cmd/integration and confirmed it was built.
- Checked it out on a Mac and confirmed that the build script works.
- Confirmed that hack/test-go.sh and hack/test-cmd.sh work.

Signed-off-by: Filipe Brandenburger <filbranden@google.com>
2014-08-01 08:23:16 -07:00
Albert Zhang
0375709fa3 Use 'go install' to build all commands at the same time.
'go build' compiles the packages but discards the results if multiple packages specified.
2014-07-27 22:20:13 -04:00
Albert Zhang
23e9c39a96 make build script works on os x if the current dir is not the kubernetes root 2014-07-13 18:47:52 +08:00
Brendan Burns
96187c10f0 Fix build script for os x. 2014-07-12 21:46:28 -07:00
Kouhei Ueno
663b80b6a3 make hack/config-go.sh sourceable from zsh 2014-07-12 15:37:24 +09:00
Daniel Smith
260af3017b Make boilerplate hook work for .sh files, too. 2014-06-25 17:11:48 -07:00
brendandburns
e6b8555ba8 Add quotes around ${TRAVIS}. 2014-06-18 13:59:03 -07:00
Brendan Burns
35bf0fc0b7 Add a version check for go. 2014-06-18 13:38:29 -07:00
Brendan Burns
5f66d33880 Add load balancing support to services. 2014-06-17 21:28:20 -07:00
Joe Beda
d230625e1a Move third_party code under third_party/src so it can be used in $GOPATH. 2014-06-13 17:15:49 -07:00
Brendan Burns
bdbd79bf0a fix up whitespace. 2014-06-06 23:42:14 -07:00
Brendan Burns
f833d9a594 Add a error if go isn't present on the system. 2014-06-06 23:42:13 -07:00
Joe Beda
894a7e3282 Move everything out of src and reorganize scripts.
Fixed up some scripts to be more robust.  Changed the e2e test setup to use g1-small instances.  Fixed up documentation to reflect the new script locations.  Disabled the "curl | bash" cluster launch as it hasn't been well tested and doesn't include the cloudcfg tool yet.
2014-06-06 21:41:19 -07:00