Skip to content

Commit c44c640

Browse files
authored
Merge pull request #48 from terraform-google-modules/feature/ci
Concourse CI
2 parents 46189e8 + 46bc9c4 commit c44c640

File tree

6 files changed

+41
-183
lines changed

6 files changed

+41
-183
lines changed

Makefile

Lines changed: 29 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,12 @@
1616
SHELL := /usr/bin/env bash
1717

1818
# Docker build config variables
19-
BUILD_TERRAFORM_VERSION ?= 0.11.10
20-
BUILD_CLOUD_SDK_VERSION ?= 216.0.0
21-
BUILD_PROVIDER_GOOGLE_VERSION ?= 1.17.1
22-
BUILD_PROVIDER_GSUITE_VERSION ?= 0.1.8
23-
DOCKER_IMAGE_TERRAFORM := cftk/terraform
24-
DOCKER_TAG_TERRAFORM ?= ${BUILD_TERRAFORM_VERSION}_${BUILD_CLOUD_SDK_VERSION}_${BUILD_PROVIDER_GOOGLE_VERSION}_${BUILD_PROVIDER_GSUITE_VERSION}
25-
BUILD_RUBY_VERSION := 2.5.3
26-
DOCKER_IMAGE_KITCHEN_TERRAFORM := cftk/kitchen_terraform
27-
DOCKER_TAG_KITCHEN_TERRAFORM ?= ${BUILD_TERRAFORM_VERSION}_${BUILD_CLOUD_SDK_VERSION}_${BUILD_PROVIDER_GOOGLE_VERSION}_${BUILD_PROVIDER_GSUITE_VERSION}
19+
CREDENTIALS_PATH ?= /cft/workdir/credentials.json
20+
DOCKER_ORG := gcr.io/cloud-foundation-cicd
21+
DOCKER_TAG_BASE_KITCHEN_TERRAFORM ?= 0.11.10_216.0.0_1.19.1_0.1.10
22+
DOCKER_REPO_BASE_KITCHEN_TERRAFORM := ${DOCKER_ORG}/cft/kitchen-terraform:${DOCKER_TAG_BASE_KITCHEN_TERRAFORM}
23+
DOCKER_TAG_KITCHEN_TERRAFORM ?= ${DOCKER_TAG_BASE_KITCHEN_TERRAFORM}
24+
DOCKER_IMAGE_KITCHEN_TERRAFORM := cft/kitchen-terraform_terraform-google-kubernetes-engine
2825

2926
# All is the first target in the file so it will get picked up when you just run 'make' on its own
3027
all: check_shell check_python check_golang check_terraform check_docker check_base_files test_check_headers check_headers check_trailing_whitespace generate_docs
@@ -94,57 +91,61 @@ version:
9491
@source helpers/version-repo.sh
9592

9693
# Build Docker
97-
.PHONY: docker_build_terraform
98-
docker_build_terraform:
99-
docker build -f build/docker/terraform/Dockerfile \
100-
--build-arg BUILD_TERRAFORM_VERSION=${BUILD_TERRAFORM_VERSION} \
101-
--build-arg BUILD_CLOUD_SDK_VERSION=${BUILD_CLOUD_SDK_VERSION} \
102-
--build-arg BUILD_PROVIDER_GOOGLE_VERSION=${BUILD_PROVIDER_GOOGLE_VERSION} \
103-
--build-arg BUILD_PROVIDER_GSUITE_VERSION=${BUILD_PROVIDER_GSUITE_VERSION} \
104-
--build-arg CREDENTIALS_FILE=${CREDENTIALS_FILE} \
105-
-t ${DOCKER_IMAGE_TERRAFORM}:${DOCKER_TAG_TERRAFORM} .
106-
10794
.PHONY: docker_build_kitchen_terraform
10895
docker_build_kitchen_terraform:
10996
docker build -f build/docker/kitchen_terraform/Dockerfile \
110-
--build-arg BUILD_TERRAFORM_IMAGE="${DOCKER_IMAGE_TERRAFORM}:${DOCKER_TAG_TERRAFORM}" \
111-
--build-arg BUILD_RUBY_VERSION="${BUILD_RUBY_VERSION}" \
112-
--build-arg CREDENTIALS_FILE="${CREDENTIALS_FILE}" \
97+
--build-arg BASE_IMAGE=${DOCKER_REPO_BASE_KITCHEN_TERRAFORM} \
11398
-t ${DOCKER_IMAGE_KITCHEN_TERRAFORM}:${DOCKER_TAG_KITCHEN_TERRAFORM} .
11499

