Skip to content

feat: static analysis main action (#99) #320

feat: static analysis main action (#99)

feat: static analysis main action (#99) #320

name: Static Analysis
on:
push:
branches:
- main
jobs:
static_analysis:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: init_terraform_folders
run: |
FOLDERS=$(find . -type f -name '*.tf' -exec dirname {} \; | grep -v '\.terraform' | sort -u)
echo "FOLDERS=${FOLDERS}"
pids=()
TAG=$(cat .terraform-version)
for f in $FOLDERS; do
pushd "$(pwd)/${f}"
rm -rf 99_main.tf
mv 99_main.tf.ci 99_main.tf
docker run -v $(pwd):/tmp -w /tmp hashicorp/terraform:$TAG init &
pids+=($!)
popd
done
# Wait for each specific process to terminate.
# Instead of this loop, a single call to 'wait' would wait for all the jobs
# to terminate, but it would not give us their exit status.
#
for pid in "${pids[@]}"; do
#
# Waiting on a specific PID makes the wait command return with the exit
# status of that process. Because of the 'set -e' setting, any exit status
# other than zero causes the current shell to terminate with that exit
# status as well.
#
wait "$pid"
done
- name: run_pre_commit_terraform
run: |
TAG=v1.77.0
docker run -v $(pwd):/lint -w /lint ghcr.io/antonbabenko/pre-commit-terraform:$TAG run -a