Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Breaking Change] Multiple port support for GameServer #283

Merged
merged 1 commit into from
Jul 11, 2018

Conversation

markmandel
Copy link
Member

This allows the GameServer (and anything that uses it as a template, such as Fleets), to provide configuration and assignment of multiple ports to the game server container.

For example:

apiVersion: "stable.agones.dev/v1alpha1"
kind: GameServer
metadata:
  name: "simple-udp"
spec:
  ports:
  - name: default
    portPolicy: "dynamic"
    containerPort: 7654
  template:
    spec:
      containers:
      - name: simple-udp
        image: gcr.io/agones-images/udp-server:0.1

This also includes update to documentation - but in a separate bottom section of each document, to allow for moving into the live version at release time. (This is becoming a mess - a website can't come soon enough).

This also adjusts the GameServer > Status, to be able to handle multiple ports. It now looks like this:

Status:
  Address:    192.168.99.100
  Node Name:  agones
  Ports:
    Name:  default
    Port:  7502
  State:   Ready

While this a breaking change (due to the change in GameServer > status, the previous legacy configuration of still works (even thought it's no longer documented), as it is automatically converted to the new version.

Plans are to remove this legacy conversion functionality in 0.4.0, since being in alpha, we have a very low commitment to backward compatibility.

As an aside - versioning for CRDs is coming soon, so this will also solve this type of problem long term.

@markmandel markmandel added kind/feature New features for Agones area/user-experience Pertaining to developers trying to use Agones, e.g. SDK, installation, etc labels Jul 9, 2018
@markmandel markmandel added this to the 0.3.0 milestone Jul 9, 2018
@agones-bot
Copy link
Collaborator

Build Failed 😱

Build Id: 9cb52fe1-7640-4148-9ccd-c5c81fe9b309

Build Logs
starting build "9cb52fe1-7640-4148-9ccd-c5c81fe9b309"

FETCHSOURCE
Initialized empty Git repository in /workspace/.git/
From https://source.developers.google.com/p/agones-images/r/agones
 * branch            43275020e3acc072442f3b3f06a033525b52ef24 -> FETCH_HEAD
HEAD is now at 4327502 [Breaking Change] Multiple port support for `GameServer`
BUILD
Starting Step #0
Step #0: Already have image (with digest): ubuntu
Finished Step #0
Starting Step #1
Step #1: Already have image (with digest): gcr.io/cloud-builders/docker
Step #1: Sending build context to Docker daemon    110MB

Step #1: Step 1/3 : FROM gcr.io/cloud-builders/docker
Step #1:  ---> 4eaed26f4dfb
Step #1: Step 2/3 : RUN apt-get install make
Step #1:  ---> Running in e7d09221db12
Step #1: Reading package lists...
Step #1: Building dependency tree...
Step #1: Reading state information...
Step #1: make is already the newest version (4.1-6).
Step #1: 0 upgraded, 0 newly installed, 0 to remove and 8 not upgraded.
Step #1: Removing intermediate container e7d09221db12
Step #1:  ---> e6414054c25b
Step #1: Step 3/3 : ENTRYPOINT ["/usr/bin/make"]
Step #1:  ---> Running in 5347a25aeb5a
Step #1: Removing intermediate container 5347a25aeb5a
Step #1:  ---> 35ef64f85812
Step #1: Successfully built 35ef64f85812
Step #1: Successfully tagged make-docker:latest
Finished Step #1
Starting Step #2 - "pull-build-image"
Step #2 - "pull-build-image": Already have image: make-docker
Step #2 - "pull-build-image": docker pull gcr.io/agones-images/agones-build:7baad3fcaa && docker tag gcr.io/agones-images/agones-build:7baad3fcaa agones-build:7baad3fcaa
Step #2 - "pull-build-image": 7baad3fcaa: Pulling from agones-images/agones-build
Step #2 - "pull-build-image": cc1a78bfd46b: Pulling fs layer
Step #2 - "pull-build-image": 65ec5fb8fee4: Pulling fs layer
Step #2 - "pull-build-image": f792a8d67267: Pulling fs layer
Step #2 - "pull-build-image": c61ddf10ea29: Pulling fs layer
Step #2 - "pull-build-image": f11e4b9dca6d: Pulling fs layer
Step #2 - "pull-build-image": f5de62cd774a: Pulling fs layer
Step #2 - "pull-build-image": 84fd27122697: Pulling fs layer
Step #2 - "pull-build-image": 0c424a61cc39: Pulling fs layer
Step #2 - "pull-build-image": b5bfc6f2e8cf: Pulling fs layer
Step #2 - "pull-build-image": 3b2702a6ad68: Pulling fs layer
Step #2 - "pull-build-image": 5ab6afc7d65b: Pulling fs layer
Step #2 - "pull-build-image": 24f531f817dd: Pulling fs layer
Step #2 - "pull-build-image": 438f29967585: Pulling fs layer
Step #2 - "pull-build-image": 84919d2a889b: Pulling fs layer
Step #2 - "pull-build-image": 8e059271ff11: Pulling fs layer
Step #2 - "pull-build-image": 84fd27122697: Waiting
Step #2 - "pull-build-image": 6f621b6c2140: Pulling fs layer
Step #2 - "pull-build-image": 2cc115bfdcc4: Pulling fs layer
Step #2 - "pull-build-image": c83e29de64eb: Pulling fs layer
Step #2 - "pull-build-image": b5bfc6f2e8cf: Waiting
Step #2 - "pull-build-image": 67b0b15947b1: Pulling fs layer
Step #2 - "pull-build-image": 88d3d110e8a5: Pulling fs layer
Step #2 - "pull-build-image": 3b2702a6ad68: Waiting
Step #2 - "pull-build-image": 0c424a61cc39: Waiting
Step #2 - "pull-build-image": 84919d2a889b: Waiting
Step #2 - "pull-build-image": 5ab6afc7d65b: Waiting
Step #2 - "pull-build-image": 8e059271ff11: Waiting
Step #2 - "pull-build-image": 24f531f817dd: Waiting
Step #2 - "pull-build-image": 6f621b6c2140: Waiting
Step #2 - "pull-build-image": c61ddf10ea29: Waiting
Step #2 - "pull-build-image": 438f29967585: Waiting
Step #2 - "pull-build-image": 2cc115bfdcc4: Waiting
Step #2 - "pull-build-image": c83e29de64eb: Waiting
Step #2 - "pull-build-image": 88d3d110e8a5: Waiting
Step #2 - "pull-build-image": 67b0b15947b1: Waiting
Step #2 - "pull-build-image": f11e4b9dca6d: Waiting
Step #2 - "pull-build-image": f5de62cd774a: Waiting
Step #2 - "pull-build-image": cc1a78bfd46b: Verifying Checksum
Step #2 - "pull-build-image": cc1a78bfd46b: Download complete
Step #2 - "pull-build-image": c61ddf10ea29: Verifying Checksum
Step #2 - "pull-build-image": c61ddf10ea29: Download complete
Step #2 - "pull-build-image": 65ec5fb8fee4: Verifying Checksum
Step #2 - "pull-build-image": 65ec5fb8fee4: Download complete
Step #2 - "pull-build-image": f5de62cd774a: Verifying Checksum
Step #2 - "pull-build-image": f5de62cd774a: Download complete
Step #2 - "pull-build-image": f11e4b9dca6d: Verifying Checksum
Step #2 - "pull-build-image": f11e4b9dca6d: Download complete
Step #2 - "pull-build-image": 0c424a61cc39: Verifying Checksum
Step #2 - "pull-build-image": 0c424a61cc39: Download complete
Step #2 - "pull-build-image": b5bfc6f2e8cf: Verifying Checksum
Step #2 - "pull-build-image": b5bfc6f2e8cf: Download complete
Step #2 - "pull-build-image": 3b2702a6ad68: Verifying Checksum
Step #2 - "pull-build-image": 3b2702a6ad68: Download complete
Step #2 - "pull-build-image": 84fd27122697: Download complete
Step #2 - "pull-build-image": 5ab6afc7d65b: Verifying Checksum
Step #2 - "pull-build-image": 5ab6afc7d65b: Download complete
Step #2 - "pull-build-image": 24f531f817dd: Verifying Checksum
Step #2 - "pull-build-image": 24f531f817dd: Download complete
Step #2 - "pull-build-image": 438f29967585: Verifying Checksum
Step #2 - "pull-build-image": 438f29967585: Download complete
Step #2 - "pull-build-image": f792a8d67267: Verifying Checksum
Step #2 - "pull-build-image": f792a8d67267: Download complete
Step #2 - "pull-build-image": 6f621b6c2140: Verifying Checksum
Step #2 - "pull-build-image": 6f621b6c2140: Download complete
Step #2 - "pull-build-image": 2cc115bfdcc4: Download complete
Step #2 - "pull-build-image": c83e29de64eb: Verifying Checksum
Step #2 - "pull-build-image": c83e29de64eb: Download complete
Step #2 - "pull-build-image": 67b0b15947b1: Verifying Checksum
Step #2 - "pull-build-image": 67b0b15947b1: Download complete
Step #2 - "pull-build-image": cc1a78bfd46b: Pull complete
Step #2 - "pull-build-image": 88d3d110e8a5: Verifying Checksum
Step #2 - "pull-build-image": 88d3d110e8a5: Download complete
Step #2 - "pull-build-image": 8e059271ff11: Verifying Checksum
Step #2 - "pull-build-image": 8e059271ff11: Download complete
Step #2 - "pull-build-image": 84919d2a889b: Verifying Checksum
Step #2 - "pull-build-image": 84919d2a889b: Download complete
Step #2 - "pull-build-image": 65ec5fb8fee4: Pull complete
Step #2 - "pull-build-image": f792a8d67267: Pull complete
Step #2 - "pull-build-image": c61ddf10ea29: Pull complete
Step #2 - "pull-build-image": f11e4b9dca6d: Pull complete
Step #2 - "pull-build-image": f5de62cd774a: Pull complete
Step #2 - "pull-build-image": 84fd27122697: Pull complete
Step #2 - "pull-build-image": 0c424a61cc39: Pull complete
Step #2 - "pull-build-image": b5bfc6f2e8cf: Pull complete
Step #2 - "pull-build-image": 3b2702a6ad68: Pull complete
Step #2 - "pull-build-image": 5ab6afc7d65b: Pull complete
Step #2 - "pull-build-image": 24f531f817dd: Pull complete
Step #2 - "pull-build-image": 438f29967585: Pull complete
Step #2 - "pull-build-image": 84919d2a889b: Pull complete
Step #2 - "pull-build-image": 8e059271ff11: Pull complete
Step #2 - "pull-build-image": 6f621b6c2140: Pull complete
Step #2 - "pull-build-image": 2cc115bfdcc4: Pull complete
Step #2 - "pull-build-image": c83e29de64eb: Pull complete
Step #2 - "pull-build-image": 67b0b15947b1: Pull complete
Step #2 - "pull-build-image": 88d3d110e8a5: Pull complete
Step #2 - "pull-build-image": Digest: sha256:3b0633d147975b433dda6e16d40c801c793181fc0f7d9d3f704479605690080f
Step #2 - "pull-build-image": Status: Downloaded newer image for gcr.io/agones-images/agones-build:7baad3fcaa
Finished Step #2 - "pull-build-image"
Starting Step #3 - "tests"
Starting Step #4 - "build"
Step #3 - "tests": Already have image: make-docker
Step #4 - "build": Already have image: make-docker
Step #3 - "tests": mkdir -p ~/.kube
Step #3 - "tests": mkdir -p /workspace/build//.config/gcloud
Step #4 - "build": mkdir -p ~/.kube
Step #4 - "build": mkdir -p /workspace/build//.config/gcloud
Step #3 - "tests": docker run --rm -v /workspace/build//.config/gcloud:/root/.config/gcloud -v ~/.kube:/root/.kube -v /workspace:/go/src/agones.dev/agones -w /go/src/agones.dev/agones  agones-build:7baad3fcaa bash -c \
Step #3 - "tests": 	"/root/gen-lint-exclude.sh && gometalinter --config .exclude.gometalinter.json --deadline=15m -t --skip vendor ./..."
Step #4 - "build": docker run --rm -e "CGO_ENABLED=0" -v /workspace/build//.config/gcloud:/root/.config/gcloud -v ~/.kube:/root/.kube -v /workspace:/go/src/agones.dev/agones agones-build:7baad3fcaa go build \
Step #4 - "build": 	-o /go/src/agones.dev/agones/cmd/controller/bin/controller -a -ldflags "-X agones.dev/agones/pkg.Version=0.3.0-4327502" -installsuffix cgo agones.dev/agones/cmd/controller
Step #4 - "build": docker build /workspace/cmd/controller/ --tag=gcr.io/agones-images/agones-controller:0.3.0-4327502 
Step #4 - "build": Sending build context to Docker daemon  41.72MB

Step #4 - "build": Step 1/6 : FROM alpine:3.7
Step #4 - "build": 3.7: Pulling from library/alpine
Step #4 - "build": 911c6d0c7995: Already exists
Step #4 - "build": Digest: sha256:5ce5f501c457015c4b91f91a15ac69157d9b06f1a75cf9107bf2b62e0843983a
Step #4 - "build": Status: Downloaded newer image for alpine:3.7
Step #4 - "build":  ---> 791c3e2ebfcb
Step #4 - "build": Step 2/6 : RUN apk --update add ca-certificates &&     adduser -D agones
Step #4 - "build":  ---> Running in 1684dfcc7d89
Step #4 - "build": fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/main/x86_64/APKINDEX.tar.gz
Step #4 - "build": fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/community/x86_64/APKINDEX.tar.gz
Step #4 - "build": (1/1) Installing ca-certificates (20171114-r0)
Step #4 - "build": Executing busybox-1.27.2-r11.trigger
Step #4 - "build": Executing ca-certificates-20171114-r0.trigger
Step #4 - "build": OK: 5 MiB in 14 packages
Step #4 - "build": Removing intermediate container 1684dfcc7d89
Step #4 - "build":  ---> 238915a070ed
Step #4 - "build": Step 3/6 : COPY ./bin/controller /home/agones/controller
Step #4 - "build":  ---> a514b6d99796
Step #4 - "build": Step 4/6 : RUN chown -R agones /home/agones &&     chmod o+x /home/agones/controller
Step #4 - "build":  ---> Running in 83dce708f50d
Step #4 - "build": Removing intermediate container 83dce708f50d
Step #4 - "build":  ---> 866936f36100
Step #4 - "build": Step 5/6 : USER agones
Step #4 - "build":  ---> Running in c27d9b999861
Step #4 - "build": Removing intermediate container c27d9b999861
Step #4 - "build":  ---> 29c629f5d355
Step #4 - "build": Step 6/6 : ENTRYPOINT ["/home/agones/controller"]
Step #4 - "build":  ---> Running in 726b20b0ace0
Step #4 - "build": Removing intermediate container 726b20b0ace0
Step #4 - "build":  ---> b8fed27ae748
Step #4 - "build": Successfully built b8fed27ae748
Step #4 - "build": Successfully tagged gcr.io/agones-images/agones-controller:0.3.0-4327502
Step #4 - "build": docker run --rm -e "CGO_ENABLED=0" -v /workspace/build//.config/gcloud:/root/.config/gcloud -v ~/.kube:/root/.kube -v /workspace:/go/src/agones.dev/agones agones-build:7baad3fcaa go build \
Step #4 - "build": 	-o /go/src/agones.dev/agones/cmd/sdk-server/bin/sdk-server.linux.amd64 -a -ldflags "-X agones.dev/agones/pkg.Version=0.3.0-4327502" -installsuffix cgo agones.dev/agones/cmd/sdk-server
Step #4 - "build": docker run --rm -e "GOOS=darwin" -e "GOARCH=amd64" -v /workspace/build//.config/gcloud:/root/.config/gcloud -v ~/.kube:/root/.kube -v /workspace:/go/src/agones.dev/agones agones-build:7baad3fcaa go build \
Step #4 - "build": 	-o /go/src/agones.dev/agones/cmd/sdk-server/bin/sdk-server.darwin.amd64 -ldflags "-X agones.dev/agones/pkg.Version=0.3.0-4327502" agones.dev/agones/cmd/sdk-server
Step #3 - "tests": docker run --rm -v /workspace/build//.config/gcloud:/root/.config/gcloud -v ~/.kube:/root/.kube -v /workspace:/go/src/agones.dev/agones agones-build:7baad3fcaa go test -race agones.dev/agones/...
Step #3 - "tests": warning: ignoring symlink /go/src/agones.dev/agones/vendor/github.com/prometheus/procfs/fixtures/self
Step #3 - "tests": ?   	agones.dev/agones	[no test files]
Step #4 - "build": docker run --rm -e "GOOS=windows" -e "GOARCH=amd64" -v /workspace/build//.config/gcloud:/root/.config/gcloud -v ~/.kube:/root/.kube -v /workspace:/go/src/agones.dev/agones agones-build:7baad3fcaa go build \
Step #4 - "build": 	-o /go/src/agones.dev/agones/cmd/sdk-server/bin/sdk-server.windows.amd64.exe -ldflags "-X agones.dev/agones/pkg.Version=0.3.0-4327502" agones.dev/agones/cmd/sdk-server
Step #3 - "tests": ?   	agones.dev/agones/cmd/controller	[no test files]
Step #3 - "tests": ?   	agones.dev/agones/cmd/sdk-server	[no test files]
Step #3 - "tests": ?   	agones.dev/agones/examples/simple-udp/client	[no test files]
Step #3 - "tests": ?   	agones.dev/agones/examples/simple-udp/server	[no test files]
Step #3 - "tests": ?   	agones.dev/agones/examples/xonotic	[no test files]
Step #3 - "tests": ?   	agones.dev/agones/pkg	[no test files]
Step #3 - "tests": ?   	agones.dev/agones/pkg/apis	[no test files]
Step #3 - "tests": ?   	agones.dev/agones/pkg/apis/stable	[no test files]
Step #3 - "tests": ok  	agones.dev/agones/pkg/apis/stable/v1alpha1	1.119s
Step #3 - "tests": ?   	agones.dev/agones/pkg/client	[no test files]
Step #3 - "tests": ?   	agones.dev/agones/pkg/client/clientset/versioned	[no test files]
Step #3 - "tests": ?   	agones.dev/agones/pkg/client/clientset/versioned/fake	[no test files]
Step #3 - "tests": ?   	agones.dev/agones/pkg/client/clientset/versioned/scheme	[no test files]
Step #3 - "tests": ?   	agones.dev/agones/pkg/client/clientset/versioned/typed/stable/v1alpha1	[no test files]
Step #3 - "tests": ?   	agones.dev/agones/pkg/client/clientset/versioned/typed/stable/v1alpha1/fake	[no test files]
Step #3 - "tests": ?   	agones.dev/agones/pkg/client/informers/externalversions	[no test files]
Step #3 - "tests": ?   	agones.dev/agones/pkg/client/informers/externalversions/internalinterfaces	[no test files]
Step #3 - "tests": ?   	agones.dev/agones/pkg/client/informers/externalversions/stable	[no test files]
Step #3 - "tests": ?   	agones.dev/agones/pkg/client/informers/externalversions/stable/v1alpha1	[no test files]
Step #3 - "tests": ?   	agones.dev/agones/pkg/client/listers/stable/v1alpha1	[no test files]
Step #3 - "tests": ok  	agones.dev/agones/pkg/fleetallocation	11.943s
Step #3 - "tests": ok  	agones.dev/agones/pkg/fleets	2.657s
Step #4 - "build": docker run --rm -v /workspace/build//.config/gcloud:/root/.config/gcloud -v ~/.kube:/root/.kube -v /workspace:/go/src/agones.dev/agones -w /go/src/agones.dev/agones/cmd/sdk-server/bin/ agones-build:7baad3fcaa zip \
Step #4 - "build": 	agonessdk-server-0.3.0-4327502.zip sdk-server.darwin.amd64 sdk-server.linux.amd64 sdk-server.windows.amd64.exe
Step #4 - "build":   adding: sdk-server.darwin.amd64 (deflated 74%)
Step #3 - "tests": ok  	agones.dev/agones/pkg/gameservers	14.472s
Step #3 - "tests": ok  	agones.dev/agones/pkg/gameserversets	2.963s
Step #3 - "tests": ?   	agones.dev/agones/pkg/sdk	[no test files]
Step #3 - "tests": ?   	agones.dev/agones/pkg/testing	[no test files]
Step #3 - "tests": ?   	agones.dev/agones/pkg/util	[no test files]
Step #3 - "tests": ok  	agones.dev/agones/pkg/util/crd	4.050s
Step #3 - "tests": ?   	agones.dev/agones/pkg/util/runtime	[no test files]
Step #3 - "tests": ?   	agones.dev/agones/pkg/util/signals	[no test files]
Step #3 - "tests": ok  	agones.dev/agones/pkg/util/webhooks	1.131s
Step #3 - "tests": ok  	agones.dev/agones/pkg/util/workerqueue	2.175s
Step #3 - "tests": ok  	agones.dev/agones/sdks/go	1.015s
Step #3 - "tests": mkdir -p /tmp/agones-install
Step #3 - "tests": cp /workspace/install/yaml/install.yaml /tmp/agones-install/install.yaml
Step #3 - "tests": sort /tmp/agones-install/install.yaml > /tmp/agones-install/install.yaml.sorted
Step #3 - "tests": /usr/bin/make gen-install
Step #3 - "tests": make[1]: Entering directory '/workspace/build'
Step #3 - "tests": mkdir -p ~/.kube
Step #3 - "tests": mkdir -p /workspace/build//.config/gcloud
Step #3 - "tests": docker run --rm -v /workspace/build//.config/gcloud:/root/.config/gcloud -v ~/.kube:/root/.kube -v /workspace:/go/src/agones.dev/agones  agones-build:7baad3fcaa bash -c \
Step #3 - "tests": 	'helm template --name=agones-manual --namespace agones-system /go/src/agones.dev/agones/install/helm/agones \
Step #3 - "tests": 	--set agones.controller.generateTLS=false \
Step #3 - "tests": 	> /go/src/agones.dev/agones/install/yaml/install.yaml'
Step #4 - "build":   adding: sdk-server.linux.amd64 (deflated 74%)
Step #3 - "tests": make[1]: Leaving directory '/workspace/build'
Step #3 - "tests": sort /workspace/install/yaml/install.yaml > /tmp/agones-install/install.current.yaml.sorted
Step #3 - "tests": diff /tmp/agones-install/install.yaml.sorted /tmp/agones-install/install.current.yaml.sorted
Step #3 - "tests": 296,297d295
Step #3 - "tests": <                   - containerPort
Step #3 - "tests": <                   - containerPort
Step #3 - "tests": 427d424
Step #3 - "tests": <           - containerPort
Step #3 - "tests": make: *** [test-install-yaml] Error 1
Step #3 - "tests": Makefile:114: recipe for target 'test-install-yaml' failed
Finished Step #3 - "tests"
Finished Step #4 - "build"
ERROR
ERROR: build step 3 "make-docker" failed: exit status 2
Step #4 - "build":   adding: sdk-server.windows.amd64.exe

@agones-bot
Copy link
Collaborator

Build Failed 😱

Build Id: bdf81aca-3cfc-4909-969b-f4f650e64290

Build Logs
starting build "bdf81aca-3cfc-4909-969b-f4f650e64290"

FETCHSOURCE
Initialized empty Git repository in /workspace/.git/
From https://source.developers.google.com/p/agones-images/r/agones
 * branch            aefa4b1cef81a5ba62a4a5d6c9fd75b4858a4f2a -> FETCH_HEAD
HEAD is now at aefa4b1 [Breaking Change] Multiple port support for `GameServer`
BUILD
Starting Step #0
Step #0: Already have image (with digest): ubuntu
Finished Step #0
Starting Step #1
Step #1: Already have image (with digest): gcr.io/cloud-builders/docker
Step #1: Sending build context to Docker daemon    110MB

Step #1: Step 1/3 : FROM gcr.io/cloud-builders/docker
Step #1:  ---> 4eaed26f4dfb
Step #1: Step 2/3 : RUN apt-get install make
Step #1:  ---> Running in c23b7a9d6da0
Step #1: Reading package lists...
Step #1: Building dependency tree...
Step #1: Reading state information...
Step #1: make is already the newest version (4.1-6).
Step #1: 0 upgraded, 0 newly installed, 0 to remove and 8 not upgraded.
Step #1: Removing intermediate container c23b7a9d6da0
Step #1:  ---> 0c15aea0fb92
Step #1: Step 3/3 : ENTRYPOINT ["/usr/bin/make"]
Step #1:  ---> Running in e5725f7bb2e1
Step #1: Removing intermediate container e5725f7bb2e1
Step #1:  ---> 1d86690f9f00
Step #1: Successfully built 1d86690f9f00
Step #1: Successfully tagged make-docker:latest
Finished Step #1
Starting Step #2 - "pull-build-image"
Step #2 - "pull-build-image": Already have image: make-docker
Step #2 - "pull-build-image": docker pull gcr.io/agones-images/agones-build:7baad3fcaa && docker tag gcr.io/agones-images/agones-build:7baad3fcaa agones-build:7baad3fcaa
Step #2 - "pull-build-image": 7baad3fcaa: Pulling from agones-images/agones-build
Step #2 - "pull-build-image": cc1a78bfd46b: Pulling fs layer
Step #2 - "pull-build-image": 65ec5fb8fee4: Pulling fs layer
Step #2 - "pull-build-image": f792a8d67267: Pulling fs layer
Step #2 - "pull-build-image": c61ddf10ea29: Pulling fs layer
Step #2 - "pull-build-image": f11e4b9dca6d: Pulling fs layer
Step #2 - "pull-build-image": f5de62cd774a: Pulling fs layer
Step #2 - "pull-build-image": 84fd27122697: Pulling fs layer
Step #2 - "pull-build-image": 0c424a61cc39: Pulling fs layer
Step #2 - "pull-build-image": b5bfc6f2e8cf: Pulling fs layer
Step #2 - "pull-build-image": 3b2702a6ad68: Pulling fs layer
Step #2 - "pull-build-image": 5ab6afc7d65b: Pulling fs layer
Step #2 - "pull-build-image": 24f531f817dd: Pulling fs layer
Step #2 - "pull-build-image": 438f29967585: Pulling fs layer
Step #2 - "pull-build-image": 84919d2a889b: Pulling fs layer
Step #2 - "pull-build-image": 8e059271ff11: Pulling fs layer
Step #2 - "pull-build-image": 6f621b6c2140: Pulling fs layer
Step #2 - "pull-build-image": 84fd27122697: Waiting
Step #2 - "pull-build-image": 2cc115bfdcc4: Pulling fs layer
Step #2 - "pull-build-image": c83e29de64eb: Pulling fs layer
Step #2 - "pull-build-image": 67b0b15947b1: Pulling fs layer
Step #2 - "pull-build-image": 88d3d110e8a5: Pulling fs layer
Step #2 - "pull-build-image": f11e4b9dca6d: Waiting
Step #2 - "pull-build-image": 0c424a61cc39: Waiting
Step #2 - "pull-build-image": b5bfc6f2e8cf: Waiting
Step #2 - "pull-build-image": 438f29967585: Waiting
Step #2 - "pull-build-image": 84919d2a889b: Waiting
Step #2 - "pull-build-image": 3b2702a6ad68: Waiting
Step #2 - "pull-build-image": c83e29de64eb: Waiting
Step #2 - "pull-build-image": 8e059271ff11: Waiting
Step #2 - "pull-build-image": 5ab6afc7d65b: Waiting
Step #2 - "pull-build-image": 67b0b15947b1: Waiting
Step #2 - "pull-build-image": c61ddf10ea29: Waiting
Step #2 - "pull-build-image": 24f531f817dd: Waiting
Step #2 - "pull-build-image": 88d3d110e8a5: Waiting
Step #2 - "pull-build-image": 2cc115bfdcc4: Waiting
Step #2 - "pull-build-image": f5de62cd774a: Waiting
Step #2 - "pull-build-image": cc1a78bfd46b: Download complete
Step #2 - "pull-build-image": c61ddf10ea29: Verifying Checksum
Step #2 - "pull-build-image": c61ddf10ea29: Download complete
Step #2 - "pull-build-image": 65ec5fb8fee4: Verifying Checksum
Step #2 - "pull-build-image": 65ec5fb8fee4: Download complete
Step #2 - "pull-build-image": f5de62cd774a: Verifying Checksum
Step #2 - "pull-build-image": f5de62cd774a: Download complete
Step #2 - "pull-build-image": f11e4b9dca6d: Verifying Checksum
Step #2 - "pull-build-image": f11e4b9dca6d: Download complete
Step #2 - "pull-build-image": 0c424a61cc39: Download complete
Step #2 - "pull-build-image": b5bfc6f2e8cf: Verifying Checksum
Step #2 - "pull-build-image": b5bfc6f2e8cf: Download complete
Step #2 - "pull-build-image": 3b2702a6ad68: Download complete
Step #2 - "pull-build-image": cc1a78bfd46b: Pull complete
Step #2 - "pull-build-image": 5ab6afc7d65b: Verifying Checksum
Step #2 - "pull-build-image": 5ab6afc7d65b: Download complete
Step #2 - "pull-build-image": 84fd27122697: Verifying Checksum
Step #2 - "pull-build-image": 84fd27122697: Download complete
Step #2 - "pull-build-image": 438f29967585: Verifying Checksum
Step #2 - "pull-build-image": 438f29967585: Download complete
Step #2 - "pull-build-image": 24f531f817dd: Download complete
Step #2 - "pull-build-image": 8e059271ff11: Verifying Checksum
Step #2 - "pull-build-image": 8e059271ff11: Download complete
Step #2 - "pull-build-image": 6f621b6c2140: Verifying Checksum
Step #2 - "pull-build-image": 6f621b6c2140: Download complete
Step #2 - "pull-build-image": 2cc115bfdcc4: Verifying Checksum
Step #2 - "pull-build-image": 2cc115bfdcc4: Download complete
Step #2 - "pull-build-image": c83e29de64eb: Verifying Checksum
Step #2 - "pull-build-image": c83e29de64eb: Download complete
Step #2 - "pull-build-image": 67b0b15947b1: Verifying Checksum
Step #2 - "pull-build-image": 67b0b15947b1: Download complete
Step #2 - "pull-build-image": 88d3d110e8a5: Verifying Checksum
Step #2 - "pull-build-image": 88d3d110e8a5: Download complete
Step #2 - "pull-build-image": f792a8d67267: Verifying Checksum
Step #2 - "pull-build-image": f792a8d67267: Download complete
Step #2 - "pull-build-image": 84919d2a889b: Verifying Checksum
Step #2 - "pull-build-image": 84919d2a889b: Download complete
Step #2 - "pull-build-image": 65ec5fb8fee4: Pull complete
Step #2 - "pull-build-image": f792a8d67267: Pull complete
Step #2 - "pull-build-image": c61ddf10ea29: Pull complete
Step #2 - "pull-build-image": f11e4b9dca6d: Pull complete
Step #2 - "pull-build-image": f5de62cd774a: Pull complete
Step #2 - "pull-build-image": 84fd27122697: Pull complete
Step #2 - "pull-build-image": 0c424a61cc39: Pull complete
Step #2 - "pull-build-image": b5bfc6f2e8cf: Pull complete
Step #2 - "pull-build-image": 3b2702a6ad68: Pull complete
Step #2 - "pull-build-image": 5ab6afc7d65b: Pull complete
Step #2 - "pull-build-image": 24f531f817dd: Pull complete
Step #2 - "pull-build-image": 438f29967585: Pull complete
Step #2 - "pull-build-image": 84919d2a889b: Pull complete
Step #2 - "pull-build-image": 8e059271ff11: Pull complete
Step #2 - "pull-build-image": 6f621b6c2140: Pull complete
Step #2 - "pull-build-image": 2cc115bfdcc4: Pull complete
Step #2 - "pull-build-image": c83e29de64eb: Pull complete
Step #2 - "pull-build-image": 67b0b15947b1: Pull complete
Step #2 - "pull-build-image": 88d3d110e8a5: Pull complete
Step #2 - "pull-build-image": Digest: sha256:3b0633d147975b433dda6e16d40c801c793181fc0f7d9d3f704479605690080f
Step #2 - "pull-build-image": Status: Downloaded newer image for gcr.io/agones-images/agones-build:7baad3fcaa
Finished Step #2 - "pull-build-image"
Starting Step #3 - "tests"
Starting Step #4 - "build"
Step #4 - "build": Already have image: make-docker
Step #3 - "tests": Already have image: make-docker
Step #4 - "build": mkdir -p ~/.kube
Step #4 - "build": mkdir -p /workspace/build//.config/gcloud
Step #3 - "tests": mkdir -p ~/.kube
Step #3 - "tests": mkdir -p /workspace/build//.config/gcloud
Step #3 - "tests": docker run --rm -v /workspace/build//.config/gcloud:/root/.config/gcloud -v ~/.kube:/root/.kube -v /workspace:/go/src/agones.dev/agones -w /go/src/agones.dev/agones  agones-build:7baad3fcaa bash -c \
Step #3 - "tests": 	"/root/gen-lint-exclude.sh && gometalinter --config .exclude.gometalinter.json --deadline=15m -t --skip vendor ./..."
Step #4 - "build": docker run --rm -e "CGO_ENABLED=0" -v /workspace/build//.config/gcloud:/root/.config/gcloud -v ~/.kube:/root/.kube -v /workspace:/go/src/agones.dev/agones agones-build:7baad3fcaa go build \
Step #4 - "build": 	-o /go/src/agones.dev/agones/cmd/controller/bin/controller -a -ldflags "-X agones.dev/agones/pkg.Version=0.3.0-aefa4b1" -installsuffix cgo agones.dev/agones/cmd/controller
Step #4 - "build": docker build /workspace/cmd/controller/ --tag=gcr.io/agones-images/agones-controller:0.3.0-aefa4b1 
Step #4 - "build": Sending build context to Docker daemon  41.72MB

Step #4 - "build": Step 1/6 : FROM alpine:3.7
Step #4 - "build": 3.7: Pulling from library/alpine
Step #4 - "build": 911c6d0c7995: Already exists
Step #4 - "build": Digest: sha256:5ce5f501c457015c4b91f91a15ac69157d9b06f1a75cf9107bf2b62e0843983a
Step #4 - "build": Status: Downloaded newer image for alpine:3.7
Step #4 - "build":  ---> 791c3e2ebfcb
Step #4 - "build": Step 2/6 : RUN apk --update add ca-certificates &&     adduser -D agones
Step #4 - "build":  ---> Running in 1ddf09abfff7
Step #4 - "build": fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/main/x86_64/APKINDEX.tar.gz
Step #4 - "build": fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/community/x86_64/APKINDEX.tar.gz
Step #4 - "build": (1/1) Installing ca-certificates (20171114-r0)
Step #4 - "build": Executing busybox-1.27.2-r11.trigger
Step #4 - "build": Executing ca-certificates-20171114-r0.trigger
Step #4 - "build": OK: 5 MiB in 14 packages
Step #4 - "build": Removing intermediate container 1ddf09abfff7
Step #4 - "build":  ---> 3a8dae23a358
Step #4 - "build": Step 3/6 : COPY ./bin/controller /home/agones/controller
Step #4 - "build":  ---> 5a875d485db3
Step #4 - "build": Step 4/6 : RUN chown -R agones /home/agones &&     chmod o+x /home/agones/controller
Step #4 - "build":  ---> Running in 710ad283d320
Step #4 - "build": Removing intermediate container 710ad283d320
Step #4 - "build":  ---> 092760aacdb3
Step #4 - "build": Step 5/6 : USER agones
Step #4 - "build":  ---> Running in 636eac0bbeb9
Step #4 - "build": Removing intermediate container 636eac0bbeb9
Step #4 - "build":  ---> f584af636bad
Step #4 - "build": Step 6/6 : ENTRYPOINT ["/home/agones/controller"]
Step #4 - "build":  ---> Running in d290aafbbca2
Step #4 - "build": Removing intermediate container d290aafbbca2
Step #4 - "build":  ---> 4e8f5ede8691
Step #4 - "build": Successfully built 4e8f5ede8691
Step #4 - "build": Successfully tagged gcr.io/agones-images/agones-controller:0.3.0-aefa4b1
Step #4 - "build": docker run --rm -e "CGO_ENABLED=0" -v /workspace/build//.config/gcloud:/root/.config/gcloud -v ~/.kube:/root/.kube -v /workspace:/go/src/agones.dev/agones agones-build:7baad3fcaa go build \
Step #4 - "build": 	-o /go/src/agones.dev/agones/cmd/sdk-server/bin/sdk-server.linux.amd64 -a -ldflags "-X agones.dev/agones/pkg.Version=0.3.0-aefa4b1" -installsuffix cgo agones.dev/agones/cmd/sdk-server
Step #3 - "tests": runtime/cgo: runtime/cgo: pthread_create failed: Resource temporarily unavailablepthread_create failed: Resource temporarily unavailable
Step #3 - "tests": 
Step #3 - "tests": SIGABRT: abort
Step #3 - "tests": PC=0x7f182905cfff m=14 sigcode=18446744073709551610
Step #3 - "tests": 
Step #3 - "tests": goroutine 0 [idle]:
Step #3 - "tests": runtime: unknown pc 0x7f182905cfff
Step #3 - "tests": stack: frame={sp:0x7f18167fb978, fp:0x0} stack=[0x7f1815ffc2f0,0x7f18167fbef0)
Step #3 - "tests": 00007f18167fb878:  2525252525252525  ffffffffffffffff 
Step #3 - "tests": 00007f18167fb888:  0000000000000000  0000000000000000 
Step #3 - "tests": 00007f18167fb898:  0000000000000000  000000ffffffffff 
Step #3 - "tests": 00007f18167fb8a8:  0000000000000000  6e726562756b2f6d 
Step #3 - "tests": 00007f18167fb8b8:  6c65682d73657465  762d6d6c65682f6d 
Step #3 - "tests": 00007f18167fb8c8:  696c2d312e392e32  36646d612d78756e 
Step #3 - "tests": 00007f18167fb8d8:  7a672e7261742e34  61632f6c61636f6c 
Step #3 - "tests": 00007f18167fb8e8:  3a6e69622f6f6772  636f6c2f7273752f 
Step #3 - "tests": 00007f18167fb8f8:  69622f6f672f6c61  0000000000000000 
Step #3 - "tests": 00007f18167fb908:  672f74706f2f3a6e  6c632d656c676f6f 
Step #3 - "tests": 00007f18167fb918:  2f6b64732d64756f  7273752f3a6e6962 
Step #3 - "tests": 00007f18167fb928:  732f6c61636f6c2f  7273752f3a6e6962 
Step #3 - "tests": 00007f18167fb938:  622f6c61636f6c2f  2f7273752f3a6e69 
Step #3 - "tests": 00007f18167fb948:  73752f3a6e696273  732f3a6e69622f72 
Step #3 - "tests": 00007f18167fb958:  6e69622f3a6e6962  0000000000000000 
Step #3 - "tests": 00007f18167fb968:  0000000000000000  3fe060211cbde2d7 
Step #3 - "tests": 00007f18167fb978: <0000000000000000  fffffffe7fffffff 
Step #3 - "tests": 00007f18167fb988:  ffffffffffffffff  ffffffffffffffff 
Step #3 - "tests": 00007f18167fb998:  ffffffffffffffff  ffffffffffffffff 
Step #3 - "tests": 00007f18167fb9a8:  ffffffffffffffff  ffffffffffffffff 
Step #3 - "tests": 00007f18167fb9b8:  ffffffffffffffff  ffffffffffffffff 
Step #3 - "tests": 00007f18167fb9c8:  ffffffffffffffff  ffffffffffffffff 
Step #3 - "tests": 00007f18167fb9d8:  ffffffffffffffff  ffffffffffffffff 
Step #3 - "tests": 00007f18167fb9e8:  ffffffffffffffff  ffffffffffffffff 
Step #3 - "tests": 00007f18167fb9f8:  ffffffffffffffff  00007f18293c46e0 
Step #3 - "tests": 00007f18167fba08:  00007f182905e42a  0000000000000020 
Step #3 - "tests": 00007f18167fba18:  0000000000000000  0000000000000000 
Step #3 - "tests": 00007f18167fba28:  0000000000000000  0000000000000000 
Step #3 - "tests": 00007f18167fba38:  0000000000000000  0000000000000000 
Step #3 - "tests": 00007f18167fba48:  0000000000000000  0000000000000000 
Step #3 - "tests": 00007f18167fba58:  0000000000000000  0000000000000000 
Step #3 - "tests": 00007f18167fba68:  0000000000000000  0000000000000000 
Step #3 - "tests": runtime: unknown pc 0x7f182905cfff
Step #3 - "tests": stack: frame={sp:0x7f18167fb978, fp:0x0} stack=[0x7f1815ffc2f0,0x7f18167fbef0)
Step #3 - "tests": 00007f18167fb878:  2525252525252525  ffffffffffffffff 
Step #3 - "tests": 00007f18167fb888:  0000000000000000  0000000000000000 
Step #3 - "tests": 00007f18167fb898:  0000000000000000  000000ffffffffff 
Step #3 - "tests": 00007f18167fb8a8:  0000000000000000  6e726562756b2f6d 
Step #3 - "tests": 00007f18167fb8b8:  6c65682d73657465  762d6d6c65682f6d 
Step #3 - "tests": 00007f18167fb8c8:  696c2d312e392e32  36646d612d78756e 
Step #3 - "tests": 00007f18167fb8d8:  7a672e7261742e34  61632f6c61636f6c 
Step #3 - "tests": 00007f18167fb8e8:  3a6e69622f6f6772  636f6c2f7273752f 
Step #3 - "tests": 00007f18167fb8f8:  69622f6f672f6c61  0000000000000000 
Step #3 - "tests": 00007f18167fb908:  672f74706f2f3a6e  6c632d656c676f6f 
Step #3 - "tests": 00007f18167fb918:  2f6b64732d64756f  7273752f3a6e6962 
Step #3 - "tests": 00007f18167fb928:  732f6c61636f6c2f  7273752f3a6e6962 
Step #3 - "tests": 00007f18167fb938:  622f6c61636f6c2f  2f7273752f3a6e69 
Step #3 - "tests": 00007f18167fb948:  73752f3a6e696273  732f3a6e69622f72 
Step #3 - "tests": 00007f18167fb958:  6e69622f3a6e6962  0000000000000000 
Step #3 - "tests": 00007f18167fb968:  0000000000000000  3fe060211cbde2d7 
Step #3 - "tests": 00007f18167fb978: <0000000000000000  fffffffe7fffffff 
Step #3 - "tests": 00007f18167fb988:  ffffffffffffffff  ffffffffffffffff 
Step #3 - "tests": 00007f18167fb998:  ffffffffffffffff  ffffffffffffffff 
Step #3 - "tests": 00007f18167fb9a8:  ffffffffffffffff  ffffffffffffffff 
Step #3 - "tests": 00007f18167fb9b8:  ffffffffffffffff  ffffffffffffffff 
Step #3 - "tests": 00007f18167fb9c8:  ffffffffffffffff  ffffffffffffffff 
Step #3 - "tests": 00007f18167fb9d8:  ffffffffffffffff  ffffffffffffffff 
Step #3 - "tests": 00007f18167fb9e8:  ffffffffffffffff  ffffffffffffffff 
Step #3 - "tests": 00007f18167fb9f8:  ffffffffffffffff  00007f18293c46e0 
Step #3 - "tests": 00007f18167fba08:  00007f182905e42a  0000000000000020 
Step #3 - "tests": 00007f18167fba18:  0000000000000000  0000000000000000 
Step #3 - "tests": 00007f18167fba28:  0000000000000000  0000000000000000 
Step #3 - "tests": 00007f18167fba38:  0000000000000000  0000000000000000 
Step #3 - "tests": 00007f18167fba48:  0000000000000000  0000000000000000 
Step #3 - "tests": 00007f18167fba58:  0000000000000000  0000000000000000 
Step #3 - "tests": 00007f18167fba68:  0000000000000000  0000000000000000 
Step #3 - "tests": 
Step #3 - "tests": goroutine 2 [running]:
Step #3 - "tests": runtime.systemstack_switch()
Step #3 - "tests": 	/usr/local/go/src/runtime/asm_amd64.s:363 fp=0xc420042778 sp=0xc420042770 pc=0x452fd0
Step #3 - "tests": runtime.gcStart(0x0, 0x2, 0x4ea2b979ff, 0x0)
Step #3 - "tests": 	/usr/local/go/src/runtime/mgc.go:1371 +0x33d fp=0xc4200427a8 sp=0xc420042778 pc=0x41915d
Step #3 - "tests": runtime.forcegchelper()
Step #3 - "tests": 	/usr/local/go/src/runtime/proc.go:254 +0x6d fp=0xc4200427e0 sp=0xc4200427a8 pc=0x42c3bd
Step #3 - "tests": runtime.goexit()
Step #3 - "tests": 	/usr/local/go/src/runtime/asm_amd64.s:2361 +0x1 fp=0xc4200427e8 sp=0xc4200427e0 pc=0x455b21
Step #3 - "tests": created by runtime.init.4
Step #3 - "tests": 	/usr/local/go/src/runtime/proc.go:237 +0x35
Step #3 - "tests": 
Step #3 - "tests": goroutine 1 [chan receive, 3 minutes]:
Step #3 - "tests": main.outputToConsole(0xc420075f80, 0xc420292240)
Step #3 - "tests": 	/go/src/github.com/alecthomas/gometalinter/main.go:288 +0x49
Step #3 - "tests": main.main()
Step #3 - "tests": 	/go/src/github.com/alecthomas/gometalinter/main.go:239 +0x6e9
Step #3 - "tests": 
Step #3 - "tests": goroutine 82 [chan receive, 4 minutes]:
Step #3 - "tests": main.filterIssuesViaDirectives.func1(0xc42011b0e0, 0xc420194f20, 0xc420075f80)
Step #3 - "tests": 	/go/src/github.com/alecthomas/gometalinter/directives.go:191 +0x42
Step #3 - "tests": created by main.filterIssuesViaDirectives
Step #3 - "tests": 	/go/src/github.com/alecthomas/gometalinter/directives.go:190 +0x71
Step #3 - "tests": 
Step #3 - "tests": goroutine 349 [select, 4 minutes]:
Step #3 - "tests": main.executeLinter(0x53, 0xc4201b3620, 0xc4215ed400, 0x23, 0x40, 0x0, 0x0)
Step #3 - "tests": 	/go/src/github.com/alecthomas/gometalinter/execute.go:165 +0x5b4
Step #3 - "tests": main.runLinters.func1(0xc4201b3620, 0xc42011b080, 0xc420208070, 0xc4201720a0, 0x53, 0xc4215ed400, 0x23, 0x40)
Step #3 - "tests": 	/go/src/github.com/alecthomas/gometalinter/execute.go:121 +0x60
Step #3 - "tests": created by main.runLinters
Step #3 - "tests": 	/go/src/github.com/alecthomas/gometalinter/execute.go:120 +0xa81
Step #3 - "tests": 
Step #3 - "tests": goroutine 251 [select, 4 minutes]:
Step #3 - "tests": main.executeLinter(0x4f, 0xc4201b2840, 0xc420aa1000, 0x23, 0x40, 0x0, 0x0)
Step #3 - "tests": 	/go/src/github.com/alecthomas/gometalinter/execute.go:165 +0x5b4
Step #3 - "tests": main.runLinters.func1(0xc4201b2840, 0xc42011b080, 0xc420208070, 0xc4201720a0, 0x4f, 0xc420aa1000, 0x23, 0x40)
Step #3 - "tests": 	/go/src/github.com/alecthomas/gometalinter/execute.go:121 +0x60
Step #3 - "tests": created by main.runLinters
Step #3 - "tests": 	/go/src/github.com/alecthomas/gometalinter/execute.go:120 +0xa81
Step #3 - "tests": 
Step #3 - "tests": goroutine 340 [select, 5 minutes]:
Step #3 - "tests": main.executeLinter(0x50, 0xc4200e9aa0, 0xc4214c3800, 0x23, 0x40, 0x0, 0x0)
Step #3 - "tests": 	/go/src/github.com/alecthomas/gometalinter/execute.go:165 +0x5b4
Step #3 - "tests": main.runLinters.func1(0xc4200e9aa0, 0xc42011b080, 0xc420208070, 0xc4201720a0, 0x50, 0xc4214c3800, 0x23, 0x40)
Step #3 - "tests": 	/go/src/github.com/alecthomas/gometalinter/execute.go:121 +0x60
Step #3 - "tests": created by main.runLinters
Step #3 - "tests": 	/go/src/github.com/alecthomas/gometalinter/execute.go:120 +0xa81
Step #3 - "tests": 
Step #3 - "tests": goroutine 210 [IO wait, 5 minutes]:
Step #3 - "tests": internal/poll.runtime_pollWait(0x7f1829763788, 0x72, 0xc4202844e8)
Step #3 - "tests": 	/usr/local/go/src/runtime/netpoll.go:173 +0x57
Step #3 - "tests": internal/poll.(*pollDesc).wait(0xc4202dd328, 0x72, 0xffffffffffffff01, 0x6aaa60, 0x7b9498)
Step #3 - "tests": 	/usr/local/go/src/internal/poll/fd_poll_runtime.go:85 +0x9b
Step #3 - "tests": internal/poll.(*pollDesc).waitRead(0xc4202dd328, 0xc4213bd401, 0x200, 0x200)
Step #3 - "tests": 	/usr/local/go/src/internal/poll/fd_poll_runtime.go:90 +0x3d
Step #3 - "tests": internal/poll.(*FD).Read(0xc4202dd310, 0xc4213bd400, 0x200, 0x200, 0x0, 0x0, 0x0)
Step #3 - "tests": 	/usr/local/go/src/internal/poll/fd_unix.go:157 +0x17d
Step #3 - "tests": os.(*File).read(0xc42000e4d8, 0xc4213bd400, 0x200, 0x200, 0xc4213bd400, 0x0, 0x0)
Step #3 - "tests": 	/usr/local/go/src/os/file_unix.go:226 +0x4e
Step #3 - "tests": os.(*File).Read(0xc42000e4d8, 0xc4213bd400, 0x200, 0x200, 0x0, 0x0, 0xc420284660)
Step #3 - "tests": 	/usr/local/go/src/os/file.go:107 +0x6a
Step #3 - "tests": bytes.(*Buffer).ReadFrom(0xc421581c70, 0x6aa6a0, 0xc42000e4d8, 0x7f1829723020, 0xc421581c70, 0x1)
Step #3 - "tests": 	/usr/local/go/src/bytes/buffer.go:205 +0xa0
Step #3 - "tests": io.copyBuffer(0x6aa3c0, 0xc421581c70, 0x6aa6a0, 0xc42000e4d8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
Step #3 - "tests": 	/usr/local/go/src/io/io.go:386 +0x31a
Step #3 - "tests": io.Copy(0x6aa3c0, 0xc421581c70, 0x6aa6a0, 0xc42000e4d8, 0x0, 0x0, 0x0)
Step #3 - "tests": 	/usr/local/go/src/io/io.go:362 +0x5a
Step #3 - "tests": os/exec.(*Cmd).writerDescriptor.func1(0x0, 0x0)
Step #3 - "tests": 	/usr/local/go/src/os/exec/exec.go:275 +0x4d
Step #3 - "tests": os/exec.(*Cmd).Start.func1(0xc421291a20, 0xc4215766e0)
Step #3 - "tests": 	/usr/local/go/src/os/exec/exec.go:396 +0x27
Step #3 - "tests": created by os/exec.(*Cmd).Start
Step #3 - "tests": 	/usr/local/go/src/os/exec/exec.go:395 +0x5df
Step #3 - "tests": 
Step #3 - "tests": goroutine 339 [syscall, 6 minutes]:
Step #3 - "tests": syscall.Syscall6(0xf7, 0x1, 0x77a, 0xc4201cfdd8, 0x1000004, 0x0, 0x0, 0x0, 0x0, 0x0)
Step #3 - "tests": 	/usr/local/go/src/syscall/asm_linux_amd64.s:44 +0x5
Step #3 - "tests": os.(*Process).blockUntilWaitable(0xc4201ec840, 0x0, 0x0, 0x61f500)
Step #3 - "tests": 	/usr/local/go/src/os/wait_waitid.go:31 +0x98
Step #3 - "tests": os.(*Process).wait(0xc4201ec840, 0x0, 0x0, 0x0)
Step #3 - "tests": 	/usr/local/go/src/os/exec_unix.go:22 +0x3c
Step #3 - "tests": os.(*Process).Wait(0xc4201ec840, 0x0, 0xc4201cff90, 0x5f1720)
Step #3 - "tests": 	/usr/local/go/src/os/exec.go:123 +0x2b
Step #3 - "tests": os/exec.(*Cmd).Wait(0xc420109080, 0xc42011b080, 0xc420208070)
Step #3 - "tests": 	/usr/local/go/src/os/exec/exec.go:461 +0x5c
Step #3 - "tests": main.executeLinter.func1(0xc420109080, 0xc4213e0950, 0xc4213dca80)
Step #3 - "tests": 	/go/src/github.com/alecthomas/gometalinter/execute.go:160 +0x2b
Step #3 - "tests": created by main.executeLinter
Step #3 - "tests": 	/go/src/github.com/alecthomas/gometalinter/execute.go:159 +0x506
Step #3 - "tests": 
Step #3 - "tests": goroutine 338 [IO wait, 6 minutes]:
Step #3 - "tests": internal/poll.runtime_pollWait(0x7f1829764148, 0x72, 0xc420155ce8)
Step #3 - "tests": 	/usr/local/go/src/runtime/netpoll.go:173 +0x57
Step #3 - "tests": internal/poll.(*pollDesc).wait(0xc4202dcd88, 0x72, 0xffffffffffffff01, 0x6aaa60, 0x7b9498)
Step #3 - "tests": 	/usr/local/go/src/internal/poll/fd_poll_runtime.go:85 +0x9b
Step #3 - "tests": internal/poll.(*pollDesc).waitRead(0xc4202dcd88, 0xc4213c6001, 0x200, 0x200)
Step #3 - "tests": 	/usr/local/go/src/internal/poll/fd_poll_runtime.go:90 +0x3d
Step #3 - "tests": internal/poll.(*FD).Read(0xc4202dcd70, 0xc4213c6000, 0x200, 0x200, 0x0, 0x0, 0x0)
Step #3 - "tests": 	/usr/local/go/src/internal/poll/fd_unix.go:157 +0x17d
Step #3 - "tests": os.(*File).read(0xc42010a1e0, 0xc4213c6000, 0x200, 0x200, 0xc4213c6000, 0x0, 0x0)
Step #3 - "tests": 	/usr/local/go/src/os/file_unix.go:226 +0x4e
Step #3 - "tests": os.(*File).Read(0xc42010a1e0, 0xc4213c6000, 0x200, 0x200, 0xc420155e58, 0x4b874c, 0xc420155e60)
Step #3 - "tests": 	/usr/local/go/src/os/file.go:107 +0x6a
Step #3 - "tests": bytes.(*Buffer).ReadFrom(0xc4202068c0, 0x6aa6a0, 0xc42010a1e0, 0x7f1829723020, 0xc4202068c0, 0xc420155e01)
Step #3 - "tests": 	/usr/local/go/src/bytes/buffer.go:205 +0xa0
Step #3 - "tests": io.copyBuffer(0x6aa3c0, 0xc4202068c0, 0x6aa6a0, 0xc42010a1e0, 0x0, 0x0, 0x0, 0xc4202dc0f0, 0x0, 0x0)
Step #3 - "tests": 	/usr/local/go/src/io/io.go:386 +0x31a
Step #3 - "tests": io.Copy(0x6aa3c0, 0xc4202068c0, 0x6aa6a0, 0xc42010a1e0, 0x404de5, 0xc421266060, 0xc420155fb0)
Step #3 - "tests": 	/usr/local/go/src/io/io.go:362 +0x5a
Step #3 - "tests": os/exec.(*Cmd).writerDescriptor.func1(0xc421266060, 0xc420155fb0)
Step #3 - "tests": 	/usr/local/go/src/os/exec/exec.go:275 +0x4d
Step #3 - "tests": os/exec.(*Cmd).Start.func1(0xc420109080, 0xc42028eae0)
Step #3 - "tests": 	/usr/local/go/src/os/exec/exec.go:396 +0x27
Step #3 - "tests": created by os/exec.(*Cmd).Start
Step #3 - "tests": 	/usr/local/go/src/os/exec/exec.go:395 +0x5df
Step #3 - "tests": 
Step #3 - "tests": goroutine 350 [semacquire, 6 minutes]:
Step #3 - "tests": sync.runtime_Semacquire(0xc4201720ac)
Step #3 - "tests": 	/usr/local/go/src/runtime/sema.go:56 +0x39
Step #3 - "tests": sync.(*WaitGroup).Wait(0xc4201720a0)
Step #3 - "tests": 	/usr/local/go/src/sync/waitgroup.go:129 +0x72
Step #3 - "tests": main.runLinters.func2(0xc4201720a0, 0xc42011b0e0, 0xc42011b080)
Step #3 - "tests": 	/go/src/github.com/alecthomas/gometalinter/execute.go:133 +0x2b
Step #3 - "tests": created by main.runLinters
Step #3 - "tests": 	/go/src/github.com/alecthomas/gometalinter/execute.go:132 +0xce1
Step #3 - "tests": 
Step #3 - "tests": goroutine 352 [syscall, 6 minutes]:
Step #3 - "tests": syscall.Syscall6(0xf7, 0x1, 0x7e5, 0xc4212635d8, 0x1000004, 0x0, 0x0, 0x30, 0x64d2e0, 0x64d3a0)
Step #3 - "tests": 	/usr/local/go/src/syscall/asm_linux_amd64.s:44 +0x5
Step #3 - "tests": os.(*Process).blockUntilWaitable(0xc4201ecea0, 0xc420150900, 0x4, 0xc4212636d0)
Step #3 - "tests": 	/usr/local/go/src/os/wait_waitid.go:31 +0x98
Step #3 - "tests": os.(*Process).wait(0xc4201ecea0, 0x3, 0x0, 0x0)
Step #3 - "tests": 	/usr/local/go/src/os/exec_unix.go:22 +0x3c
Step #3 - "tests": os.(*Process).Wait(0xc4201ecea0, 0xc42015c580, 0x1, 0xc4213b2598)
Step #3 - "tests": 	/usr/local/go/src/os/exec.go:123 +0x2b
Step #3 - "tests": os/exec.(*Cmd).Wait(0xc421392840, 0x4329f8, 0x6888e0)
Step #3 - "tests": 	/usr/local/go/src/os/exec/exec.go:461 +0x5c
Step #3 - "tests": main.executeLinter.func1(0xc421392840, 0xc4213e13e0, 0xc4213dd920)
Step #3 - "tests": 	/go/src/github.com/alecthomas/gometalinter/execute.go:160 +0x2b
Step #3 - "tests": created by main.executeLinter
Step #3 - "tests": 	/go/src/github.com/alecthomas/gometalinter/execute.go:159 +0x506
Step #3 - "tests": 
Step #3 - "tests": goroutine 351 [IO wait, 6 minutes]:
Step #3 - "tests": internal/poll.runtime_pollWait(0x7f1829763ac8, 0x72, 0xc4212614e8)
Step #3 - "tests": 	/usr/local/go/src/runtime/netpoll.go:173 +0x57
Step #3 - "tests": internal/poll.(*pollDesc).wait(0xc4202ddbe8, 0x72, 0xffffffffffffff01, 0x6aaa60, 0x7b9498)
Step #3 - "tests": 	/usr/local/go/src/internal/poll/fd_poll_runtime.go:85 +0x9b
Step #3 - "tests": internal/poll.(*pollDesc).waitRead(0xc4202ddbe8, 0xc4201bc601, 0x200, 0x200)
Step #3 - "tests": 	/usr/local/go/src/internal/poll/fd_poll_runtime.go:90 +0x3d
Step #3 - "tests": internal/poll.(*FD).Read(0xc4202ddbd0, 0xc4201bc600, 0x200, 0x200, 0x0, 0x0, 0x0)
Step #3 - "tests": 	/usr/local/go/src/internal/poll/fd_unix.go:157 +0x17d
Step #3 - "tests": os.(*File).read(0xc42010a5a8, 0xc4201bc600, 0x200, 0x200, 0xc4201bc600, 0x0, 0x0)
Step #3 - "tests": 	/usr/local/go/src/os/file_unix.go:226 +0x4e
Step #3 - "tests": os.(*File).Read(0xc42010a5a8, 0xc4201bc600, 0x200, 0x200, 0xc421261658, 0x4b874c, 0xc421261660)
Step #3 - "tests": 	/usr/local/go/src/os/file.go:107 +0x6a
Step #3 - "tests": bytes.(*Buffer).ReadFrom(0xc4202e0e70, 0x6aa6a0, 0xc42010a5a8, 0x7f1829723020, 0xc4202e0e70, 0xc421261601)
Step #3 - "tests": 	/usr/local/go/src/bytes/buffer.go:205 +0xa0
Step #3 - "tests": io.copyBuffer(0x6aa3c0, 0xc4202e0e70, 0x6aa6a0, 0xc42010a5a8, 0x0, 0x0, 0x0, 0xc4202dc910, 0x0, 0x0)
Step #3 - "tests": 	/usr/local/go/src/io/io.go:386 +0x31a
Step #3 - "tests": io.Copy(0x6aa3c0, 0xc4202e0e70, 0x6aa6a0, 0xc42010a5a8, 0x404de5, 0xc4213de300, 0xc4212617b0)
Step #3 - "tests": 	/usr/local/go/src/io/io.go:362 +0x5a
Step #3 - "tests": os/exec.(*Cmd).writerDescriptor.func1(0xc4213de300, 0xc4212617b0)
Step #3 - "tests": 	/usr/local/go/src/os/exec/exec.go:275 +0x4d
Step #3 - "tests": os/exec.(*Cmd).Start.func1(0xc421392840, 0xc42028fb20)
Step #3 - "tests": 	/usr/local/go/src/os/exec/exec.go:396 +0x27
Step #3 - "tests": created by os/exec.(*Cmd).Start
Step #3 - "tests": 	/usr/local/go/src/os/exec/exec.go:395 +0x5df
Step #3 - "tests": 
Step #3 - "tests": goroutine 211 [syscall, 6 minutes]:
Step #3 - "tests": syscall.Syscall6(0xf7, 0x1, 0xa0, 0xc4201e5dd8, 0x1000004, 0x0, 0x0, 0x30, 0x64d2e0, 0x64d3a0)
Step #3 - "tests": 	/usr/local/go/src/syscall/asm_linux_amd64.s:44 +0x5
Step #3 - "tests": os.(*Process).blockUntilWaitable(0xc42129a480, 0xc420150780, 0x4, 0xc4201e5ed0)
Step #3 - "tests": 	/usr/local/go/src/os/wait_waitid.go:31 +0x98
Step #3 - "tests": os.(*Process).wait(0xc42129a480, 0x3, 0x0, 0x0)
Step #3 - "tests": 	/usr/local/go/src/os/exec_unix.go:22 +0x3c
Step #3 - "tests": os.(*Process).Wait(0xc42129a480, 0xc42013cd30, 0x1, 0xc42017acb8)
Step #3 - "tests": 	/usr/local/go/src/os/exec.go:123 +0x2b
Step #3 - "tests": os/exec.(*Cmd).Wait(0xc421291a20, 0x4329f8, 0x6888e0)
Step #3 - "tests": 	/usr/local/go/src/os/exec/exec.go:461 +0x5c
Step #3 - "tests": main.executeLinter.func1(0xc421291a20, 0xc420059460, 0xc42017acc0)
Step #3 - "tests": 	/go/src/github.com/alecthomas/gometalinter/execute.go:160 +0x2b
Step #3 - "tests": created by main.executeLinter
Step #3 - "tests": 	/go/src/github.com/alecthomas/gometalinter/execute.go:159 +0x506
Step #3 - "tests": 
Step #3 - "tests": goroutine 203 [select, 6 minutes]:
Step #3 - "tests": main.executeLinter(0x29, 0xc420167980, 0xc420aad400, 0x23, 0x40, 0x0, 0x0)
Step #3 - "tests": 	/go/src/github.com/alecthomas/gometalinter/execute.go:165 +0x5b4
Step #3 - "tests": main.runLinters.func1(0xc420167980, 0xc42011b080, 0xc420208070, 0xc4201720a0, 0x29, 0xc420aad400, 0x23, 0x40)
Step #3 - "tests": 	/go/src/github.com/alecthomas/gometalinter/execute.go:121 +0x60
Step #3 - "tests": created by main.runLinters
Step #3 - "tests": 	/go/src/github.com/alecthomas/gometalinter/execute.go:120 +0xa81
Step #3 - "tests": 
Step #3 - "tests": goroutine 343 [select, 6 minutes]:
Step #3 - "tests": main.executeLinter(0x51, 0xc4201b2cf0, 0xc420aa1800, 0x24, 0x40, 0x0, 0x0)
Step #3 - "tests": 	/go/src/github.com/alecthomas/gometalinter/execute.go:165 +0x5b4
Step #3 - "tests": main.runLinters.func1(0xc4201b2cf0, 0xc42011b080, 0xc420208070, 0xc4201720a0, 0x51, 0xc420aa1800, 0x24, 0x40)
Step #3 - "tests": 	/go/src/github.com/alecthomas/gometalinter/execute.go:121 +0x60
Step #3 - "tests": created by main.runLinters
Step #3 - "tests": 	/go/src/github.com/alecthomas/gometalinter/execute.go:120 +0xa81
Step #3 - "tests": 
Step #3 - "tests": goroutine 341 [IO wait, 6 minutes]:
Step #3 - "tests": internal/poll.runtime_pollWait(0x7f1829763fa8, 0x72, 0xc420284ce8)
Step #3 - "tests": 	/usr/local/go/src/runtime/netpoll.go:173 +0x57
Step #3 - "tests": internal/poll.(*pollDesc).wait(0xc4202dd1e8, 0x72, 0xffffffffffffff01, 0x6aaa60, 0x7b9498)
Step #3 - "tests": 	/usr/local/go/src/internal/poll/fd_poll_runtime.go:85 +0x9b
Step #3 - "tests": internal/poll.(*pollDesc).waitRead(0xc4202dd1e8, 0xc4213c6201, 0x200, 0x200)
Step #3 - "tests": 	/usr/local/go/src/internal/poll/fd_poll_runtime.go:90 +0x3d
Step #3 - "tests": internal/poll.(*FD).Read(0xc4202dd1d0, 0xc4213c6200, 0x200, 0x200, 0x0, 0x0, 0x0)
Step #3 - "tests": 	/usr/local/go/src/internal/poll/fd_unix.go:157 +0x17d
Step #3 - "tests": os.(*File).read(0xc42010a2c0, 0xc4213c6200, 0x200, 0x200, 0xc4213c6200, 0x0, 0x0)
Step #3 - "tests": 	/usr/local/go/src/os/file_unix.go:226 +0x4e
Step #3 - "tests": os.(*File).Read(0xc42010a2c0, 0xc4213c6200, 0x200, 0x200, 0x631240, 0x4508f0, 0xc420284e60)
Step #3 - "tests": 	/usr/local/go/src/os/file.go:107 +0x6a
Step #3 - "tests": bytes.(*Buffer).ReadFrom(0xc4202d65b0, 0x6aa6a0, 0xc42010a2c0, 0x7f1829723020, 0xc4202d65b0, 0xc420284e01)
Step #3 - "tests": 	/usr/local/go/src/bytes/buffer.go:205 +0xa0
Step #3 - "tests": io.copyBuffer(0x6aa3c0, 0xc4202d65b0, 0x6aa6a0, 0xc42010a2c0, 0x0, 0x0, 0x0, 0xc420284f90, 0x5d3753, 0xc421290840)
Step #3 - "tests": 	/usr/local/go/src/io/io.go:386 +0x31a
Step #3 - "tests": io.Copy(0x6aa3c0, 0xc4202d65b0, 0x6aa6a0, 0xc42010a2c0, 0x404de5, 0xc42017a420, 0x6a8711)
Step #3 - "tests": 	/usr/local/go/src/io/io.go:362 +0x5a
Step #3 - "tests": os/exec.(*Cmd).writerDescriptor.func1(0xc42017a420, 0x4329f8)
Step #3 - "tests": 	/usr/local/go/src/os/exec/exec.go:275 +0x4d
Step #3 - "tests": os/exec.(*Cmd).Start.func1(0xc4201098c0, 0xc42028f020)
Step #3 - "tests": 	/usr/local/go/src/os/exec/exec.go:396 +0x27
Step #3 - "tests": created by os/exec.(*Cmd).Start
Step #3 - "tests": 	/usr/local/go/src/os/exec/exec.go:395 +0x5df
Step #3 - "tests": 
Step #3 - "tests": goroutine 342 [syscall, 6 minutes]:
Step #3 - "tests": syscall.Syscall6(0xf7, 0x1, 0x78c, 0xc4202855d8, 0x1000004, 0x0, 0x0, 0xc42014d080, 0xc420024500, 0xc420285620)
Step #3 - "tests": 	/usr/local/go/src/syscall/asm_linux_amd64.s:44 +0x5
Step #3 - "tests": os.(*Process).blockUntilWaitable(0xc4201ec9f0, 0x4b885b, 0xc4213f85c8, 0xc4202856d0)
Step #3 - "tests": 	/usr/local/go/src/os/wait_waitid.go:31 +0x98
Step #3 - "tests": os.(*Process).wait(0xc4201ec9f0, 0x0, 0xc420285730, 0x0)
Step #3 - "tests": 	/usr/local/go/src/os/exec_unix.go:22 +0x3c
Step #3 - "tests": os.(*Process).Wait(0xc4201ec9f0, 0xc420285790, 0x5d5cff, 0xc42017e3b8)
Step #3 - "tests": 	/usr/local/go/src/os/exec.go:123 +0x2b
Step #3 - "tests": os/exec.(*Cmd).Wait(0xc4201098c0, 0xc4202857b0, 0x4329f8)
Step #3 - "tests": 	/usr/local/go/src/os/exec/exec.go:461 +0x5c
Step #3 - "tests": main.executeLinter.func1(0xc4201098c0, 0xc4213e0ca0, 0xc4213dcf60)
Step #3 - "tests": 	/go/src/github.com/alecthomas/gometalinter/execute.go:160 +0x2b
Step #3 - "tests": created by main.executeLinter
Step #3 - "tests": 	/go/src/github.com/alecthomas/gometalinter/execute.go:159 +0x506
Step #3 - "tests": 
Step #3 - "tests": goroutine 344 [IO wait, 6 minutes]:
Step #3 - "tests": internal/poll.runtime_pollWait(0x7f1829763928, 0x72, 0xc4201cb4e8)
Step #3 - "tests": 	/usr/local/go/src/runtime/netpoll.go:173 +0x57
Step #3 - "tests": internal/poll.(*pollDesc).wait(0xc4202dd6e8, 0x72, 0xffffffffffffff01, 0x6aaa60, 0x7b9498)
Step #3 - "tests": 	/usr/local/go/src/internal/poll/fd_poll_runtime.go:85 +0x9b
Step #3 - "tests": internal/poll.(*pollDesc).waitRead(0xc4202dd6e8, 0xc4201bc201, 0x200, 0x200)
Step #3 - "tests": 	/usr/local/go/src/internal/poll/fd_poll_runtime.go:90 +0x3d
Step #3 - "tests": internal/poll.(*FD).Read(0xc4202dd6d0, 0xc4201bc200, 0x200, 0x200, 0x0, 0x0, 0x0)
Step #3 - "tests": 	/usr/local/go/src/internal/poll/fd_unix.go:157 +0x17d
Step #3 - "tests": os.(*File).read(0xc42010a4c8, 0xc4201bc200, 0x200, 0x200, 0xc4201bc200, 0x0, 0x0)
Step #3 - "tests": 	/usr/local/go/src/os/file_unix.go:226 +0x4e
Step #3 - "tests": os.(*File).Read(0xc42010a4c8, 0xc4201bc200, 0x200, 0x200, 0x631240, 0x4508f0, 0xc4201cb660)
Step #3 - "tests": 	/usr/local/go/src/os/file.go:107 +0x6a
Step #3 - "tests": bytes.(*Buffer).ReadFrom(0xc4202da930, 0x6aa6a0, 0xc42010a4c8, 0x7f1829723020, 0xc4202da930, 0xc4201cb601)
Step #3 - "tests": 	/usr/local/go/src/bytes/buffer.go:205 +0xa0
Step #3 - "tests": io.copyBuffer(0x6aa3c0, 0xc4202da930, 0x6aa6a0, 0xc42010a4c8, 0x0, 0x0, 0x0, 0xc4201cb790, 0x5d3753, 0xc421290b00)
Step #3 - "tests": 	/usr/local/go/src/io/io.go:386 +0x31a
Step #3 - "tests": io.Copy(0x6aa3c0, 0xc4202da930, 0x6aa6a0, 0xc42010a4c8, 0x404de5, 0xc42017a5a0, 0x6a8711)
Step #3 - "tests": 	/usr/local/go/src/io/io.go:362 +0x5a
Step #3 - "tests": os/exec.(*Cmd).writerDescriptor.func1(0xc42017a5a0, 0x4329f8)
Step #3 - "tests": 	/usr/local/go/src/os/exec/exec.go:275 +0x4d
Step #3 - "tests": os/exec.(*Cmd).Start.func1(0xc421392000, 0xc42028f580)
Step #3 - "tests": 	/usr/local/go/src/os/exec/exec.go:396 +0x27
Step #3 - "tests": created by os/exec.(*Cmd).Start
Step #3 - "tests": 	/usr/local/go/src/os/exec/exec.go:395 +0x5df
Step #3 - "tests": 
Step #3 - "tests": goroutine 345 [syscall, 6 minutes]:
Step #3 - "tests": syscall.Syscall6(0xf7, 0x1, 0x79f, 0xc4201cbdd8, 0x1000004, 0x0, 0x0, 0xc42161c780, 0xc420024500, 0xc4201cbe20)
Step #3 - "tests": 	/usr/local/go/src/syscall/asm_linux_amd64.s:44 +0x5
Step #3 - "tests": os.(*Process).blockUntilWaitable(0xc4201ecba0, 0x4b885b, 0xc4213f87a8, 0xc4201cbed0)
Step #3 - "tests": 	/usr/local/go/src/os/wait_waitid.go:31 +0x98
Step #3 - "tests": os.(*Process).wait(0xc4201ecba0, 0x0, 0xc4201cbf30, 0x0)
Step #3 - "tests": 	/usr/local/go/src/os/exec_unix.go:22 +0x3c
Step #3 - "tests": os.(*Process).Wait(0xc4201ecba0, 0xc4201cbf90, 0x5d5cff, 0xc42017e478)
Step #3 - "tests": 	/usr/local/go/src/os/exec.go:123 +0x2b
Step #3 - "tests": os/exec.(*Cmd).Wait(0xc421392000, 0xc4201cbfb0, 0x4329f8)
Step #3 - "tests": 	/usr/local/go/src/os/exec/exec.go:461 +0x5c
Step #3 - "tests": main.executeLinter.func1(0xc421392000, 0xc4213e0fe0, 0xc4213dd3e0)
Step #3 - "tests": 	/go/src/github.com/alecthomas/gometalinter/execute.go:160 +0x2b
Step #3 - "tests": created by main.executeLinter
Step #3 - "tests": 	/go/src/github.com/alecthomas/gometalinter/execute.go:159 +0x506
Step #3 - "tests": 
Step #3 - "tests": rax    0x0
Step #3 - "tests": rbx    0x6
Step #3 - "tests": rcx    0x7f182905cfff
Step #3 - "tests": rdx    0x0
Step #3 - "tests": rdi    0x2
Step #3 - "tests": rsi    0x7f18167fb900
Step #3 - "tests": rbp    0x6ac51a
Step #3 - "tests": rsp    0x7f18167fb978
Step #3 - "tests": r8     0x0
Step #3 - "tests": r9     0x7f18167fb900
Step #3 - "tests": r10    0x8
Step #3 - "tests": r11    0x246
Step #3 - "tests": r12    0x7f18000008c0
Step #3 - "tests": r13    0xf1
Step #3 - "tests": r14    0x11
Step #3 - "tests": r15    0x0
Step #3 - "tests": rip    0x7f182905cfff
Step #3 - "tests": rflags 0x246
Step #3 - "tests": cs     0x33
Step #3 - "tests": fs     0x0
Step #3 - "tests": gs     0x0
Step #3 - "tests": make: *** [lint] Error 2
Step #3 - "tests": Makefile:142: recipe for target 'lint' failed
Finished Step #3 - "tests"
Finished Step #4 - "build"
ERROR
ERROR: build step 3 "make-docker" failed: exit status 2

@agones-bot
Copy link
Collaborator

Build Succeeded 👏

Build Id: bf6159c2-4521-445b-ae4c-d1933abcfa22

The following development artifacts have been built, and will exist for the next 30 days:

// we only want this to be called inside the mutex lock
// so let's define the function here so it can never be called elsewhere.
// Also the return gives an escape from the double loop
findOpenPorts := func(amount int) []pn {
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@enocom would love to get your take on what I'm doing here.

Copy link
Contributor

@enocom enocom Jul 10, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've seen this pattern of declaring a function inside a method and then using it in the stdlib. It's something I've been meaning to do more often myself. Very nice.

@@ -1,4 +1,4 @@
# Copyright 2018 Google Inc. All Rights Reserved.
# Copyright 2017 Google Inc. All Rights Reserved.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Back in past, Marty !

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Whoops. Will change.

HostPort int32 `json:"hostPort,omitempty"`
// Protocol is the network protocol being used. Defaults to UDP. TCP is the only other option
Protocol corev1.Protocol `json:"protocol,omitempty"`
// GameServerPort is deprecated, to be removed in 0.4.0:
Copy link
Collaborator

@cyriltovena cyriltovena Jul 11, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

all of this could be removed no ? We have docker images, chart artifacts, github releases..., I don't think it's necessary to carry this around until 0.4, what do you think ?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When you say "all of this" - do you mean:

  • drop the configuration backward compatibility for this release?
  • Remove the comments on deprecation?
  • Something else I'm not sure of?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes the two first point :)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was just being nice giving people a short opportunity to migrate -- technically we are in alpha, so we can make breaking changes if need be, but I know people are actively using Agones in a couple of places, so figured I would be more gradual about breaking things 😄 ?

Do you feel strongly that we should remove it?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We had a chat - there was confusion around which release we were in. Looks like we're on the same page now, so merging this.

// are to be exposed via the GameServer
type GameServerPort struct {
// Name is the descriptive name of the port
Name string `json:"name,omitempty"`
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nice ! this looks familiar.

Copy link
Collaborator

@cyriltovena cyriltovena left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@agones-bot
Copy link
Collaborator

Build Succeeded 👏

Build Id: 62325f2b-16e9-40a1-806f-d12fadd39fb9

The following development artifacts have been built, and will exist for the next 30 days:

This allows the `GameServer` (and anything that uses it as a template,  such
as `Fleets`), to provide configuration and assignment of multiple ports to the
game server container.

For example:

```yaml
apiVersion: "stable.agones.dev/v1alpha1"
kind: GameServer
metadata:
  name: "simple-udp"
spec:
  ports:
  - name: default
    portPolicy: "dynamic"
    containerPort: 7654
  template:
    spec:
      containers:
      - name: simple-udp
        image: gcr.io/agones-images/udp-server:0.1
```

This also includes update to documentation - but in a separate bottom section
of each document, to allow for moving into the live version at release time.
(This is becoming a mess - a website can't come soon enough).

This also adjusts the `GameServer > Status`, to be able to handle multiple
ports. It now looks like this:

```
Status:
  Address:    192.168.99.100
  Node Name:  agones
  Ports:
    Name:  default
    Port:  7502
  State:   Ready
```

While this a breaking change (due to the change in `GameServer > status`, the
previous legacy configuration of still works (even thought it's no longer
documented), as it is automatically converted to the new version.

Plans are to remove this legacy conversion functionality in 0.4.0, since being
in alpha, we have a very low commitment to backward compatibility.

As an aside - versioning for CRDs is coming soon, so this will also solve this
type of problem long term.
@agones-bot
Copy link
Collaborator

Build Succeeded 👏

Build Id: dad947a4-ab3d-4c20-9e65-49fe8f4d8903

The following development artifacts have been built, and will exist for the next 30 days:

@markmandel markmandel merged commit 180c6c9 into googleforgames:master Jul 11, 2018
@markmandel markmandel deleted the feature/multiple-ports branch July 11, 2018 17:15
@markmandel markmandel added the kind/breaking Breaking change label Jul 11, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/user-experience Pertaining to developers trying to use Agones, e.g. SDK, installation, etc kind/breaking Breaking change kind/feature New features for Agones
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants