|
14 | 14 | # See the License for the specific language governing permissions and |
15 | 15 | # limitations under the License. |
16 | 16 |
|
17 | | -set -e |
18 | | -set -x |
| 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 | +} |
19 | 25 |
|
20 | | -if [ -z "${PROJECT_ID}" ]; then |
21 | | - echo "The PROJECT_ID ENV variable must be set to proceed. Aborting." |
22 | | - exit 1 |
23 | | -fi |
| 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}" |
24 | 33 |
|
25 | | -if [ -z "${SERVICE_ACCOUNT_JSON}" ]; then |
26 | | - echo "The SERVICE_ACCOUNT_JSON ENV variable must be set to proceed. Aborting." |
27 | | - exit 1 |
28 | | -fi |
| 34 | + # gcloud variables |
| 35 | + export CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE="${tmpfile}" |
| 36 | + # Application default credentials (Terraform google provider and inspec-gcp) |
| 37 | + export GOOGLE_APPLICATION_CREDENTIALS="${tmpfile}" |
| 38 | + |
| 39 | + # Terraform variables |
| 40 | + export TF_VAR_project_id="${PROJECT_ID}" |
| 41 | + export TF_VAR_region="${REGION:-us-east1}" |
| 42 | + export TF_VAR_zone="${ZONE:-us-east1-b}" |
| 43 | +} |
29 | 44 |
|
30 | | -export TF_VAR_project_id="${PROJECT_ID}" |
31 | | -export TF_VAR_region="${REGION:-us-east1}" |
32 | | -export TF_VAR_zone="${ZONE:-us-east1-b}" |
| 45 | +main() { |
| 46 | + set -eu |
| 47 | + # Setup trap handler to auto-cleanup |
| 48 | + export TMPDIR="${DELETE_AT_EXIT}" |
| 49 | + trap finish EXIT |
33 | 50 |
|
34 | | -DELETE_AT_EXIT="$(mktemp -d)" |
35 | | -finish() { |
36 | | - [[ -d "${DELETE_AT_EXIT}" ]] && rm -rf "${DELETE_AT_EXIT}" |
| 51 | + # Setup environment variables |
| 52 | + setup_environment |
| 53 | + set -x |
| 54 | + |
| 55 | + # Execute the test lifecycle |
| 56 | + kitchen verify |
37 | 57 | } |
38 | | -trap finish EXIT |
39 | | -CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE="$(TMPDIR="${DELETE_AT_EXIT}" mktemp)" |
40 | | -set +x |
41 | | -echo "${SERVICE_ACCOUNT_JSON}" > "${CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE}" |
42 | | -set -x |
43 | | -GOOGLE_APPLICATION_CREDENTIALS="${CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE}" |
44 | | -declare -rx CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE GOOGLE_APPLICATION_CREDENTIALS |
45 | | -set +e |
46 | | -bundle install |
47 | | -bundle exec kitchen test --destroy=always |
| 58 | + |
| 59 | +# if script is being executed and not sourced. |
| 60 | +if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then |
| 61 | + main "$@" |
| 62 | +fi |
0 commit comments