Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updates from project type #18

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .config/functional_tests/post-entrypoint-helpers.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#!/bin/bash
## NOTE: this script runs at the end of functional test
## Use this to load any configurations after the functional test
## TIPS: avoid modifying the .project_automation/functional_test/entrypoint.sh
## migrate any customization you did on entrypoint.sh to this helper script
echo "Executing Post-Entrypoint Helpers"
6 changes: 6 additions & 0 deletions .config/functional_tests/pre-entrypoint-helpers.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#!/bin/bash
## NOTE: this script runs at the start of functional test
## use this to load any configuration before the functional test
## TIPS: avoid modifying the .project_automation/functional_test/entrypoint.sh
## migrate any customization you did on entrypoint.sh to this helper script
echo "Executing Pre-Entrypoint Helpers"
6 changes: 6 additions & 0 deletions .config/static_tests/post-entrypoint-helpers.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#!/bin/bash
## NOTE: this script runs at the end of static test
## Use this to load any configurations after the static test
## TIPS: avoid modifying the .project_automation/static_test/entrypoint.sh
## migrate any customization you did on entrypoint.sh to this helper script
echo "Executing Post-Entrypoint Helpers"
6 changes: 6 additions & 0 deletions .config/static_tests/pre-entrypoint-helpers.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#!/bin/bash
## NOTE: this script runs at the start of static test
## use this to load any configuration before the static test
## TIPS: avoid modifying the .project_automation/static_test/entrypoint.sh
## migrate any customization you did on entrypoint.sh to this helper script
echo "Executing Pre-Entrypoint Helpers"
4 changes: 2 additions & 2 deletions .copier-answers.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# This file is auto-generated, changes will be overwritten
_commit: v0.1.2
_src_path: /task/ce524240-d748-11ee-a77c-fafd94ad0946/projecttype
_commit: v0.1.4
_src_path: /task/2ac79095-f6d2-11ee-a5ac-ce83ad8231f1/projecttype
starting_version: v0.0.0
version_file: VERSION

11 changes: 2 additions & 9 deletions .project_automation/functional_tests/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,12 +1,5 @@
FROM public.ecr.aws/codebuild/amazonlinux2-x86_64-standard:4.0
ENV TERRAFORM_VERSION=1.4.2
ENV GO_VERSION=1.20.2
ENV TERRAFORM_VERSION=1.7.4
RUN cd /tmp && \
wget https://releases.hashicorp.com/terraform/${TERRAFORM_VERSION}/terraform_${TERRAFORM_VERSION}_linux_amd64.zip && \
unzip terraform_${TERRAFORM_VERSION}_linux_amd64.zip -d /usr/local/bin && chmod 755 /usr/local/bin/terraform

RUN curl -s https://raw.githubusercontent.com/aquasecurity/tfsec/master/scripts/install_linux.sh | bash

RUN cd /tmp && \
wget https://go.dev/dl/go${GO_VERSION}.linux-amd64.tar.gz && \
tar -C /usr/local/bin -xzf go${GO_VERSION}.linux-amd64.tar.gz && chmod 755 /usr/local/bin/go
unzip terraform_${TERRAFORM_VERSION}_linux_amd64.zip -d /usr/local/bin && chmod 755 /usr/local/bin/terraform
53 changes: 41 additions & 12 deletions .project_automation/functional_tests/entrypoint.sh
Original file line number Diff line number Diff line change
@@ -1,21 +1,50 @@
#!/bin/bash -e
#!/bin/bash

## WARNING: DO NOT modify the content of entrypoint.sh
# Use ./config/functional_tests/pre-entrypoint-helpers.sh or ./config/functional_tests/post-entrypoint-helpers.sh
# to load any customizations or additional configurations

## NOTE: paths may differ when running in a managed task. To ensure behavior is consistent between
# managed and local tasks always use these variables for the project and project type path
PROJECT_PATH=${BASE_PATH}/project
PROJECT_TYPE_PATH=${BASE_PATH}/projecttype

echo "Starting Functional Tests"
#********** helper functions *************
pre_entrypoint() {
if [ -f ${PROJECT_PATH}/.config/functional_tests/pre-entrypoint-helpers.sh ]; then
echo "Pre-entrypoint helper found"
source ${PROJECT_PATH}/.config/functional_tests/pre-entrypoint-helpers.sh
echo "Pre-entrypoint helper loaded"
else
echo "Pre-entrypoint helper not found - skipped"
fi
}
post_entrypoint() {
if [ -f ${PROJECT_PATH}/.config/functional_tests/post-entrypoint-helpers.sh ]; then
echo "Post-entrypoint helper found"
source ${PROJECT_PATH}/.config/functional_tests/post-entrypoint-helpers.sh
echo "Post-entrypoint helper loaded"
else
echo "Post-entrypoint helper not found - skipped"
fi
}

#********** Pre-entrypoint helper *************
pre_entrypoint

