test: google compute engine acceptance tests
This commit is contained in:
parent
a91b8f6853
commit
044e7fa368
|
@ -6,3 +6,4 @@
|
|||
/website/build
|
||||
.vagrant
|
||||
Vagrantfile
|
||||
test/.env
|
||||
|
|
|
@ -21,7 +21,11 @@ running on Mac OS X, most of these are available with `brew`:
|
|||
|
||||
* [Bats](https://github.com/sstephenson/bats)
|
||||
|
||||
* [AWS cli](http://aws.amazon.com/cli/)
|
||||
* [AWS cli](http://aws.amazon.com/cli/) for AWS tests as well as most
|
||||
of the components.
|
||||
|
||||
* [gcutil](https://developers.google.com/compute/docs/gcutil/#install) for
|
||||
Google Compute Engine tests.
|
||||
|
||||
### Configuring Tests
|
||||
|
||||
|
@ -32,6 +36,15 @@ Set the following self-explanatory environmental variables:
|
|||
* `AWS_ACCESS_KEY_ID`
|
||||
* `AWS_SECRET_ACCESS_KEY`
|
||||
|
||||
**For tests that test Google Compute Engine:**
|
||||
|
||||
Set the following environmental variables:
|
||||
|
||||
* `GC_BUCKET_NAME`
|
||||
* `GC_CLIENT_SECRETS_FILE`
|
||||
* `GC_PRIVATE_KEY_FILE`
|
||||
* `GC_PROJECT_ID`
|
||||
|
||||
### Running
|
||||
|
||||
These tests are meant to be run _one file at a time_. There are some
|
||||
|
|
|
@ -0,0 +1,40 @@
|
|||
#!/usr/bin/env bats
|
||||
#
|
||||
# This tests the googlecompute builder. The teardown function will
|
||||
# delete any images with the text "packerbats" within the name.
|
||||
|
||||
load test_helper
|
||||
fixtures builder-googlecompute
|
||||
|
||||
# Required parameters
|
||||
: ${GC_BUCKET_NAME:?}
|
||||
: ${GC_CLIENT_SECRETS_FILE:?}
|
||||
: ${GC_PRIVATE_KEY_FILE:?}
|
||||
: ${GC_PROJECT_ID:?}
|
||||
command -v gcutil >/dev/null 2>&1 || {
|
||||
echo "'gcutil' must be installed" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
USER_VARS="-var bucket_name=${GC_BUCKET_NAME}"
|
||||
USER_VARS="${USER_VARS} -var client_secrets_file=${GC_CLIENT_SECRETS_FILE}"
|
||||
USER_VARS="${USER_VARS} -var private_key_file=${GC_PRIVATE_KEY_FILE}"
|
||||
USER_VARS="${USER_VARS} -var project_id=${GC_PROJECT_ID}"
|
||||
|
||||
# This tests if GCE has an image that contains the given parameter.
|
||||
gc_has_image() {
|
||||
gcutil --format=names --project=${GC_PROJECT_ID} listimages \
|
||||
| grep $1
|
||||
}
|
||||
|
||||
teardown() {
|
||||
gcutil --format=names --project=${GC_PROJECT_ID} listimages \
|
||||
| grep packerbats \
|
||||
| xargs -n1 gcutil --project=${GC_PROJECT_ID} --force deleteimage
|
||||
}
|
||||
|
||||
@test "googlecompute: build minimal.json" {
|
||||
run packer build ${USER_VARS} $FIXTURE_ROOT/minimal.json
|
||||
[ "$status" -eq 0 ]
|
||||
[ "$(gc_has_image "packerbats-minimal")" -eq 0 ]
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
{
|
||||
"variables": {
|
||||
"bucket_name": null,
|
||||
"client_secrets_file": null,
|
||||
"private_key_file": null,
|
||||
"project_id": null
|
||||
},
|
||||
|
||||
"builders": [{
|
||||
"type": "googlecompute",
|
||||
"bucket_name": "{{user `bucket_name`}}",
|
||||
"client_secrets_file": "{{user `client_secrets_file`}}",
|
||||
"private_key_file": "{{user `private_key_file`}}",
|
||||
"project_id": "{{user `project_id`}}",
|
||||
|
||||
"image_name": "packerbats-minimal-{{timestamp}}",
|
||||
"source_image": "debian-7-wheezy-v20131120",
|
||||
"zone": "us-central1-a"
|
||||
}]
|
||||
}
|
Loading…
Reference in New Issue