Skip to content

Commit ca9b78a

Browse files
committed
Move CI runtime logic from pipeline to ci_integration.sh
1 parent 6811b52 commit ca9b78a

File tree

2 files changed

+106
-9
lines changed

2 files changed

+106
-9
lines changed

Makefile

Lines changed: 37 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -74,12 +74,7 @@ check_headers:
7474
# Integration tests
7575
.PHONY: test_integration
7676
test_integration:
77-
bundle install
78-
bundle exec kitchen create
79-
bundle exec kitchen converge
80-
bundle exec kitchen converge
81-
bundle exec kitchen verify
82-
bundle exec kitchen destroy
77+
test/ci_integration.sh
8378

8479
.PHONY: generate_docs
8580
generate_docs:
@@ -112,15 +107,25 @@ docker_push_kitchen_terraform:
112107
.PHONY: docker_run
113108
docker_run:
114109
docker run --rm -it \
110+
-e COMPUTE_ENGINE_SERVICE_ACCOUNT \
111+
-e PROJECT_ID \
112+
-e REGION \
113+
-e ZONES \
114+
-e SERVICE_ACCOUNT_JSON \
115115
-e CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE=${CREDENTIALS_PATH} \
116116
-e GOOGLE_APPLICATION_CREDENTIALS=${CREDENTIALS_PATH} \
117117
-v $(CURDIR):/cft/workdir \
118118
${DOCKER_IMAGE_KITCHEN_TERRAFORM}:${DOCKER_TAG_KITCHEN_TERRAFORM} \
119-
/bin/bash
119+
/bin/bash -c "source test/ci_integration.sh && setup_environment && exec /bin/bash"
120120

121121
.PHONY: docker_create
122122
docker_create: docker_build_kitchen_terraform
123123
docker run --rm -it \
124+
-e COMPUTE_ENGINE_SERVICE_ACCOUNT \
125+
-e PROJECT_ID \
126+
-e REGION \
127+
-e ZONES \
128+
-e SERVICE_ACCOUNT_JSON \
124129
-e CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE=${CREDENTIALS_PATH} \
125130
-e GOOGLE_APPLICATION_CREDENTIALS=${CREDENTIALS_PATH} \
126131
-v $(CURDIR):/cft/workdir \
@@ -130,6 +135,11 @@ docker_create: docker_build_kitchen_terraform
130135
.PHONY: docker_converge
131136
docker_converge:
132137
docker run --rm -it \
138+
-e COMPUTE_ENGINE_SERVICE_ACCOUNT \
139+
-e PROJECT_ID \
140+
-e REGION \
141+
-e ZONES \
142+
-e SERVICE_ACCOUNT_JSON \
133143
-e CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE=${CREDENTIALS_PATH} \
134144
-e GOOGLE_APPLICATION_CREDENTIALS=${CREDENTIALS_PATH} \
135145
-v $(CURDIR):/cft/workdir \
@@ -139,6 +149,11 @@ docker_converge:
139149
.PHONY: docker_verify
140150
docker_verify:
141151
docker run --rm -it \
152+
-e COMPUTE_ENGINE_SERVICE_ACCOUNT \
153+
-e PROJECT_ID \
154+
-e REGION \
155+
-e ZONES \
156+
-e SERVICE_ACCOUNT_JSON \
142157
-e CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE=${CREDENTIALS_PATH} \
143158
-e GOOGLE_APPLICATION_CREDENTIALS=${CREDENTIALS_PATH} \
144159
-v $(CURDIR):/cft/workdir \
@@ -148,12 +163,25 @@ docker_verify:
148163
.PHONY: docker_destroy
149164
docker_destroy:
150165
docker run --rm -it \
166+
-e COMPUTE_ENGINE_SERVICE_ACCOUNT \
167+
-e PROJECT_ID \
168+
-e REGION \
169+
-e ZONES \
170+
-e SERVICE_ACCOUNT_JSON \
151171
-e CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE=${CREDENTIALS_PATH} \
152172
-e GOOGLE_APPLICATION_CREDENTIALS=${CREDENTIALS_PATH} \
153173
-v $(CURDIR):/cft/workdir \
154174
${DOCKER_IMAGE_KITCHEN_TERRAFORM}:${DOCKER_TAG_KITCHEN_TERRAFORM} \
155175
/bin/bash -c "kitchen destroy"
156176

