mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
chore(provisioner/terraform): make testdata generate.sh parallel (#16326)
This commit is contained in:
+54
-18
@@ -3,37 +3,73 @@
|
||||
set -euo pipefail
|
||||
cd "$(dirname "${BASH_SOURCE[0]}")"
|
||||
|
||||
for d in */; do
|
||||
pushd "$d"
|
||||
generate() {
|
||||
local name="$1"
|
||||
|
||||
echo "=== BEGIN: $name"
|
||||
terraform init -upgrade &&
|
||||
terraform plan -out terraform.tfplan &&
|
||||
terraform show -json ./terraform.tfplan | jq >"$name".tfplan.json &&
|
||||
terraform graph -type=plan >"$name".tfplan.dot &&
|
||||
rm terraform.tfplan &&
|
||||
terraform apply -auto-approve &&
|
||||
terraform show -json ./terraform.tfstate | jq >"$name".tfstate.json &&
|
||||
rm terraform.tfstate &&
|
||||
terraform graph -type=plan >"$name".tfstate.dot
|
||||
ret=$?
|
||||
echo "=== END: $name"
|
||||
if [[ $ret -ne 0 ]]; then
|
||||
return $ret
|
||||
fi
|
||||
}
|
||||
|
||||
run() {
|
||||
d="$1"
|
||||
cd "$d"
|
||||
name=$(basename "$(pwd)")
|
||||
|
||||
# This needs care to update correctly.
|
||||
if [[ $name == "kubernetes-metadata" ]]; then
|
||||
popd
|
||||
continue
|
||||
echo "== Skipping: $name"
|
||||
return 0
|
||||
fi
|
||||
|
||||
# This directory is used for a different purpose (quick workaround).
|
||||
if [[ $name == "cleanup-stale-plugins" ]]; then
|
||||
popd
|
||||
continue
|
||||
echo "== Skipping: $name"
|
||||
return 0
|
||||
fi
|
||||
|
||||
if [[ $name == "timings-aggregation" ]]; then
|
||||
popd
|
||||
continue
|
||||
echo "== Skipping: $name"
|
||||
return 0
|
||||
fi
|
||||
|
||||
terraform init -upgrade
|
||||
terraform plan -out terraform.tfplan
|
||||
terraform show -json ./terraform.tfplan | jq >"$name".tfplan.json
|
||||
terraform graph -type=plan >"$name".tfplan.dot
|
||||
rm terraform.tfplan
|
||||
terraform apply -auto-approve
|
||||
terraform show -json ./terraform.tfstate | jq >"$name".tfstate.json
|
||||
rm terraform.tfstate
|
||||
terraform graph -type=plan >"$name".tfstate.dot
|
||||
popd
|
||||
echo "== Generating test data for: $name"
|
||||
if ! out="$(generate "$name" 2>&1)"; then
|
||||
echo "$out"
|
||||
echo "== Error generating test data for: $name"
|
||||
return 1
|
||||
fi
|
||||
echo "== Done generating test data for: $name"
|
||||
exit 0
|
||||
}
|
||||
|
||||
declare -a jobs=()
|
||||
for d in */; do
|
||||
run "$d" &
|
||||
jobs+=($!)
|
||||
done
|
||||
|
||||
err=0
|
||||
for job in "${jobs[@]}"; do
|
||||
if ! wait "$job"; then
|
||||
err=$((err + 1))
|
||||
fi
|
||||
done
|
||||
if [[ $err -ne 0 ]]; then
|
||||
echo "ERROR: Failed to generate test data for $err modules"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
terraform version -json | jq -r '.terraform_version' >version.txt
|
||||
|
||||
Reference in New Issue
Block a user