cobalt/test-harness
Erik Schlegel 0de406e76c
Update main project readme (#79)
* # This is a combination of 99 commits.
# This is the 1st commit message:

Adding docker test base image

# This is the commit message #2:

Adding test files

# This is the commit message #3:

testing

# This is the commit message #4:

Added folder

# This is the commit message #5:

Added folder

# This is the commit message #6:

Azure Devops CI Build Pipeline (#67)

* Adding azure devops build pipeline

* Adding README

* Adding azure build badge

# This is the commit message #7:

saving latest tests

# This is the commit message #8:

Adding docker test base image (#68)


# This is the commit message #9:

EOD checkin

# This is the commit message #10:

posting latest

# This is the commit message #11:

eod commits

# This is the commit message #12:

eod commit

# This is the commit message #13:

refactored test directory structure

# This is the commit message #14:

Refactored build

# This is the commit message #15:

Adding hello world azure simple app

# This is the commit message #16:

Adding hello world azure simple app

# This is the commit message #17:

refactoring test harness

# This is the commit message #18:

refactoring test harness

# This is the commit message #19:

checking latest

# This is the commit message #20:

committing latest

# This is the commit message #21:

checking in latest changes

# This is the commit message #22:

Checking in latest progress

# This is the commit message #23:

applying final touches before PR submission

# This is the commit message #24:

updating azure keyvault secret names

# This is the commit message #25:

Checking in latest progress

# This is the commit message #26:

pushing latest pipeline definition

# This is the commit message #27:

updating build pipeline variable format

# This is the commit message #28:

updating build pipeline variable format

# This is the commit message #29:

cleaning up build variables

# This is the commit message #30:

adding minor changes to azure build pipeline

# This is the commit message #31:

updating azure keyvault secret names

# This is the commit message #32:

updating azure keyvault secret names

# This is the commit message #33:

fixing docker login azdo step

# This is the commit message #34:

fixing docker login azdo step

# This is the commit message #35:

fixing docker login azdo step

# This is the commit message #36:

fixing docker login azdo step

# This is the commit message #37:

updating build pipeline variables

# This is the commit message #38:

updating build pipeline variables

# This is the commit message #39:

updating build pipeline variables

# This is the commit message #40:

updating build pipeline variables

# This is the commit message #41:

updating build pipeline variables

# This is the commit message #42:

updating build pipeline variables

# This is the commit message #43:

applying fix to git diff script

# This is the commit message #44:

applying fix to git diff script

# This is the commit message #45:

applying fix to git diff script

# This is the commit message #46:

applying fix to git diff script

# This is the commit message #47:

applying fix to git diff script

# This is the commit message #48:

resolving pipeline bug

# This is the commit message #49:

fixing build error

# This is the commit message #50:

fixing build error

# This is the commit message #51:

fixing build error

# This is the commit message #52:

fixing build error

# This is the commit message #53:

fixing build error

# This is the commit message #54:

fixing build error

# This is the commit message #55:

fixing build error

# This is the commit message #56:

fixing build error

# This is the commit message #57:

fixing build error

# This is the commit message #58:

fixing build error

# This is the commit message #59:

fixing build error

# This is the commit message #60:

fixing build error

# This is the commit message #61:

fixing build error

# This is the commit message #62:

fixing build error

# This is the commit message #63:

fixing build error

# This is the commit message #64:

fixing build error

# This is the commit message #65:

fixing build error

# This is the commit message #66:

fixing build error

# This is the commit message #67:

fixing build error

# This is the commit message #68:

fixing build error

# This is the commit message #69:

fixing build error

# This is the commit message #70:

fixing build error

# This is the commit message #71:

fixing build error

# This is the commit message #72:

fixing build error

# This is the commit message #73:

trying acr fix

# This is the commit message #74:

latest changes

# This is the commit message #75:

removing docker dependency on azure devops pipeline

# This is the commit message #76:

removing docker dependency on azure devops pipeline

# This is the commit message #77:

removing docker dependency on azure devops pipeline

# This is the commit message #78:

removing docker dependency on azure devops pipeline

# This is the commit message #79:

removing docker dependency on azure devops pipeline

# This is the commit message #80:

removing docker dependency on azure devops pipeline

# This is the commit message #81:

removing docker dependency on azure devops pipeline

# This is the commit message #82:

removing docker dependency on azure devops pipeline

# This is the commit message #83:

removing docker dependency on azure devops pipeline

# This is the commit message #84:

removing docker dependency on azure devops pipeline

# This is the commit message #85:

removing docker dependency on azure devops pipeline

# This is the commit message #86:

removing docker dependency on azure devops pipeline

# This is the commit message #87:

removing docker dependency on azure devops pipeline

# This is the commit message #88:

removing docker dependency on azure devops pipeline

# This is the commit message #89:

removing docker dependency on azure devops pipeline

# This is the commit message #90:

removing docker dependency on azure devops pipeline

# This is the commit message #91:

removing docker dependency on azure devops pipeline

# This is the commit message #92:

removing docker dependency on azure devops pipeline

# This is the commit message #93:

removing docker dependency on azure devops pipeline

# This is the commit message #94:

removing docker dependency on azure devops pipeline

# This is the commit message #95:

removing docker dependency on azure devops pipeline

# This is the commit message #96:

removing docker dependency on azure devops pipeline

# This is the commit message #97:

removing docker dependency on azure devops pipeline

# This is the commit message #98:

final commit including resource name randomization

# This is the commit message #99:

Add provider to configure az infra for Terraform

* resolving merge conflicts for squash

Updated documentation based on review comments

Integrate review comments for documentation.

Add usage example for each of the providers

Adding environment template descriptions

removing go version var from azdo pipeline as it's unused

removing unused setup folder

adding more verbose logging for azure devops failure

fixing pull request branch name resolution bug

fixing pull request branch name resolution bug

addressing nick's pr comments

documenting script and docker images

cleaning up required env var check

fixing base branch bug

Added service plan terraform templates to Azure

Adding tags for resources

Integrate review comments to add random id to name

Add tags, capacity and reserved for service plan

Minor Fixes for documentation

Integrate review comments related to resource naming

Remove Optional and Required in variables.tf

Update variables.tf

Update Service Plan Tier to Isolated

squaching commits

applied base image suggestions from nick

* squashing commits and slimming down the build image

* removing go* path from azure devops pipeline as we removed go mods

* refactoring our azure devops pipeline so it's aligned with the local test runner

* fixing azure devops pipeline bug

* fixing base image build variable reference bug

* Addressing nick's PR comments

* resolving issue with failed builds after completing branches merges

* addressing a bug where test harness directory changes were not getting picked up by the harness

* removing local echo statement

* Adding directory exists check and app service container command variable

* addressing nick's PR comments

* adding git diff extension whitelist filter

* Overhauling main project readme

* Adding james to the readme

* Update README.md

* Updating readme from the test-harness directory
2019-04-30 17:41:53 -04:00
..
docker/base-images Erisch/features/devops/integration tests (#75) 2019-04-25 16:22:25 -05:00
Dockerfile Erisch/features/devops/integration tests (#75) 2019-04-25 16:22:25 -05:00
README.md Update main project readme (#79) 2019-04-30 17:41:53 -04:00
build-base-image.sh Erisch/features/devops/integration tests (#75) 2019-04-25 16:22:25 -05:00
init.sh Integration test fix for branch merges (#78) 2019-04-26 18:26:27 -05:00
local-run.sh Integration test fix for branch merges (#78) 2019-04-26 18:26:27 -05:00

README.md

Resource Deployment Testing in Cobalt

Summary

This section describes how to build integration and validation tests for your cobalt deployment environments using docker and the terratest modules.

Terratest is a Go library that makes it easier to write automated tests for your infrastructure code. It provides a variety of helper functions and patterns for common infrastructure testing tasks.

In addition, the cobalt test suite allows for better collaboration with embedding into CI/CD tools such as Travis or Azure DevOps Pipelines.

This test harness runs automated tests for only the deployment templates that have changed by comparing the changes in your git log versus upstream master.

Prerequisites

  • Docker 18.09 or later
  • An Azure subscription
  • A service principal
  • An azure storage account for tracking terraform remote backend state. You can use our backend state setup template to provision the storage resources.
  • git

Test Setup Locally

  1. Local Environment Setup

    • You'll need to define a .env file in the root of the project. You can use our environment template file to start. cp .env.template .env

    • Provide values for the environment values in .env which are required to authenticate Terraform to provision resources within your subscription.

      ARM_SUBSCRIPTION_ID="<az-service-principal-subscription-id>"
      ARM_CLIENT_ID="<az-service-principal-client-id>"
      ARM_CLIENT_SECRET="<az-service-principal-auth-secret>"
      ARM_TENANT_ID="<az-service-principal-tenant>"
      ARM_ACCESS_KEY="<remote-state-storage-account-primary-key>"
      
  2. Base Image - Our test harness uses a base docker image to pre-package dependencies like Terraform, Go, Azure CLI, Terratest vendor packages, etc.

    • Optional Step - Cobalt uses the public msftcse base image by default. We also provide a utility script to generate a new base image.

    • Rebuilding a new base image is as simple as running

      ./test-harness/build-base-image.sh -g "<go_version>" -t "<terraform_version>"
      

      Keep in mind that the terraform version should align with the version from the provider module

    • The base image will be tagged as

      msftcse/cobalt-test-base:g${GO_VERSION}t${TERRAFORM_VERSION}
      
  3. Local Run - Run the test runner by calling the below script from the project's root directory.

    • Test Harness Script

      ./test-harness/local-run.sh