From e4b828447a94d3278e4779d841f9e48ba9dc3b90 Mon Sep 17 00:00:00 2001 From: "w. ian douglas" Date: Thu, 28 Aug 2025 17:05:06 -0600 Subject: [PATCH] making small updates to recipe validation workflow (#4401) --- .github/workflows/validate-recipe-pr.yml | 61 ++++++++++++++++++++---- 1 file changed, 53 insertions(+), 8 deletions(-) diff --git a/.github/workflows/validate-recipe-pr.yml b/.github/workflows/validate-recipe-pr.yml index a26832f4..fd6b1422 100644 --- a/.github/workflows/validate-recipe-pr.yml +++ b/.github/workflows/validate-recipe-pr.yml @@ -42,22 +42,60 @@ jobs: keyring: false EOF - - name: Find and validate recipe files - id: validate + - name: Check if recipe files changed in this PR + id: recipe_changes run: | - echo "🔍 Looking for recipe files..." - RECIPE_FILES=$(find documentation/src/pages/recipes/data/recipes/ -name "*.yaml" -o -name "*.yml" 2>/dev/null || true) + set -e + echo "🔍 Checking if recipe files were modified in this PR..." + + # Get the list of changed files in this PR + CHANGED_FILES=$(git diff --name-only origin/${{ github.event.pull_request.base.ref }}..HEAD) + + echo "All changed files in PR:" + echo "$CHANGED_FILES" + echo "" + + # Check if any recipe files were changed + if echo "$CHANGED_FILES" | grep -q "^documentation/src/pages/recipes/data/recipes/.*\.(yaml|yml)$"; then + echo "recipe_files_changed=true" >> "$GITHUB_OUTPUT" + echo "✅ Recipe files were modified in this PR - proceeding with validation" + else + echo "recipe_files_changed=false" >> "$GITHUB_OUTPUT" + echo "â„šī¸ No recipe files were modified in this PR - skipping validation" + fi + + - name: Find changed recipe files in PR + id: find_changed_recipes + if: steps.recipe_changes.outputs.recipe_files_changed == 'true' + run: | + echo "🔍 Finding recipe files changed in this PR..." + + # Get the list of changed files in this PR + CHANGED_FILES=$(git diff --name-only origin/${{ github.event.pull_request.base.ref }}..HEAD) + + # Filter for recipe files only + RECIPE_FILES=$(echo "$CHANGED_FILES" | grep "^documentation/src/pages/recipes/data/recipes/" | grep -E "\.(yaml|yml)$" || true) if [ -z "$RECIPE_FILES" ]; then - echo "❌ No recipe files found in the correct location!" + echo "❌ No recipe files found in the PR changes!" echo "📁 Please add your recipe to: documentation/src/pages/recipes/data/recipes/" echo "validation_status=no_files" >> $GITHUB_OUTPUT exit 1 fi - echo "Found recipe files:" + echo "Found changed recipe files:" echo "$RECIPE_FILES" + # Save recipe file paths for validation step + echo "$RECIPE_FILES" > /tmp/changed_recipe_files.txt + + - name: Validate changed recipe files + id: validate + if: steps.recipe_changes.outputs.recipe_files_changed == 'true' + run: | + # Read the list of changed recipe files + RECIPE_FILES=$(cat /tmp/changed_recipe_files.txt) + ALL_VALID=true VALIDATION_OUTPUT="" @@ -133,6 +171,7 @@ jobs: fi - name: Comment validation results + if: steps.recipe_changes.outputs.recipe_files_changed == 'true' uses: actions/github-script@v7 with: github-token: ${{ secrets.GITHUB_TOKEN }} @@ -188,9 +227,15 @@ jobs: - name: Set validation status if: always() - env: - VALIDATION_STATUS: ${{ steps.validate.outputs.validation_status }} run: | + # Check if recipe files were changed in this PR + if [ "${{ steps.recipe_changes.outputs.recipe_files_changed }}" = "false" ]; then + # No recipe files were modified in this PR - validation skipped + echo "â„šī¸ No recipe files in PR - validation skipped" + exit 0 + fi + + VALIDATION_STATUS="${{ steps.validate.outputs.validation_status }}" if [ "$VALIDATION_STATUS" = "valid" ]; then echo "✅ All recipes are valid" exit 0