100+
# Push Docker image
101+
.PHONY: docker_push_kitchen_terraform
102+
docker_push_kitchen_terraform:
103+
docker tag ${DOCKER_IMAGE_KITCHEN_TERRAFORM}:${DOCKER_TAG_KITCHEN_TERRAFORM} ${DOCKER_ORG}/${DOCKER_IMAGE_KITCHEN_TERRAFORM}:${DOCKER_TAG_KITCHEN_TERRAFORM}
104+
docker push ${DOCKER_ORG}/${DOCKER_IMAGE_KITCHEN_TERRAFORM}:${DOCKER_TAG_KITCHEN_TERRAFORM}
105+
115106
# Run docker
116107
.PHONY: docker_run
117108
docker_run:
118109
docker run --rm -it \
119-
-v $(CURDIR):/cftk/workdir \
110+
-e CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE=${CREDENTIALS_PATH} \
111+
-e GOOGLE_APPLICATION_CREDENTIALS=${CREDENTIALS_PATH} \
112+
-v $(CURDIR):/cft/workdir \
120113
${DOCKER_IMAGE_KITCHEN_TERRAFORM}:${DOCKER_TAG_KITCHEN_TERRAFORM} \
121114
/bin/bash
122115

123116
.PHONY: docker_create
124-
docker_create: docker_build_terraform docker_build_kitchen_terraform
117+
docker_create: docker_build_kitchen_terraform
125118
docker run --rm -it \
126-
-v $(CURDIR):/cftk/workdir \
119+
-e CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE=${CREDENTIALS_PATH} \
120+
-e GOOGLE_APPLICATION_CREDENTIALS=${CREDENTIALS_PATH} \
121+
-v $(CURDIR):/cft/workdir \
127122
${DOCKER_IMAGE_KITCHEN_TERRAFORM}:${DOCKER_TAG_KITCHEN_TERRAFORM} \
128123
/bin/bash -c "kitchen create"
129124

130125
.PHONY: docker_converge
131126
docker_converge:
132127
docker run --rm -it \
133-
-v $(CURDIR):/cftk/workdir \
128+
-e CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE=${CREDENTIALS_PATH} \
129+
-e GOOGLE_APPLICATION_CREDENTIALS=${CREDENTIALS_PATH} \
130+
-v $(CURDIR):/cft/workdir \
134131
${DOCKER_IMAGE_KITCHEN_TERRAFORM}:${DOCKER_TAG_KITCHEN_TERRAFORM} \
135132
/bin/bash -c "kitchen converge && kitchen converge"
136133

137134
.PHONY: docker_verify
138135
docker_verify:
139136
docker run --rm -it \
140-
-v $(CURDIR):/cftk/workdir \
137+
-e CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE=${CREDENTIALS_PATH} \
138+
-e GOOGLE_APPLICATION_CREDENTIALS=${CREDENTIALS_PATH} \
139+
-v $(CURDIR):/cft/workdir \
141140
${DOCKER_IMAGE_KITCHEN_TERRAFORM}:${DOCKER_TAG_KITCHEN_TERRAFORM} \
142141
/bin/bash -c "kitchen verify"
143142

144143
.PHONY: docker_destroy
145144
docker_destroy:
146145
docker run --rm -it \
147-
-v $(CURDIR):/cftk/workdir \
146+
-e CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE=${CREDENTIALS_PATH} \
147+
-e GOOGLE_APPLICATION_CREDENTIALS=${CREDENTIALS_PATH} \
148+
-v $(CURDIR):/cft/workdir \
148149
${DOCKER_IMAGE_KITCHEN_TERRAFORM}:${DOCKER_TAG_KITCHEN_TERRAFORM} \
149150
/bin/bash -c "kitchen destroy"
150151

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -230,8 +230,8 @@ The test-kitchen instances in `test/fixtures/` wrap identically-named examples i
230230
3. Build the Docker containers for testing:
231231

232232
```
233-
CREDENTIALS_FILE="credentials.json" make docker_build_terraform
234-
CREDENTIALS_FILE="credentials.json" make docker_build_kitchen_terraform
233+
make docker_build_terraform
234+
make docker_build_kitchen_terraform
235235
```
236236
4. Run the testing container in interactive mode:
237237

@@ -247,7 +247,7 @@ The test-kitchen instances in `test/fixtures/` wrap identically-named examples i
247247
3. `kitchen verify` tests the created infrastructure. Run `kitchen verify <INSTANCE_NAME>` to run a specific test case.
248248
4. `kitchen destroy` tears down the underlying resources created by `kitchen converge`. Run `kitchen destroy <INSTANCE_NAME>` to tear down resources for a specific test case.
249249