cd ${PROJECT_PATH}
#********** Functional Test *************
/bin/bash ${PROJECT_PATH}/.project_automation/functional_tests/functional_tests.sh
if [ $? -eq 0 ]
then
echo "Functional test completed"
EXIT_CODE=0
else
echo "Functional test failed"
EXIT_CODE=1
fi

#********** Terratest execution **********
echo "Running Terratest"
cd test
rm -f go.mod
go mod init github.com/aws-ia/terraform-project-ephemeral
go mod tidy
go install github.com/gruntwork-io/terratest/modules/terraform
go test -timeout 45m
#********** Post-entrypoint helper *************
post_entrypoint

echo "End of Functional Tests"
#********** Exit Code *************
exit $EXIT_CODE
32 changes: 32 additions & 0 deletions .project_automation/functional_tests/functional_tests.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#!/bin/bash

## NOTE: paths may differ when running in a managed task. To ensure behavior is consistent between
# managed and local tasks always use these variables for the project and project type path
PROJECT_PATH=${BASE_PATH}/project
PROJECT_TYPE_PATH=${BASE_PATH}/projecttype

echo "Starting Functional Tests"
cd ${PROJECT_PATH}

#********** Terraform Test **********

# Look up the mandatory test file
MANDATORY_TEST_PATH="./tests/01_mandatory.tftest.hcl"
if test -f ${MANDATORY_TEST_PATH}; then
echo "File ${MANDATORY_TEST_PATH} is found, resuming test"
# Run Terraform test
terraform init
terraform test
else
echo "File ${MANDATORY_TEST_PATH} not found. You must include at least one test run in file ${MANDATORY_TEST_PATH}"
(exit 1)
fi

if [ $? -eq 0 ]; then
echo "Terraform Test Successfull"
else
echo "Terraform Test Failed"
exit 1
fi

echo "End of Functional Tests"
2 changes: 1 addition & 1 deletion .project_automation/static_tests/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
FROM public.ecr.aws/codebuild/amazonlinux2-x86_64-standard:4.0
ENV TERRAFORM_VERSION=1.4.2
ENV TERRAFORM_VERSION=1.7.4
RUN cd /tmp && \
wget https://releases.hashicorp.com/terraform/${TERRAFORM_VERSION}/terraform_${TERRAFORM_VERSION}_linux_amd64.zip && \
unzip terraform_${TERRAFORM_VERSION}_linux_amd64.zip -d /usr/local/bin && chmod 755 /usr/local/bin/terraform
Expand Down
100 changes: 37 additions & 63 deletions .project_automation/static_tests/entrypoint.sh
Original file line number Diff line number Diff line change
@@ -1,76 +1,50 @@
#!/bin/bash -e
#!/bin/bash

## WARNING: DO NOT modify the content of entrypoint.sh
# Use ./config/static_tests/pre-entrypoint-helpers.sh or ./config/static_tests/post-entrypoint-helpers.sh
# to load any customizations or additional configurations

## NOTE: paths may differ when running in a managed task. To ensure behavior is consistent between
# managed and local tasks always use these variables for the project and project type path
PROJECT_PATH=${BASE_PATH}/project
PROJECT_TYPE_PATH=${BASE_PATH}/projecttype

echo "Starting Static Tests"
#********** helper functions *************
pre_entrypoint() {
if [ -f ${PROJECT_PATH}/.config/static_tests/pre-entrypoint-helpers.sh ]; then
echo "Pre-entrypoint helper found"
source ${PROJECT_PATH}/.config/static_tests/pre-entrypoint-helpers.sh
echo "Pre-entrypoint helper loaded"
else
echo "Pre-entrypoint helper not found - skipped"
fi
}
post_entrypoint() {
if [ -f ${PROJECT_PATH}/.config/static_tests/post-entrypoint-helpers.sh ]; then
echo "Post-entrypoint helper found"
source ${PROJECT_PATH}/.config/static_tests/post-entrypoint-helpers.sh
echo "Post-entrypoint helper loaded"
else
echo "Post-entrypoint helper not found - skipped"
fi
}

cd ${PROJECT_PATH}
terraform init
terraform validate
#********** Pre-entrypoint helper *************
pre_entrypoint

#********** tflint ********************
echo 'Starting tflint'
tflint --init --config ${PROJECT_PATH}/.config/.tflint.hcl
MYLINT=$(tflint --force --config ${PROJECT_PATH}/.config/.tflint.hcl)
if [ -z "$MYLINT" ]
then
echo "Success - tflint found no linting issues!"
else
echo "Failure - tflint found linting issues!"
echo "$MYLINT"
exit 1
fi
#********** tfsec *********************
echo 'Starting tfsec'
MYTFSEC=$(tfsec . --config-file ${PROJECT_PATH}/.config/.tfsec.yml || true)
if [[ $MYTFSEC == *"No problems detected!"* ]];
#********** Static Test *************
/bin/bash ${PROJECT_PATH}/.project_automation/static_tests/static_tests.sh
if [ $? -eq 0 ]
then
echo "Success - tfsec found no security issues!"
echo "$MYTFSEC"
echo "Static test completed"
EXIT_CODE=0
else
echo "Failure - tfsec found security issues!"
echo "$MYTFSEC"
exit 1
echo "Static test failed"
EXIT_CODE=1
fi

