From e973f29746438ac9798712be81a2842a803c446c Mon Sep 17 00:00:00 2001 From: arnol377 Date: Wed, 26 Mar 2025 23:25:39 -0400 Subject: [PATCH] feat: enhance Terraform Validate action to include testing results --- action.yml | 47 +++++++++++++++++++++++++++++++++++++---------- 1 file changed, 37 insertions(+), 10 deletions(-) diff --git a/action.yml b/action.yml index 4cbecdb..d6bd149 100644 --- a/action.yml +++ b/action.yml @@ -1,5 +1,5 @@ name: 'Terraform Validate' -description: 'Runs terraform validate on a workspace' +description: 'Runs terraform validate and test on a workspace' inputs: working-directory: @@ -16,10 +16,12 @@ inputs: outputs: is_valid: description: 'Whether the Terraform configuration is valid (true/false)' + tests_passed: + description: 'Whether the Terraform tests passed (true/false)' stdout: - description: 'Output from terraform validate command' + description: 'Output from terraform validate and test commands' stderr: - description: 'Any error output from terraform validate command' + description: 'Any error output from terraform validate or test commands' runs: using: "composite" @@ -48,20 +50,45 @@ runs: # Capture both stdout and stderr OUTPUT=$(terraform validate -no-color $VALIDATE_ARGS 2>&1) - EXIT_CODE=$? + VALIDATE_EXIT_CODE=$? + + # Store validation output + VALIDATE_OUTPUT="$OUTPUT" + + # Run terraform test if validation passed + TEST_OUTPUT="" + TEST_EXIT_CODE=0 + if [ $VALIDATE_EXIT_CODE -eq 0 ]; then + TEST_OUTPUT=$(terraform test 2>&1) + TEST_EXIT_CODE=$? + fi + + # Combine outputs + COMBINED_OUTPUT="${VALIDATE_OUTPUT}" + if [ -n "$TEST_OUTPUT" ]; then + COMBINED_OUTPUT="${COMBINED_OUTPUT} + +=== Terraform Test Results === +${TEST_OUTPUT}" + fi # Set outputs echo "stdout<> $GITHUB_OUTPUT - echo "$OUTPUT" >> $GITHUB_OUTPUT + echo "$COMBINED_OUTPUT" >> $GITHUB_OUTPUT echo "EOF" >> $GITHUB_OUTPUT echo "stderr<> $GITHUB_OUTPUT - if [ $EXIT_CODE -ne 0 ]; then - echo "$OUTPUT" >> $GITHUB_OUTPUT + if [ $VALIDATE_EXIT_CODE -ne 0 ]; then + echo "$VALIDATE_OUTPUT" >> $GITHUB_OUTPUT + elif [ $TEST_EXIT_CODE -ne 0 ]; then + echo "$TEST_OUTPUT" >> $GITHUB_OUTPUT fi echo "EOF" >> $GITHUB_OUTPUT - echo "is_valid=$([ $EXIT_CODE -eq 0 ] && echo 'true' || echo 'false')" >> $GITHUB_OUTPUT + echo "is_valid=$([ $VALIDATE_EXIT_CODE -eq 0 ] && echo 'true' || echo 'false')" >> $GITHUB_OUTPUT + echo "tests_passed=$([ $TEST_EXIT_CODE -eq 0 ] && echo 'true' || echo 'false')" >> $GITHUB_OUTPUT - # Exit with the original exit code - exit $EXIT_CODE \ No newline at end of file + # Exit with failure if either validate or test failed + if [ $VALIDATE_EXIT_CODE -ne 0 ] || [ $TEST_EXIT_CODE -ne 0 ]; then + exit 1 + fi \ No newline at end of file