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

Generate the install.yaml from helm template #171

Merged

Conversation

markmandel
Copy link
Member

@markmandel markmandel commented Apr 10, 2018

This implements a make gen-install target that will generate the install.yaml via helm template. This also extends make test to have a test to ensure that the install.yaml is always kept up to sync with the Helm chart, otehrwise the build will fail.

This does remove the explicit Secrets for RBAC, but we don't have a specific need for them right now, so I feel it's worth the sacrifice to ensure these two configuration options stay in sync.

Blocks on #170, Parent ticket: #101

@markmandel markmandel added the area/build-tools Development tooling. I.e. pretty much everything in the `build` directory. label Apr 10, 2018
@markmandel markmandel added this to the 0.2 milestone Apr 10, 2018
@agones-bot
Copy link
Collaborator

Build Failed 😱

Build Id: 88166e8c-6e0a-40ba-8aae-51f2aff15a8f

Build Logs
starting build "88166e8c-6e0a-40ba-8aae-51f2aff15a8f"

FETCHSOURCE
Initialized empty Git repository in /workspace/.git/
From https://source.developers.google.com/p/agones-images/r/agones
 * branch            ad43130d4955010599c458422069d9e0b54669e5 -> FETCH_HEAD
HEAD is now at ad43130 Generate the install.yaml from `helm template`
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  130.8MB