157177
.PHONY: test_integration_docker
158-
test_integration_docker: docker_create docker_converge docker_verify docker_destroy
159-
@echo "Running test-kitchen tests in docker"
178+
test_integration_docker:
179+
docker run --rm -it \
180+
-e COMPUTE_ENGINE_SERVICE_ACCOUNT \
181+
-e PROJECT_ID \
182+
-e REGION \
183+
-e ZONES \
184+
-e SERVICE_ACCOUNT_JSON \
185+
-v $(CURDIR):/cft/workdir \
186+
${DOCKER_IMAGE_KITCHEN_TERRAFORM}:${DOCKER_TAG_KITCHEN_TERRAFORM} \
187+
/bin/bash -c "test/ci_integration.sh"

test/ci_integration.sh

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
#!/usr/bin/env bash
2+
3+
# Copyright 2018 Google LLC
4+
#
5+
# Licensed under the Apache License, Version 2.0 (the "License");
6+
# you may not use this file except in compliance with the License.
7+
# You may obtain a copy of the License at
8+
#
9+
# http://www.apache.org/licenses/LICENSE-2.0
10+
#
11+
# Unless required by applicable law or agreed to in writing, software
12+
# distributed under the License is distributed on an "AS IS" BASIS,
13+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
# See the License for the specific language governing permissions and
15+
# limitations under the License.
16+
17+
# Always clean up.
18+
DELETE_AT_EXIT="$(mktemp -d)"
19+
finish() {
20+
echo 'BEGIN: finish() trap handler' >&2
21+
kitchen destroy
22+
[[ -d "${DELETE_AT_EXIT}" ]] && rm -rf "${DELETE_AT_EXIT}"
23+
echo 'END: finish() trap handler' >&2
24+
}
25+
26+
# Map the input parameters provided by Concourse CI, or whatever mechanism is
27+
# running the tests to Terraform input variables. Also setup credentials for
28+
# use with kitchen-terraform, inspec, and gcloud.
29+
setup_environment() {
30+
local tmpfile
31+
tmpfile="$(mktemp)"
32+
echo "${SERVICE_ACCOUNT_JSON}" > "${tmpfile}"
33+
34+
echo "${SERVICE_ACCOUNT_JSON}" > "test/fixtures/shared/credentials.json"
35+
36+
# gcloud variables
37+
export CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE="${tmpfile}"
38+
# Application default credentials (Terraform google provider and inspec-gcp)
39+
export GOOGLE_APPLICATION_CREDENTIALS="${tmpfile}"
40+
41+
# Terraform variables
42+
export TF_VAR_project_id="$PROJECT_ID"
43+
export TF_VAR_credentials_path_relative="../shared/credentials.json"
44+
export TF_VAR_region="$REGION"
45+
export TF_VAR_zones="$ZONES"
46+
export TF_VAR_compute_engine_service_account="$COMPUTE_ENGINE_SERVICE_ACCOUNT"
47+
}
48+
49+
main() {
50+
set -eu
51+
# Setup trap handler to auto-cleanup
52+
export TMPDIR="${DELETE_AT_EXIT}"
53+
trap finish EXIT
54+
55+
# Setup environment variables
56+
setup_environment
57+
set -x
58+
59+
# Execute the test lifecycle
60+
kitchen create
61+
kitchen converge
62+
kitchen converge
63+
kitchen verify
64+
}
65+
66+
# if script is being executed and not sourced.
67+
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
68+
main "$@"
69+
fi

0 commit comments

Comments
 (0)