diff --git a/.github/workflows/add-netlify-links.yml b/.github/workflows/add-netlify-links.yml index 1e788760..cb0770c8 100644 --- a/.github/workflows/add-netlify-links.yml +++ b/.github/workflows/add-netlify-links.yml @@ -1,68 +1,58 @@ name: Add Netlify Links To Changed Pages on: - workflow_call: - pull_request_target: + workflow_call: + pull_request_target: jobs: - get-pr-changes: - name: Get Changed Files & Update PR Description - runs-on: ubuntu-latest - permissions: - issues: write - contents: write - pull-requests: write - repository-projects: write - steps: - - uses: actions/checkout@v4 - - name: Get Changed Files - id: changed-files - uses: tj-actions/changed-files@v44 - with: - separator: "," - files: source/** - - name: Build Netlify Links for Changed Pages - id: build_page_links - env: - CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }} - run: | - # Function to validate file paths - validate_file_path() { - local file_path="$1" - # Allow only alphanumeric characters, _ . / and - - if [[ ! "$file_path" =~ ^[a-zA-Z0-9._/-]+$ ]]; then - echo "Invalid file path detected: $file_path" >&2 - exit 1 - fi - } - - new_links="" - base_link='https://deploy-preview-${{ github.event.number }}--mongodb-docs-csharp.netlify.app' - files=$(echo "$CHANGED_FILES" | tr "," "\n") - for file in $files; do - echo "processing ${file}" - validate_file_path "$file" - if (! grep -s "includes/" <<< $file) && - (! grep -s "images/" <<< $file) && - (! grep -s "examples/" <<< $file); then - file="${file#source}" - file="${file%.txt}" - filenoslash="${file:1}" - echo "${base_link}${file}" - new_links+="
  • ${filenoslash}
  • " - else - echo "(file skipped)" - fi - done - if [ "$new_links" == "" ]; then - new_links="No pages to preview" - fi - echo "Final new_links string: " - echo "${new_links}" - echo "staging_links=${new_links}" >> "$GITHUB_OUTPUT" - - name: Update the PR Description - uses: MongoCaleb/pr-description-action@master - with: - regex: ".*" - appendContentOnMatchOnly: true - regexFlags: is - content: "\n${{ steps.build_page_links.outputs.staging_links }}\n" - token: ${{ secrets.GITHUB_TOKEN }} + get-pr-changes: + name: Get Changed Files & Update PR Description + runs-on: ubuntu-latest + permissions: + issues: write + contents: write + pull-requests: write + repository-projects: write + steps: + - uses: actions/checkout@v4 + - name: Get Changed Files + id: changed-files + # pin to a specific commit to ensure stability + uses: tj-actions/changed-files@c65cd883420fd2eb864698a825fc4162dd94482c + with: + separator: "," + files: source/** + - name: Build Netlify Links for Changed Pages + id: build_page_links + env: + CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }} + run: | + new_links="" + base_link='https://deploy-preview-${{ github.event.number }}--mongodb-docs-csharp.netlify.app' + files=$(echo "$CHANGED_FILES" | tr "," "\n") + for file in $files; do + echo "processing ${file}" + if (! grep -s "includes/" <<< "$file") && + (! grep -s "images/" <<< "$file") && + (! grep -s "examples/" <<< "$file"); then + file="${file#source}" + file="${file%.txt}" + filenoslash="${file:1}" + echo "${base_link}${file}" + new_links+="
  • ${filenoslash}
  • " + else + echo "(file skipped)" + fi + done + if [ "$new_links" == "" ]; then + new_links="No pages to preview" + fi + echo "Final new_links string: " + echo "${new_links}" + echo "staging_links=${new_links}" >> "$GITHUB_OUTPUT" + - name: Update the PR Description + uses: MongoCaleb/pr-description-action@master + with: + regex: ".*" + appendContentOnMatchOnly: true + regexFlags: is + content: "\n${{ steps.build_page_links.outputs.staging_links }}\n" + token: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file