|
1 | | -name: Azure Template Validation |
2 | | -on: |
3 | | -# workflow_dispatch: |
4 | | - push: |
5 | | - branches: |
6 | | - - main |
7 | | - - vee-pipeline-fixes |
| 1 | +name: Azure Template Validation |
| 2 | +on: |
| 3 | + workflow_dispatch: |
| 4 | + push: |
| 5 | + branches: |
| 6 | + - main |
| 7 | + - vee-pipeline-fixes |
8 | 8 | permissions: |
9 | 9 | contents: read |
10 | 10 | id-token: write |
11 | 11 | pull-requests: write |
12 | | -jobs: |
13 | | - template_validation_job: |
14 | | - runs-on: ubuntu-latest |
| 12 | +jobs: |
| 13 | + template_validation_job: |
| 14 | + runs-on: ubuntu-latest |
| 15 | + # Using an environment named 'production' may require approvals; adjust if that caused prior failures. |
15 | 16 | environment: production |
16 | | - name: Template validation |
17 | | - steps: |
18 | | - # Step 1: Checkout the code from your repository |
19 | | - - name: Checkout code |
20 | | - uses: actions/checkout@v4 |
21 | | - # Step 2: Validate the Azure template using microsoft/template-validation-action |
22 | | - - name: Validate Azure Template |
23 | | - uses: microsoft/template-validation-action@Latest |
24 | | - id: validation |
25 | | - env: |
26 | | - AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }} |
27 | | - AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }} |
28 | | - AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }} |
29 | | - AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }} |
30 | | - AZURE_ENV_NAME: ${{ secrets.AZURE_ENV_NAME }} |
31 | | - AZURE_LOCATION: ${{ secrets.AZURE_LOCATION }} |
32 | | - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
33 | | - # Step 3: Print the result of the validation |
34 | | - - name: Print result |
35 | | - run: cat ${{ steps.validation.outputs.resultFile }} |
| 17 | + name: Template validation |
| 18 | + steps: |
| 19 | + - name: Checkout code |
| 20 | + uses: actions/checkout@v4 |
| 21 | + |
| 22 | + - name: Azure Login |
| 23 | + uses: azure/login@v1 |
| 24 | + with: |
| 25 | + client-id: ${{ secrets.AZURE_CLIENT_ID }} |
| 26 | + tenant-id: ${{ secrets.AZURE_TENANT_ID }} |
| 27 | + subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} |
| 28 | + |
| 29 | + - name: Validate Azure Template |
| 30 | + id: validation |
| 31 | + uses: microsoft/template-validation-action@main |
| 32 | + env: |
| 33 | + # These env vars are optional for the action but retained in case the action consumes them. |
| 34 | + AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }} |
| 35 | + AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }} |
| 36 | + AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }} |
| 37 | + AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }} |
| 38 | + AZURE_ENV_NAME: ${{ secrets.AZURE_ENV_NAME }} |
| 39 | + AZURE_LOCATION: ${{ secrets.AZURE_LOCATION }} |
| 40 | + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
| 41 | + |
| 42 | + - name: Print validation result |
| 43 | + if: always() |
| 44 | + run: | |
| 45 | + if [ -n "${{ steps.validation.outputs.resultFile }}" ] && [ -f "${{ steps.validation.outputs.resultFile }}" ]; then |
| 46 | + echo "--- Validation Result File ---" |
| 47 | + cat "${{ steps.validation.outputs.resultFile }}" |
| 48 | + else |
| 49 | + echo "Result file not found (output: '${{ steps.validation.outputs.resultFile }}')." >&2 |
| 50 | + fi |
| 51 | +
|
| 52 | + - name: Fail if validation errors detected |
| 53 | + run: | |
| 54 | + file='${{ steps.validation.outputs.resultFile }}' |
| 55 | + if [ ! -f "$file" ]; then |
| 56 | + echo "No validation result file produced; failing." >&2 |
| 57 | + exit 1 |
| 58 | + fi |
| 59 | + # Heuristic: look for common error markers. |
| 60 | + if grep -Ei '"(status|level)" *: *"error"' "$file" || grep -Ei '\b(error|failed)\b' "$file"; then |
| 61 | + echo "Errors detected in template validation output." >&2 |
| 62 | + exit 1 |
| 63 | + fi |
| 64 | + echo "No blocking errors detected in validation output." |
0 commit comments