250-
Alternatively, you can simply run `CREDENTIALS_FILE="credentials.json" make test_integration_docker` to run all the test steps non-interactively.
250+
Alternatively, you can simply run `make test_integration_docker` to run all the test steps non-interactively.
251251

252252
#### Test configuration
253253

build/docker/kitchen_terraform/Dockerfile

Lines changed: 3 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -12,58 +12,17 @@
1212
# See the License for the specific language governing permissions and
1313
# limitations under the License.
1414

15-
ARG BUILD_TERRAFORM_IMAGE
16-
ARG BUILD_RUBY_VERSION
17-
# hadolint ignore=DL3006
18-
FROM $BUILD_TERRAFORM_IMAGE as cfkt_terraform
15+
ARG BASE_IMAGE
1916

20-
21-
22-
FROM ruby:$BUILD_RUBY_VERSION-alpine
17+
FROM $BASE_IMAGE
2318

2419
RUN apk add --no-cache \
25-
bash=4.4.19-r1 \
26-
curl=7.61.1-r1 \
27-
git=2.18.1-r0 \
28-
g++=6.4.0-r9 \
29-
jq=1.6_rc1-r1 \
30-
make=4.2.1-r2 \
31-
musl-dev=1.1.19-r10 \
32-
python2=2.7.15-r1 \
33-
python2-dev=2.7.15-r1 \
34-
py2-pip=10.0.1-r0 \
3520
ca-certificates=20171114-r3
3621

3722
ADD https://storage.googleapis.com/kubernetes-release/release/v1.12.2/bin/linux/amd64/kubectl /usr/local/bin/kubectl
3823
RUN chmod +x /usr/local/bin/kubectl
3924

40-
SHELL ["/bin/bash", "-c"]
41-
42-
ENV APP_BASE_DIR="/cftk"
43-
44-
COPY --from=cfkt_terraform $APP_BASE_DIR $APP_BASE_DIR
45-
46-
ARG CREDENTIALS_FILE
47-
48-
ENV HOME="$APP_BASE_DIR/home"
49-
ENV PATH $APP_BASE_DIR/bin:$APP_BASE_DIR/google-cloud-sdk/bin:$PATH
50-
ENV GOOGLE_APPLICATION_CREDENTIALS="$APP_BASE_DIR/workdir/$CREDENTIALS_FILE" \
51-
CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE="$APP_BASE_DIR/workdir/$CREDENTIALS_FILE"
52-
53-
# Fix base64 inconsistency
54-
SHELL ["/bin/bash", "-c"]
55-
RUN echo 'base64() { if [[ $@ == "--decode" ]]; then command base64 -d | more; else command base64 "$@"; fi; }' >> $APP_BASE_DIR/home/.bashrc
56-
57-
RUN terraform --version && \
58-
gcloud --version && \
59-
ruby --version && \
60-
bundle --version
61-
62-
COPY ./Gemfile /opt/kitchen/
63-
6425
WORKDIR /opt/kitchen
26+
COPY Gemfile .
6527
RUN bundle install
66-
67-
RUN gcloud components install beta --quiet
68-
6928
WORKDIR $APP_BASE_DIR/workdir

build/docker/terraform/Dockerfile

Lines changed: 0 additions & 102 deletions
This file was deleted.

examples/node_pool/main.tf

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,14 @@ module "gke" {
3838
node_pools = [
3939
{
4040
name = "pool-01"
41-
min_count = 4
41+
min_count = 1
4242
service_account = "${var.compute_engine_service_account}"
4343
},
4444
{
4545
name = "pool-02"
4646
machine_type = "n1-standard-2"
47-
min_count = 2
48-
max_count = 3
47+
min_count = 1
48+
max_count = 2
4949
disk_size_gb = 30
5050
disk_type = "pd-standard"
5151
image_type = "COS"

test/integration/node_pool/controls/gcloud.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@
7676
including(
7777
"name" => "pool-01",
7878
"autoscaling" => including(
79-
"minNodeCount" => 4,
79+
"minNodeCount" => 1,
8080
),
8181
)
8282
)
@@ -173,7 +173,7 @@
173173
including(
174174
"name" => "pool-02",
175175
"autoscaling" => including(
176-
"minNodeCount" => 2,
176+
"minNodeCount" => 1,
177177
),
178178
)
179179
)
@@ -184,7 +184,7 @@
184184
including(
185185
"name" => "pool-02",
186186
"autoscaling" => including(
187-
"maxNodeCount" => 3,
187+
"maxNodeCount" => 2,
188188
),
189189
)
190190
)

0 commit comments

Comments
 (0)