Step #1: Step 1/3 : FROM gcr.io/cloud-builders/docker
Step #1:  ---> 84bc7313910c
Step #1: Step 2/3 : RUN apt-get install make
Step #1:  ---> Running in 8bf6554d4021
Step #1: Reading package lists...
Step #1: Building dependency tree...
Step #1: Reading state information...
Step #1: Suggested packages:
Step #1:   make-doc
Step #1: The following NEW packages will be installed:
Step #1:   make
Step #1: 0 upgraded, 1 newly installed, 0 to remove and 29 not upgraded.
Step #1: Need to get 151 kB of archives.
Step #1: After this operation, 365 kB of additional disk space will be used.
Step #1: Get:1 http://archive.ubuntu.com/ubuntu xenial/main amd64 make amd64 4.1-6 [151 kB]
Step #1: �[91mdebconf: unable to initialize frontend: Dialog
Step #1: �[0m�[91mdebconf: (TERM is not set, so the dialog frontend is not usable.)
Step #1: �[0m�[91mdebconf: falling back to frontend: Readline
Step #1: �[0m�[91mdebconf: unable to initialize frontend: Readline
Step #1: �[0m�[91mdebconf: (This frontend requires a controlling tty.)
Step #1: �[0m�[91mdebconf: falling back to frontend: Teletype
Step #1: �[0m�[91mdpkg-preconfigure: unable to re-open stdin: 
Step #1: �[0mFetched 151 kB in 1s (78.2 kB/s)
Step #1: Selecting previously unselected package make.
Step #1: (Reading database ... 
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 11239 files and directories currently installed.)
Step #1: Preparing to unpack .../archives/make_4.1-6_amd64.deb ...
Step #1: Unpacking make (4.1-6) ...
Step #1: Setting up make (4.1-6) ...
Step #1: Removing intermediate container 8bf6554d4021
Step #1:  ---> 385ab87757dc
Step #1: Step 3/3 : ENTRYPOINT ["/usr/bin/make"]
Step #1:  ---> Running in 51ff1fa9f3ee
Step #1: Removing intermediate container 51ff1fa9f3ee
Step #1:  ---> 05e2f7ea54d6
Step #1: Successfully built 05e2f7ea54d6
Step #1: Successfully tagged make-docker:latest
Finished Step #1
Starting Step #2
Step #2: Already have image: make-docker
Step #2: docker pull gcr.io/agones-images/agones-build:fbb00a6f77 && docker tag gcr.io/agones-images/agones-build:fbb00a6f77 agones-build:fbb00a6f77
Step #2: fbb00a6f77: Pulling from agones-images/agones-build
Step #2: c73ab1c6897b: Already exists
Step #2: a8818f135186: Pulling fs layer
Step #2: 028bb24b1505: Pulling fs layer
Step #2: 14cbd492f8cf: Pulling fs layer
Step #2: 7c8b9ba14115: Pulling fs layer
Step #2: f65ca2139a9a: Pulling fs layer
Step #2: 5399e2c84bf1: Pulling fs layer
Step #2: d5c423142e44: Pulling fs layer
Step #2: 65121dd604cd: Pulling fs layer
Step #2: 3c6430bdce48: Pulling fs layer
Step #2: ee9a473b14dc: Pulling fs layer
Step #2: 2e573ff3c0af: Pulling fs layer
Step #2: 460964c26331: Pulling fs layer
Step #2: 704181ae2c89: Pulling fs layer
Step #2: f1ac6ad94766: Pulling fs layer
Step #2: 7c8b9ba14115: Waiting
Step #2: f65ca2139a9a: Waiting
Step #2: 5399e2c84bf1: Waiting
Step #2: d5c423142e44: Waiting
Step #2: 65121dd604cd: Waiting
Step #2: 3c6430bdce48: Waiting
Step #2: ee9a473b14dc: Waiting
Step #2: 2e573ff3c0af: Waiting
Step #2: 460964c26331: Waiting
Step #2: 704181ae2c89: Waiting
Step #2: f1ac6ad94766: Waiting
Step #2: 14cbd492f8cf: Verifying Checksum
Step #2: 14cbd492f8cf: Download complete
Step #2: 7c8b9ba14115: Verifying Checksum
Step #2: 7c8b9ba14115: Download complete
Step #2: a8818f135186: Verifying Checksum
Step #2: a8818f135186: Download complete
Step #2: f65ca2139a9a: Verifying Checksum
Step #2: f65ca2139a9a: Download complete
Step #2: d5c423142e44: Verifying Checksum
Step #2: d5c423142e44: Download complete
Step #2: 5399e2c84bf1: Verifying Checksum
Step #2: 5399e2c84bf1: Download complete
Step #2: 65121dd604cd: Verifying Checksum
Step #2: 65121dd604cd: Download complete
Step #2: 3c6430bdce48: Verifying Checksum
Step #2: 3c6430bdce48: Download complete
Step #2: 2e573ff3c0af: Verifying Checksum
Step #2: 2e573ff3c0af: Download complete
Step #2: 460964c26331: Verifying Checksum
Step #2: 460964c26331: Download complete
Step #2: 704181ae2c89: Verifying Checksum
Step #2: 704181ae2c89: Download complete
Step #2: ee9a473b14dc: Verifying Checksum
Step #2: ee9a473b14dc: Download complete
Step #2: f1ac6ad94766: Verifying Checksum
Step #2: f1ac6ad94766: Download complete
Step #2: 028bb24b1505: Verifying Checksum
Step #2: 028bb24b1505: Download complete
Step #2: a8818f135186: Pull complete
Step #2: 028bb24b1505: Pull complete
Step #2: 14cbd492f8cf: Pull complete
Step #2: 7c8b9ba14115: Pull complete
Step #2: f65ca2139a9a: Pull complete
Step #2: 5399e2c84bf1: Pull complete
Step #2: d5c423142e44: Pull complete
Step #2: 65121dd604cd: Pull complete
Step #2: 3c6430bdce48: Pull complete
Step #2: ee9a473b14dc: Pull complete
Step #2: 2e573ff3c0af: Pull complete
Step #2: 460964c26331: Pull complete
Step #2: 704181ae2c89: Pull complete
Step #2: f1ac6ad94766: Pull complete
Step #2: Digest: sha256:126b6a072f164d3f8eb563dc8114a6d358ca635bdc77356baef8530062874187
Step #2: Status: Downloaded newer image for gcr.io/agones-images/agones-build:fbb00a6f77
Finished Step #2
Starting Step #3
Step #3: Already have image: make-docker
Step #3: mkdir -p ~/.kube
Step #3: mkdir -p /workspace/build//.config/gcloud
Step #3: docker run --rm -v /workspace/build//.config/gcloud:/root/.config/gcloud -v ~/.kube:/root/.kube -v /workspace:/go/src/agones.dev/agones agones-build:fbb00a6f77 go test -race agones.dev/agones/...
Step #3: warning: ignoring symlink /go/src/agones.dev/agones/vendor/github.com/prometheus/procfs/fixtures/self
Step #3: ?   	agones.dev/agones	[no test files]
Step #3: ?   	agones.dev/agones/cmd/controller	[no test files]
Step #3: ?   	agones.dev/agones/cmd/sdk-server	[no test files]
Step #3: ?   	agones.dev/agones/examples/simple-udp/client	[no test files]
Step #3: ?   	agones.dev/agones/examples/simple-udp/server	[no test files]
Step #3: ?   	agones.dev/agones/examples/xonotic	[no test files]
Step #3: ?   	agones.dev/agones/pkg	[no test files]
Step #3: ?   	agones.dev/agones/pkg/apis	[no test files]
Step #3: ?   	agones.dev/agones/pkg/apis/stable	[no test files]
Step #3: ok  	agones.dev/agones/pkg/apis/stable/v1alpha1	1.562s
Step #3: ?   	agones.dev/agones/pkg/client	[no test files]
Step #3: ?   	agones.dev/agones/pkg/client/clientset/versioned	[no test files]
Step #3: ?   	agones.dev/agones/pkg/client/clientset/versioned/fake	[no test files]
Step #3: ?   	agones.dev/agones/pkg/client/clientset/versioned/scheme	[no test files]
Step #3: ?   	agones.dev/agones/pkg/client/clientset/versioned/typed/stable/v1alpha1	[no test files]
Step #3: ?   	agones.dev/agones/pkg/client/clientset/versioned/typed/stable/v1alpha1/fake	[no test files]
Step #3: ?   	agones.dev/agones/pkg/client/informers/externalversions	[no test files]
Step #3: ?   	agones.dev/agones/pkg/client/informers/externalversions/internalinterfaces	[no test files]
Step #3: ?   	agones.dev/agones/pkg/client/informers/externalversions/stable	[no test files]
Step #3: ?   	agones.dev/agones/pkg/client/informers/externalversions/stable/v1alpha1	[no test files]
Step #3: ?   	agones.dev/agones/pkg/client/listers/stable/v1alpha1	[no test files]
Step #3: ok  	agones.dev/agones/pkg/gameservers	17.363s
Step #3: ?   	agones.dev/agones/pkg/sdk	[no test files]
Step #3: ?   	agones.dev/agones/pkg/util	[no test files]
Step #3: ok  	agones.dev/agones/pkg/util/crd	4.546s
Step #3: ?   	agones.dev/agones/pkg/util/runtime	[no test files]
Step #3: ?   	agones.dev/agones/pkg/util/signals	[no test files]
Step #3: ok  	agones.dev/agones/pkg/util/webhooks	1.610s
Step #3: ok  	agones.dev/agones/pkg/util/workerqueue	3.570s
Step #3: ok  	agones.dev/agones/sdks/go	1.014s
Step #3: cp /workspace/install/yaml/install.yaml /tmp/install.yaml
Step #3: /usr/bin/make gen-install
Step #3: make[1]: Entering directory '/workspace/build'
Step #3: mkdir -p ~/.kube
Step #3: mkdir -p /workspace/build//.config/gcloud
Step #3: docker run --rm -v /workspace/build//.config/gcloud:/root/.config/gcloud -v ~/.kube:/root/.kube -v /workspace:/go/src/agones.dev/agones  agones-build:fbb00a6f77 bash -c \
Step #3: 	'helm template --name=agones-manual /go/src/agones.dev/agones/install/helm/agones > /go/src/agones.dev/agones/install/yaml/install.yaml'
Step #3: make[1]: Leaving directory '/workspace/build'
Step #3: diff /tmp/install.yaml /workspace/install/yaml/install.yaml
Step #3: make: *** [test-install-yaml] Error 1
Step #3: 2,74d1
Step #3: < # Source: agones/templates/serviceaccounts/controller.yaml
Step #3: < # Copyright 2018 Google Inc. All Rights Reserved.
Step #3: < #
Step #3: < # Licensed under the Apache License, Version 2.0 (the "License");
Step #3: < # you may not use this file except in compliance with the License.
Step #3: < # You may obtain a copy of the License at
Step #3: < #
Step #3: < #     http://www.apache.org/licenses/LICENSE-2.0
Step #3: < #
Step #3: < # Unless required by applicable law or agreed to in writing, software
Step #3: < # distributed under the License is distributed on an "AS IS" BASIS,
Step #3: < # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Step #3: < # See the License for the specific language governing permissions and
Step #3: < # limitations under the License.
Step #3: < 
Step #3: < apiVersion: v1
Step #3: < kind: ServiceAccount
Step #3: < metadata:
Step #3: <   name: agones-controller
Step #3: <   namespace: agones-system
Step #3: <   labels:
Step #3: <     app: agones
Step #3: <     chart: agones-0.2.0
Step #3: <     release: agones-manual
Step #3: <     heritage: Tiller
Step #3: < ---
Step #3: < apiVersion: rbac.authorization.k8s.io/v1
Step #3: < kind: ClusterRole
Step #3: < metadata:
Step #3: <   name: agones-controller
Step #3: <   namespace: agones-system
Step #3: <   labels:
Step #3: <     app: agones
Step #3: <     chart: agones-0.2.0
Step #3: <     release: agones-manual
Step #3: <     heritage: Tiller
Step #3: < rules:
Step #3: < - apiGroups: [""]
Step #3: <   resources: ["events"]
Step #3: <   verbs: ["create"]
Step #3: < - apiGroups: [""]
Step #3: <   resources: ["pods"]
Step #3: <   verbs: ["create", "delete", "list", "watch"]
Step #3: < - apiGroups: [""]
Step #3: <   resources: ["nodes"]
Step #3: <   verbs: ["list", "watch"]
Step #3: < - apiGroups: ["apiextensions.k8s.io"]
Step #3: <   resources: ["customresourcedefinitions"]
Step #3: <   verbs: ["get"]
Step #3: < - apiGroups: ["stable.agones.dev"]
Step #3: <   resources: ["gameservers"]
Step #3: <   verbs: ["delete", "get", "list", "update", "watch"]
Step #3: < ---
Step #3: < apiVersion: rbac.authorization.k8s.io/v1
Step #3: < kind: ClusterRoleBinding
Step #3: < metadata:
Step #3: <   name: agones-controller-access
Step #3: <   namespace: agones-system
Step #3: <   labels:
Step #3: <     app: agones
Step #3: <     chart: agones-0.2.0
Step #3: <     release: agones-manual
Step #3: <     heritage: Tiller
Step #3: < subjects:
Step #3: < - kind: User
Step #3: <   name: system:serviceaccount:agones-system:agones-controller
Step #3: <   apiGroup: rbac.authorization.k8s.io
Step #3: < roleRef:
Step #3: <   apiGroup: rbac.authorization.k8s.io
Step #3: <   kind: ClusterRole
Step #3: <   name: agones-controller
Step #3: < 
Step #3: < ---
Step #3: 263,295d189
Step #3: < # Source: agones/templates/service.yaml
Step #3: < # Copyright 2018 Google Inc. All Rights Reserved.
Step #3: < #
Step #3: < # Licensed under the Apache License, Version 2.0 (the "License");
Step #3: < # you may not use this file except in compliance with the License.
Step #3: < # You may obtain a copy of the License at
Step #3: < #
Step #3: < #     http://www.apache.org/licenses/LICENSE-2.0
Step #3: < #
Step #3: < # Unless required by applicable law or agreed to in writing, software
Step #3: < # distributed under the License is distributed on an "AS IS" BASIS,
Step #3: < # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Step #3: < # See the License for the specific language governing permissions and
Step #3: < # limitations under the License.
Step #3: < 
Step #3: < apiVersion: v1
Step #3: < kind: Service
Step #3: < metadata:
Step #3: <   name: agones-controller-service
Step #3: <   namespace: agones-system
Step #3: <   labels:
Step #3: <     component: controller
Step #3: <     app: agones
Step #3: <     chart: agones-0.2.0
Step #3: <     release: agones-manual
Step #3: <     heritage: Tiller
Step #3: < spec:
Step #3: <   selector:
Step #3: <     stable.agones.dev/role: controller
Step #3: <   ports:
Step #3: <     - port: 443
Step #3: <       targetPort: 8081
Step #3: < ---
Step #3: 364a259,364
Step #3: > ---
Step #3: > # Source: agones/templates/serviceaccounts/controller.yaml
Step #3: > # Copyright 2018 Google Inc. All Rights Reserved.
Step #3: > #
Step #3: > # Licensed under the Apache License, Version 2.0 (the "License");
Step #3: > # you may not use this file except in compliance with the License.
Step #3: > # You may obtain a copy of the License at
Step #3: > #
Step #3: > #     http://www.apache.org/licenses/LICENSE-2.0
Step #3: > #
Step #3: > # Unless required by applicable law or agreed to in writing, software
Step #3: > # distributed under the License is distributed on an "AS IS" BASIS,
Step #3: > # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Step #3: > # See the License for the specific language governing permissions and
Step #3: > # limitations under the License.
Step #3: > 
Step #3: > apiVersion: v1
Step #3: > kind: ServiceAccount
Step #3: > metadata:
Step #3: >   name: agones-controller
Step #3: >   namespace: agones-system
Step #3: >   labels:
Step #3: >     app: agones
Step #3: >     chart: agones-0.2.0
Step #3: >     release: agones-manual
Step #3: >     heritage: Tiller
Step #3: > ---
Step #3: > apiVersion: rbac.authorization.k8s.io/v1
Step #3: > kind: ClusterRole
Step #3: > metadata:
Step #3: >   name: agones-controller
Step #3: >   namespace: agones-system
Step #3: >   labels:
Step #3: >     app: agones
Step #3: >     chart: agones-0.2.0
Step #3: >     release: agones-manual
Step #3: >     heritage: Tiller
Step #3: > rules:
Step #3: > - apiGroups: [""]
Step #3: >   resources: ["events"]
Step #3: >   verbs: ["create"]
Step #3: > - apiGroups: [""]
Step #3: >   resources: ["pods"]
Step #3: >   verbs: ["create", "delete", "list", "watch"]
Step #3: > - apiGroups: [""]
Step #3: >   resources: ["nodes"]
Step #3: >   verbs: ["list", "watch"]
Step #3: > - apiGroups: ["apiextensions.k8s.io"]
Step #3: >   resources: ["customresourcedefinitions"]
Step #3: >   verbs: ["get"]
Step #3: > - apiGroups: ["stable.agones.dev"]
Step #3: >   resources: ["gameservers"]
Step #3: >   verbs: ["delete", "get", "list", "update", "watch"]
Step #3: > ---
Step #3: > apiVersion: rbac.authorization.k8s.io/v1
Step #3: > kind: ClusterRoleBinding
Step #3: > metadata:
Step #3: >   name: agones-controller-access
Step #3: >   namespace: agones-system
Step #3: >   labels:
Step #3: >     app: agones
Step #3: >     chart: agones-0.2.0
Step #3: >     release: agones-manual
Step #3: >     heritage: Tiller
Step #3: > subjects:
Step #3: > - kind: User
Step #3: >   name: system:serviceaccount:agones-system:agones-controller
Step #3: >   apiGroup: rbac.authorization.k8s.io
Step #3: > roleRef:
Step #3: >   apiGroup: rbac.authorization.k8s.io
Step #3: >   kind: ClusterRole
Step #3: >   name: agones-controller
Step #3: > 
Step #3: > ---
Step #3: > # Source: agones/templates/service.yaml
Step #3: > # Copyright 2018 Google Inc. All Rights Reserved.
Step #3: > #
Step #3: > # Licensed under the Apache License, Version 2.0 (the "License");
Step #3: > # you may not use this file except in compliance with the License.
Step #3: > # You may obtain a copy of the License at
Step #3: > #
Step #3: > #     http://www.apache.org/licenses/LICENSE-2.0
Step #3: > #
Step #3: > # Unless required by applicable law or agreed to in writing, software
Step #3: > # distributed under the License is distributed on an "AS IS" BASIS,
Step #3: > # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Step #3: > # See the License for the specific language governing permissions and
Step #3: > # limitations under the License.
Step #3: > 
Step #3: > apiVersion: v1
Step #3: > kind: Service
Step #3: > metadata:
Step #3: >   name: agones-controller-service
Step #3: >   namespace: agones-system
Step #3: >   labels:
Step #3: >     component: controller
Step #3: >     app: agones
Step #3: >     chart: agones-0.2.0
Step #3: >     release: agones-manual
Step #3: >     heritage: Tiller
Step #3: > spec:
Step #3: >   selector:
Step #3: >     stable.agones.dev/role: controller
Step #3: >   ports:
Step #3: >     - port: 443
Step #3: >       targetPort: 8081
Step #3: Makefile:110: recipe for target 'test-install-yaml' failed
Finished Step #3
ERROR
ERROR: build step 3 "make-docker" failed: exit status 2