#********** Checkov Analysis *************
echo "Running Checkov Analysis"
MYCHECKOV=$(checkov --config-file ${PROJECT_PATH}/.config/.checkov.yml || true)
if [- z "$MYCHECKOV" ]
then
echo "Success - checkov found no security issues!"
echo "$MYCHECKOV"
else
echo "Failure - checkov found security issues!"
echo "$MYCHECKOV"
exit 1
fi
#********** Post-entrypoint helper *************
post_entrypoint

#********** Markdown Lint **************
echo 'Starting markdown lint'
MYMDL=$(mdl --config ${PROJECT_PATH}/.config/.mdlrc .header.md examples/*/.header.md || true)
if [ -z "$MYMDL" ]
then
echo "Success - markdown lint found no linting issues!"
else
echo "Failure - markdown lint found linting issues!"
echo "$MYMDL"
exit 1
fi
#********** Terraform Docs *************
echo 'Starting terraform-docs'
TDOCS="$(terraform-docs --config ${PROJECT_PATH}/.config/.terraform-docs.yaml --lockfile=false ./)"
git add -N README.md
GDIFF="$(git diff --compact-summary)"
if [ -z "$GDIFF" ]
then
echo "Success - Terraform Docs creation verified!"
else
echo "Failure - Terraform Docs creation failed, ensure you have precommit installed and running before submitting the Pull Request"
exit 1
fi
#***************************************
echo "End of Static Tests"
#********** Exit Code *************
exit $EXIT_CODE
86 changes: 86 additions & 0 deletions .project_automation/static_tests/static_tests.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
#!/bin/bash

## NOTE: paths may differ when running in a managed task. To ensure behavior is consistent between
# managed and local tasks always use these variables for the project and project type path
PROJECT_PATH=${BASE_PATH}/project
PROJECT_TYPE_PATH=${BASE_PATH}/projecttype

echo "Starting Static Tests"

#********** Terraform Validate *************
cd ${PROJECT_PATH}
terraform init
terraform validate
if [ $? -eq 0 ]
then
echo "Success - Terraform validate"
else
echo "Failure - Terraform validate"
exit 1
fi

#********** tflint ********************
echo 'Starting tflint'
tflint --init --config ${PROJECT_PATH}/.config/.tflint.hcl
MYLINT=$(tflint --force --config ${PROJECT_PATH}/.config/.tflint.hcl)
if [ -z "$MYLINT" ]
then
echo "Success - tflint found no linting issues!"
else
echo "Failure - tflint found linting issues!"
echo "$MYLINT"
exit 1
fi

#********** tfsec *********************
echo 'Starting tfsec'
MYTFSEC=$(tfsec . --config-file ${PROJECT_PATH}/.config/.tfsec.yml --custom-check-dir ${PROJECT_PATH}/.config/.tfsec)
if [[ $MYTFSEC == *"No problems detected!"* ]];
then
echo "Success - tfsec found no security issues!"
echo "$MYTFSEC"
else
echo "Failure - tfsec found security issues!"
echo "$MYTFSEC"
exit 1
fi

#********** Checkov Analysis *************
echo "Running Checkov Analysis"
checkov --config-file ${PROJECT_PATH}/.config/.checkov.yml
if [ $? -eq 0 ]
then
echo "Success - Checkov found no issues!"
else
echo "Failure - Checkov found issues!"
exit 1
fi

#********** Markdown Lint **************
echo 'Starting markdown lint'
MYMDL=$(mdl --config ${PROJECT_PATH}/.config/.mdlrc .header.md examples/*/.header.md)
if [ -z "$MYMDL" ]
then
echo "Success - markdown lint found no linting issues!"
else
echo "Failure - markdown lint found linting issues!"
echo "$MYMDL"
exit 1
fi

#********** Terraform Docs *************
echo 'Starting terraform-docs'
TDOCS="$(terraform-docs --config ${PROJECT_PATH}/.config/.terraform-docs.yaml --lockfile=false ./)"
git add -N README.md
GDIFF="$(git diff --compact-summary)"
if [ -z "$GDIFF" ]
then
echo "Success - Terraform Docs creation verified!"
else
echo "Failure - Terraform Docs creation failed, ensure you have precommit installed and running before submitting the Pull Request. TIPS: false error may occur if you have unstaged files in your repo"
echo "$GDIFF"
exit 1
fi

#***************************************
echo "End of Static Tests"
21 changes: 0 additions & 21 deletions test/examples_basic_test.go

This file was deleted.

Loading