Commit Graph

115 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
Clayton Coleman
9006eadcfe kube-proxy can read config from the apiserver
All clients that talk to a "master" as a host:port or URL
(scheme://host:port) parameter.  Add tests.
2014-08-27 15:49:01 -04:00
Filipe Brandenburger
b777eb19e2 Add additional ldflags constants for Kubernetes versioning
Now it is possible to push these variables through ldflags:
- gitMajor
- gitMinor
- gitVersion (from latest annotated tag, output of git describe)
- gitCommit (renamed commitFromGit, intended to have the full sha1)
- gitTreeState (either "clean" or "dirty")

These are spawned into its separate source file, since they are meant to
be updated separately when a new version is released.

Also use the notation vX.Y+ for when git information is not present.
(This is consistent with the kernel build, e.g. Linux 3.15+ means its
version is >= 3.15 and < 3.16.)

v2: Added comments to the individual fields in pkg/version/base.go

Tested:
- Built it and checked the -version output:
  $ hack/build-go.sh
  $ output/go/bin/kubelet -version
  Kubernetes version 0.1+, build c328679ef8aa

Signed-off-by: Filipe Brandenburger <filbranden@google.com>
2014-08-27 10:06:22 -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
Daniel Smith
4d232cfee2 Merge pull request #1046 from ghodss/start-etcd-local-up-cluster
Modify hack/local-up-cluster.sh to use start_etcd function
2014-08-26 17:33:35 -07:00
Sam Ghods
242e1f9690 Modify hack/local-up-cluster.sh to use start_etcd function 2014-08-26 16:57:36 -07:00
Joe Beda
5722eba780 Propagate version info into salt config and use to build.
Fixes #1043.
2014-08-26 16:17:06 -07:00
Joe Beda
bce7a4bd90 Merge pull request #1014 from smarterclayton/set_commit_with_ldflags
Use -ldflags to set git commit version
2014-08-26 10:56:56 -07:00
Clayton Coleman
9336373857 Use -ldflags to set git commit version 2014-08-25 16:40:47 -04:00
Daniel Smith
12af8a2161 Merge pull request #1008 from MSOpenTech/azure-fix
Refactor Azure deploy scripts
2014-08-25 11:45:33 -07:00
Clayton Coleman
b037989478 Add an integration test for etcd 2014-08-23 11:44:21 -04:00
Clayton Coleman
8a677b1226 Rename integration-test and update README 2014-08-23 11:44:21 -04:00
Jeff Mendoza
d8d09ace41 Refactor Azure deploy scripts.
Refactored to work with cluster/* scripts which require
actions to be defined as methods in cluster/azure/util.sh
2014-08-22 15:48:06 -07:00
Clayton Coleman
1c68247954 Merge pull request #909 from lavalamp/scheduler3
Scheduler plugin v1
2014-08-21 19:04:51 -04:00
Brendan Burns
0c1b89c7f2 Add some extra debugging, and a sleep to attempt to deflake the update test. 2014-08-20 22:28:54 -07:00
Tim Hockin
5f21ff5b45 Whitespace 2014-08-20 20:17:16 -07:00
Daniel Smith
dddad888b5 Begin scheduler plugin 2014-08-20 15:32:49 -07:00
Brendan Burns
0adde96bba Update e2e scripts to use the -template parameter.
Add a script for the update demo.
2014-08-20 12:24:39 -07:00
brendandburns
6c9fda472d Merge pull request #952 from smarterclayton/let_timeout_be_overriden
Let coverage and timeout be overriden in hack/test-go.sh
2014-08-19 09:36:04 -07:00
Clayton Coleman
d573d81306 Let coverage and timeout be overriden in hack/test-go.sh
As usual, shell review / test gratefully accepted.  Tested on OSX and
F20
2014-08-19 01:13:03 -04:00
Joe Beda
617e5c72af Improve documentation and checks for godep 2014-08-18 15:34:00 -07:00
Daniel Smith
a753372948 Merge pull request #922 from brendandburns/godep
Add a better error message if godep isn't in the path.
2014-08-18 09:37:56 -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
derekwaynecarr
8c07a0f524 Fix verify-boilerplate 2014-08-15 13:12:01 -05:00
Joe Beda
629f964791 Fix e2e teardown 2014-08-14 13:57:50 -07:00
Brendan Burns
9f49650fba Add a tear down option to the e2e, that just tears down the cluster
Useful for cleaning state after failed runs.
2014-08-14 09:58:40 -07:00
Nan Monnand Deng
eb462eba06 changed scripts to use godep 2014-08-13 15:02:14 -04:00
Daniel Smith
713a9488a2 Fix verification scripts to actually look at all go files. 2014-08-12 17:47:59 -07:00
csrwng
c65470583e Remove etcd servers flag from controller manager in local-up-cluster 2014-08-07 10:02:15 -04:00
Tim Hockin
812d651b1b Call build-go.sh before bundling a release
Now the dev-build-and-* scripts actually work.
2014-08-04 13:58:32 -07:00
Clayton Coleman
67166e581b Run all go tests in parallel (6x speedup)
Currently hack/test-go.sh runs in serial in independent executions of
go test.  By running all tests at once, we get parallel execution.
However, we cannot use -coverprofile with this mode, which seems worthwhile.

On a 4-core mac, runs tests in 15s that ran in 80s before. Tested on F20 and
OSX Mavericks.
2014-08-04 13:39:34 -04:00
brendandburns
6564f14ac4 Merge pull request #704 from derekwaynecarr/issue_603
Improve testing reliability
2014-08-04 09:11:57 -07: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
Filipe Brandenburger
de405ac126 Improve generation of version information from the git tree
Detect whether the tree is dirty and append a "-dirty" indication to the
git commit (common practice with other repos, e.g. kernel, docker.)

Properly handle the case where a git tree is not found (e.g. building
from archive.)

In the sed expression, look for the variable to be updated
(commitFromGit) instead of hardcoding a line number.

Tested:

- Built from a dirty tree:
    $ output/go/bin/kubelet -version
    Kubernetes version 0.1, build 2d784c684c75-dirty

- Built from a clean tree:
    $ output/go/bin/kubelet -version
    Kubernetes version 0.1, build 505f23a31172

- Built from an archive:
    $ hack/build-go.sh
    WARNING: unable to find git commit, falling back to commitFromGit = `(none)`
    $ output/go/bin/kubelet -version
    Kubernetes version 0.1, build (none)

Signed-off-by: Filipe Brandenburger <filbranden@google.com>
2014-07-30 18:48:57 -07:00
Filipe Brandenburger
7e56609139 Handle -version flag on all commands
Tested: Passed -version argument to kubelet (and all other binaries):
  $ output/go/bin/kubecfg -version
  Kubernetes version 0.1, build 6454a541fd56

Signed-off-by: Filipe Brandenburger <filbranden@google.com>
2014-07-30 18:48:56 -07:00
derekwaynecarr
10e8c43f46 Improve testing reliability 2014-07-30 16:34:48 -04:00
Daniel Smith
3b8488028d Add /version to server and check it in client.
Will help detect client/version skew and prevent e2e test from passing
while running a version other than the one you think it's running.
2014-07-28 15:45:25 -07:00
Brendan Burns
d898fb46cd Exit if release.sh has errors. 2014-07-28 15:24:07 -07:00
brendandburns
1d4ed339c9 Merge pull request #664 from smarterclayton/remove_integration_from_build-go
Remove cmd/integration from hack/build-go.sh
2014-07-28 14:49:31 -07:00
Clayton Coleman
f9b6248f26 Travis should test that build-go.sh generated something
Add a new hack/test-cmd.sh that tries to use the generated
executables in a meaningful way.  It does not require Docker
so as to be runnable in Travis
2014-07-28 15:23:17 -04:00
Clayton Coleman
34c1ad2a07 Remove cmd/integration from hack/build-go.sh
Covered by hack/integration-test.sh in travis
2014-07-28 14:46:28 -04:00
brendandburns
616398987a Merge pull request #643 from zhgwenming/build
Use 'go install' instead of 'go build' to generate all commands at the same time.
2014-07-28 11:44:05 -07:00
brendandburns
d558a93a98 Merge pull request #651 from smarterclayton/allow_api_port_to_change
Allow API_{PORT,HOST} to be changed via hack/local-up
2014-07-28 10:47:39 -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
Clayton Coleman
7a63b53ee2 Allow API_PORT to be changed via hack/local-up 2014-07-27 15:38:12 -04:00
Brendan Burns
ea15e6709c Add a sanity check for running etcd servers to the integration test script. 2014-07-26 22:31:30 -07:00
Kelsey Hightower
124b0e7ee6 Fix hack/build-go.sh to work on all platforms
Currently the hack/build-go.sh build script does not work
on OS X 10.9.x systems. This changes reverts back to building
one binary via a for loop.
2014-07-26 15:28:48 -07:00
brendandburns
25150947c8 Merge pull request #626 from smarterclayton/speed_up_build
Build all commands at the same time
2014-07-25 12:57:25 -07:00