@agones-bot
Copy link
Collaborator

Build Failed 😱

Build Id: fd1815aa-1e46-4b3b-88a9-17866e69e144

Build Logs
starting build "fd1815aa-1e46-4b3b-88a9-17866e69e144"

FETCHSOURCE
Initialized empty Git repository in /workspace/.git/
From https://source.developers.google.com/p/agones-images/r/agones
 * branch            8a1a85f0c9cd87f91a68caab392a372c8b5e715f -> FETCH_HEAD
HEAD is now at 8a1a85f Generate the install.yaml from `helm template`
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  130.8MB

Step #1: Step 1/3 : FROM gcr.io/cloud-builders/docker
Step #1:  ---> 84bc7313910c
Step #1: Step 2/3 : RUN apt-get install make
Step #1:  ---> Running in da7261945c87
Step #1: Reading package lists...
Step #1: Building dependency tree...
Step #1: Reading state information...
Step #1: Suggested packages:
Step #1:   make-doc
Step #1: The following NEW packages will be installed:
Step #1:   make
Step #1: 0 upgraded, 1 newly installed, 0 to remove and 29 not upgraded.
Step #1: Need to get 151 kB of archives.
Step #1: After this operation, 365 kB of additional disk space will be used.
Step #1: Get:1 http://archive.ubuntu.com/ubuntu xenial/main amd64 make amd64 4.1-6 [151 kB]
Step #1: �[91mdebconf: unable to initialize frontend: Dialog
Step #1: �[0m�[91mdebconf: (TERM is not set, so the dialog frontend is not usable.)
Step #1: �[0m�[91mdebconf: falling back to frontend: Readline
Step #1: �[0m�[91mdebconf: unable to initialize frontend: Readline
Step #1: �[0m�[91mdebconf: (This frontend requires a controlling tty.)
Step #1: �[0m�[91mdebconf: falling back to frontend: Teletype
Step #1: �[0m�[91mdpkg-preconfigure: unable to re-open stdin: 
Step #1: �[0mFetched 151 kB in 0s (230 kB/s)
Step #1: Selecting previously unselected package make.
Step #1: (Reading database ... 
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 11239 files and directories currently installed.)
Step #1: Preparing to unpack .../archives/make_4.1-6_amd64.deb ...
Step #1: Unpacking make (4.1-6) ...
Step #1: Setting up make (4.1-6) ...
Step #1: Removing intermediate container da7261945c87
Step #1:  ---> a03ec753532a
Step #1: Step 3/3 : ENTRYPOINT ["/usr/bin/make"]
Step #1:  ---> Running in 1d9058f19256
Step #1: Removing intermediate container 1d9058f19256
Step #1:  ---> db92948665c3
Step #1: Successfully built db92948665c3
Step #1: Successfully tagged make-docker:latest
Finished Step #1
Starting Step #2
Step #2: Already have image: make-docker
Step #2: docker pull gcr.io/agones-images/agones-build:fbb00a6f77 && docker tag gcr.io/agones-images/agones-build:fbb00a6f77 agones-build:fbb00a6f77
Step #2: fbb00a6f77: Pulling from agones-images/agones-build
Step #2: c73ab1c6897b: Already exists
Step #2: a8818f135186: Pulling fs layer
Step #2: 028bb24b1505: Pulling fs layer
Step #2: 14cbd492f8cf: Pulling fs layer
Step #2: 7c8b9ba14115: Pulling fs layer
Step #2: f65ca2139a9a: Pulling fs layer
Step #2: 5399e2c84bf1: Pulling fs layer
Step #2: d5c423142e44: Pulling fs layer
Step #2: 65121dd604cd: Pulling fs layer
Step #2: 3c6430bdce48: Pulling fs layer
Step #2: ee9a473b14dc: Pulling fs layer
Step #2: 2e573ff3c0af: Pulling fs layer
Step #2: 460964c26331: Pulling fs layer
Step #2: 704181ae2c89: Pulling fs layer
Step #2: f1ac6ad94766: Pulling fs layer
Step #2: f65ca2139a9a: Waiting
Step #2: 5399e2c84bf1: Waiting
Step #2: d5c423142e44: Waiting
Step #2: 65121dd604cd: Waiting
Step #2: 3c6430bdce48: Waiting
Step #2: ee9a473b14dc: Waiting
Step #2: 2e573ff3c0af: Waiting
Step #2: 460964c26331: Waiting
Step #2: 704181ae2c89: Waiting
Step #2: f1ac6ad94766: Waiting
Step #2: 7c8b9ba14115: Waiting
Step #2: 14cbd492f8cf: Verifying Checksum
Step #2: 14cbd492f8cf: Download complete
Step #2: a8818f135186: Verifying Checksum
Step #2: a8818f135186: Download complete
Step #2: f65ca2139a9a: Verifying Checksum
Step #2: f65ca2139a9a: Download complete
Step #2: 7c8b9ba14115: Verifying Checksum
Step #2: 7c8b9ba14115: Download complete
Step #2: d5c423142e44: Verifying Checksum
Step #2: d5c423142e44: Download complete
Step #2: 5399e2c84bf1: Verifying Checksum
Step #2: 5399e2c84bf1: Download complete
Step #2: a8818f135186: Pull complete
Step #2: 3c6430bdce48: Verifying Checksum
Step #2: 3c6430bdce48: Download complete
Step #2: 65121dd604cd: Verifying Checksum
Step #2: 65121dd604cd: Download complete
Step #2: 2e573ff3c0af: Verifying Checksum
Step #2: 2e573ff3c0af: Download complete
Step #2: 460964c26331: Verifying Checksum
Step #2: 460964c26331: Download complete
Step #2: 704181ae2c89: Verifying Checksum
Step #2: 704181ae2c89: Download complete
Step #2: 028bb24b1505: Verifying Checksum
Step #2: 028bb24b1505: Download complete
Step #2: ee9a473b14dc: Verifying Checksum
Step #2: ee9a473b14dc: Download complete
Step #2: f1ac6ad94766: Verifying Checksum
Step #2: f1ac6ad94766: Download complete
Step #2: 028bb24b1505: Pull complete
Step #2: 14cbd492f8cf: Pull complete
Step #2: 7c8b9ba14115: Pull complete
Step #2: f65ca2139a9a: Pull complete
Step #2: 5399e2c84bf1: Pull complete
Step #2: d5c423142e44: Pull complete
Step #2: 65121dd604cd: Pull complete
Step #2: 3c6430bdce48: Pull complete
Step #2: ee9a473b14dc: Pull complete
Step #2: 2e573ff3c0af: Pull complete
Step #2: 460964c26331: Pull complete
Step #2: 704181ae2c89: Pull complete
Step #2: f1ac6ad94766: Pull complete
Step #2: Digest: sha256:126b6a072f164d3f8eb563dc8114a6d358ca635bdc77356baef8530062874187
Step #2: Status: Downloaded newer image for gcr.io/agones-images/agones-build:fbb00a6f77
Finished Step #2
Starting Step #3
Step #3: Already have image: make-docker
Step #3: mkdir -p ~/.kube
Step #3: mkdir -p /workspace/build//.config/gcloud
Step #3: docker run --rm -v /workspace/build//.config/gcloud:/root/.config/gcloud -v ~/.kube:/root/.kube -v /workspace:/go/src/agones.dev/agones agones-build:fbb00a6f77 go test -race agones.dev/agones/...
Step #3: warning: ignoring symlink /go/src/agones.dev/agones/vendor/github.com/prometheus/procfs/fixtures/self
Step #3: ?   	agones.dev/agones	[no test files]
Step #3: ?   	agones.dev/agones/cmd/controller	[no test files]
Step #3: ?   	agones.dev/agones/cmd/sdk-server	[no test files]
Step #3: ?   	agones.dev/agones/examples/simple-udp/client	[no test files]
Step #3: ?   	agones.dev/agones/examples/simple-udp/server	[no test files]
Step #3: ?   	agones.dev/agones/examples/xonotic	[no test files]
Step #3: ?   	agones.dev/agones/pkg	[no test files]
Step #3: ?   	agones.dev/agones/pkg/apis	[no test files]
Step #3: ?   	agones.dev/agones/pkg/apis/stable	[no test files]
Step #3: ok  	agones.dev/agones/pkg/apis/stable/v1alpha1	1.559s
Step #3: ?   	agones.dev/agones/pkg/client	[no test files]
Step #3: ?   	agones.dev/agones/pkg/client/clientset/versioned	[no test files]
Step #3: ?   	agones.dev/agones/pkg/client/clientset/versioned/fake	[no test files]
Step #3: ?   	agones.dev/agones/pkg/client/clientset/versioned/scheme	[no test files]
Step #3: ?   	agones.dev/agones/pkg/client/clientset/versioned/typed/stable/v1alpha1	[no test files]
Step #3: ?   	agones.dev/agones/pkg/client/clientset/versioned/typed/stable/v1alpha1/fake	[no test files]
Step #3: ?   	agones.dev/agones/pkg/client/informers/externalversions	[no test files]
Step #3: ?   	agones.dev/agones/pkg/client/informers/externalversions/internalinterfaces	[no test files]
Step #3: ?   	agones.dev/agones/pkg/client/informers/externalversions/stable	[no test files]
Step #3: ?   	agones.dev/agones/pkg/client/informers/externalversions/stable/v1alpha1	[no test files]
Step #3: ?   	agones.dev/agones/pkg/client/listers/stable/v1alpha1	[no test files]
Step #3: ok  	agones.dev/agones/pkg/gameservers	16.445s
Step #3: ?   	agones.dev/agones/pkg/sdk	[no test files]
Step #3: ?   	agones.dev/agones/pkg/util	[no test files]
Step #3: ok  	agones.dev/agones/pkg/util/crd	4.531s
Step #3: ?   	agones.dev/agones/pkg/util/runtime	[no test files]
Step #3: ?   	agones.dev/agones/pkg/util/signals	[no test files]
Step #3: ok  	agones.dev/agones/pkg/util/webhooks	1.618s
Step #3: ok  	agones.dev/agones/pkg/util/workerqueue	3.584s
Step #3: ok  	agones.dev/agones/sdks/go	1.022s
Step #3: cp /workspace/install/yaml/install.yaml /tmp/install.yaml
Step #3: /usr/bin/make gen-install
Step #3: make[1]: Entering directory '/workspace/build'
Step #3: mkdir -p ~/.kube
Step #3: mkdir -p /workspace/build//.config/gcloud
Step #3: docker run --rm -v /workspace/build//.config/gcloud:/root/.config/gcloud -v ~/.kube:/root/.kube -v /workspace:/go/src/agones.dev/agones  agones-build:fbb00a6f77 bash -c \
Step #3: 	'helm template --name=agones-manual /go/src/agones.dev/agones/install/helm/agones > /go/src/agones.dev/agones/install/yaml/install.yaml'
Step #3: make[1]: Leaving directory '/workspace/build'
Step #3: diff /tmp/install.yaml /workspace/install/yaml/install.yaml
Step #3: 2,130d1
Step #3: < # Source: agones/templates/crds/gameserver.yaml
Step #3: < # Copyright 2018 Google Inc. All Rights Reserved.
Step #3: < #
Step #3: < # Licensed under the Apache License, Version 2.0 (the "License");
Step #3: < # you may not use this file except in compliance with the License.
Step #3: < # You may obtain a copy of the License at
Step #3: < #
Step #3: < #     http://www.apache.org/licenses/LICENSE-2.0
Step #3: < #
Step #3: < # Unless required by applicable law or agreed to in writing, software
Step #3: < # distributed under the License is distributed on an "AS IS" BASIS,
Step #3: < # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Step #3: < # See the License for the specific language governing permissions and
Step #3: < # limitations under the License.
Step #3: < 
Step #3: < apiVersion: apiextensions.k8s.io/v1beta1
Step #3: < kind: CustomResourceDefinition
Step #3: < metadata:
Step #3: <   name: gameservers.stable.agones.dev
Step #3: <   labels:
Step #3: <     component: crd
Step #3: <     app: agones
Step #3: <     chart: agones-0.2.0
Step #3: <     release: agones-manual
Step #3: <     heritage: Tiller
Step #3: < spec:
Step #3: <   group: stable.agones.dev
Step #3: <   version: v1alpha1
Step #3: <   scope: Namespaced
Step #3: <   names:
Step #3: <     kind: GameServer
Step #3: <     plural: gameservers
Step #3: <     shortNames:
Step #3: <     - gs
Step #3: <     singular: gameserver
Step #3: <   validation:
Step #3: <     openAPIV3Schema:
Step #3: <       required:
Step #3: <       - spec
Step #3: <       properties:
Step #3: <         spec:
Step #3: <           required:
Step #3: <           - containerPort
Step #3: <           - template
Step #3: <           properties:
Step #3: <             template:
Step #3: <               type: object
Step #3: <               required:
Step #3: <               - spec
Step #3: <               properties:
Step #3: <                 spec:
Step #3: <                   type: object
Step #3: <                   required:
Step #3: <                   - containers
Step #3: <                   properties:
Step #3: <                     containers:
Step #3: <                       type: array
Step #3: <                       items:
Step #3: <                         type: object
Step #3: <                         required:
Step #3: <                         - image
Step #3: <                         properties:
Step #3: <                           name:
Step #3: <                             type: string
Step #3: <                             minLength: 0
Step #3: <                             maxLength: 63
Step #3: <                             pattern: "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
Step #3: <                           image:
Step #3: <                             type: string
Step #3: <                             minLength: 1
Step #3: <                       minItems: 1
Step #3: <             container:
Step #3: <               title: The container name running the gameserver
Step #3: <               description: if there is more than one container, specify which one is the game server
Step #3: <               type: string
Step #3: <               minLength: 0
Step #3: <               maxLength: 63
Step #3: <               pattern: "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
Step #3: <             portPolicy:
Step #3: <               title: the port policy that will be applied to the game server
Step #3: <               description: |
Step #3: <                   portPolicy has two options:
Step #3: <                   - "dynamic" (default) the system allocates a free hostPort for the gameserver, for game clients to connect to
Step #3: <                   - "static", user defines the hostPort that the game client will connect to. Then onus is on the user to ensure that the
Step #3: <                   port is available. When static is the policy specified, `hostPort` is required to be populated
Step #3: <               type: string
Step #3: <               enum:
Step #3: <               - dynamic
Step #3: <               - static
Step #3: <             protocol:
Step #3: <               title: Protocol being used. Defaults to UDP. TCP is the only other option
Step #3: <               type: string
Step #3: <               enum:
Step #3: <               - UDP
Step #3: <               - TCP
Step #3: <             containerPort:
Step #3: <               title: The port that is being opened on the game server process
Step #3: <               type: integer
Step #3: <               minimum: 0
Step #3: <               maximum: 65535
Step #3: <             hostPort:
Step #3: <               title: The port exposed on the host
Step #3: <               description: Only required when `portPolicy` is "static". Overwritten when portPolicy is "dynamic".
Step #3: <               type: integer
Step #3: <               minimum: 0
Step #3: <               maximum: 65535
Step #3: <             health:
Step #3: <               type: object
Step #3: <               title: Health checking for the running game server
Step #3: <               properties:
Step #3: <                 disabled:
Step #3: <                   title: Disable health checking. defaults to false, but can be set to true
Step #3: <                   type: boolean
Step #3: <                 initialDelaySeconds:
Step #3: <                   title: Number of seconds after the container has started before health check is initiated. Defaults to 5 seconds
Step #3: <                   type: integer
Step #3: <                   minimum: 0
Step #3: <                   maximum: 2147483648
Step #3: <                 periodSeconds:
Step #3: <                   title: How long before the server is considered not healthy
Step #3: <                   type: integer
Step #3: <                   minimum: 0
Step #3: <                   maximum: 2147483648
Step #3: <                 failureThreshold:
Step #3: <                   title: Minimum consecutive failures for the health probe to be considered failed after having succeeded.
Step #3: <                   type: integer
Step #3: <                   minimum: 1
Step #3: <                   maximum: 2147483648
Step #3: < ---
Step #3: 286a158,286
Step #3: > ---
Step #3: > # Source: agones/templates/crds/gameserver.yaml
Step #3: > # Copyright 2018 Google Inc. All Rights Reserved.
Step #3: > #
Step #3: > # Licensed under the Apache License, Version 2.0 (the "License");
Step #3: > # you may not use this file except in compliance with the License.
Step #3: > # You may obtain a copy of the License at
Step #3: > #
Step #3: > #     http://www.apache.org/licenses/LICENSE-2.0
Step #3: > #
Step #3: > # Unless required by applicable law or agreed to in writing, software
Step #3: > # distributed under the License is distributed on an "AS IS" BASIS,
Step #3: > # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Step #3: > # See the License for the specific language governing permissions and
Step #3: > # limitations under the License.
Step #3: > 
Step #3: > apiVersion: apiextensions.k8s.io/v1beta1
Step #3: > kind: CustomResourceDefinition
Step #3: > metadata:
Step #3: >   name: gameservers.stable.agones.dev
Step #3: >   labels:
Step #3: >     component: crd
Step #3: >     app: agones
Step #3: >     chart: agones-0.2.0
Step #3: >     release: agones-manual
Step #3: >     heritage: Tiller
Step #3: > spec:
Step #3: >   group: stable.agones.dev
Step #3: >   version: v1alpha1
Step #3: >   scope: Namespaced
Step #3: >   names:
Step #3: >     kind: GameServer
Step #3: >     plural: gameservers
Step #3: >     shortNames:
Step #3: >     - gs
Step #3: >     singular: gameserver
Step #3: >   validation:
Step #3: >     openAPIV3Schema:
Step #3: >       required:
Step #3: >       - spec
Step #3: >       properties:
Step #3: >         spec:
Step #3: >           required:
Step #3: >           - containerPort
Step #3: >           - template
Step #3: >           properties:
Step #3: >             template:
Step #3: >               type: object
Step #3: >               required:
Step #3: >               - spec
Step #3: >               properties:
Step #3: >                 spec:
Step #3: >                   type: object
Step #3: >                   required:
Step #3: >                   - containers
Step #3: >                   properties:
Step #3: >                     containers:
Step #3: >                       type: array
Step #3: >                       items:
Step #3: >                         type: object
Step #3: >                         required:
Step #3: >                         - image
Step #3: >                         properties:
Step #3: >                           name:
Step #3: >                             type: string
Step #3: >                             minLength: 0
Step #3: >                             maxLength: 63
Step #3: >                             pattern: "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
Step #3: >                           image:
Step #3: >                             type: string
Step #3: >                             minLength: 1
Step #3: >                       minItems: 1
Step #3: >             container:
Step #3: >               title: The container name running the gameserver
Step #3: >               description: if there is more than one container, specify which one is the game server
Step #3: >               type: string
Step #3: >               minLength: 0
Step #3: >               maxLength: 63
Step #3: >               pattern: "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$"
Step #3: >             portPolicy:
Step #3: >               title: the port policy that will be applied to the game server
Step #3: >               description: |
Step #3: >                   portPolicy has two options:
Step #3: >                   - "dynamic" (default) the system allocates a free hostPort for the gameserver, for game clients to connect to
Step #3: >                   - "static", user defines the hostPort that the game client will connect to. Then onus is on the user to ensure that the
Step #3: >                   port is available. When static is the policy specified, `hostPort` is required to be populated
Step #3: >               type: string
Step #3: >               enum:
Step #3: >               - dynamic
Step #3: >               - static
Step #3: >             protocol:
Step #3: >               title: Protocol being used. Defaults to UDP. TCP is the only other option
Step #3: >               type: string
Step #3: >               enum:
Step #3: >               - UDP
Step #3: >               - TCP
Step #3: >             containerPort:
Step #3: >               title: The port that is being opened on the game server process
Step #3: >               type: integer
Step #3: >               minimum: 0
Step #3: >               maximum: 65535
Step #3: >             hostPort:
Step #3: >               title: The port exposed on the host
Step #3: >               description: Only required when `portPolicy` is "static". Overwritten when portPolicy is "dynamic".
Step #3: >               type: integer
Step #3: >               minimum: 0
Step #3: >               maximum: 65535
Step #3: >             health:
Step #3: >               type: object
Step #3: >               title: Health checking for the running game server
Step #3: >               properties:
Step #3: >                 disabled:
Step #3: >                   title: Disable health checking. defaults to false, but can be set to true
Step #3: >                   type: boolean
Step #3: >                 initialDelaySeconds:
Step #3: >                   title: Number of seconds after the container has started before health check is initiated. Defaults to 5 seconds
Step #3: >                   type: integer
Step #3: >                   minimum: 0
Step #3: >                   maximum: 2147483648
Step #3: >                 periodSeconds:
Step #3: >                   title: How long before the server is considered not healthy
Step #3: >                   type: integer
Step #3: >                   minimum: 0
Step #3: >                   maximum: 2147483648
Step #3: >                 failureThreshold:
Step #3: >                   title: Minimum consecutive failures for the health probe to be considered failed after having succeeded.
Step #3: >                   type: integer
Step #3: >                   minimum: 1
Step #3: >                   maximum: 2147483648
Step #3: Makefile:110: recipe for target 'test-install-yaml' failed
Step #3: make: *** [test-install-yaml] Error 1
Finished Step #3
ERROR
ERROR: build step 3 "make-docker" failed: exit status 2

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

This implements a `make gen-install` target that will generate the
install.yaml via `helm template`. This also extends `make test`
to have a test to ensure that the `install.yaml` is always kept
up to sync with the Helm chart, otehrwise the build will fail.

This does remove the explicit permissions for RBAC, but we don't
have a specific need for them right now, so I feel it's worth the
sacrifice to ensure these two configuration options stay in sync.

Blocks on googleforgames#170, Parent ticket: googleforgames#101
@agones-bot
Copy link
Collaborator

Build Succeeded 👏

Build Id: f2935806-8cd3-4e16-950e-e6bdc91d67f9

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

@markmandel markmandel merged commit 797c29d into googleforgames:master Apr 10, 2018
@markmandel markmandel deleted the feature/gen-install.yaml branch April 10, 2018 18:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/build-tools Development tooling. I.e. pretty much everything in the `build` directory.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants