Skip to content
Open
Changes from 13 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
94 changes: 47 additions & 47 deletions .github/workflows/check-url-changes.yml
Original file line number Diff line number Diff line change
@@ -1,72 +1,72 @@
name: Check Documentation URL Changes

name: Documentation & Navigation Change Checker
on:
pull_request:
branches:
- master

jobs:
check-url-changes:
check-doc-nav-changes:
runs-on: ubuntu-latest
steps:
- name: Checkout code
- name: Checkout PR branch
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Identify deleted and renamed files
fetch-depth: 1
ref: ${{ github.event.pull_request.head.ref }}
repository: ${{ github.event.pull_request.head.repo.full_name }}
- name: Fetch base branch
run: git fetch origin ${{ github.event.pull_request.base.ref }} --depth=1
- name: Identify .md and .nav changes
run: |
# Store deleted files
DELETED_FILES=$(git diff --name-status origin/master ${{ github.event.pull_request.head.sha }} | grep '^D.*\.md$' | cut -f2- || true)
echo "DELETED_FILES<<EOF" >> $GITHUB_ENV
echo "$DELETED_FILES" >> $GITHUB_ENV
echo "EOF" >> $GITHUB_ENV
BASE=origin/${{ github.event.pull_request.base.ref }}
HEAD=${{ github.event.pull_request.head.sha }}

# Store renamed/moved files
RENAMED_FILES=$(git diff --name-status origin/master ${{ github.event.pull_request.head.sha }} | grep '^R.*\.md$' | awk '{print $2 " -> " $3}' || true)
echo "RENAMED_FILES<<EOF" >> $GITHUB_ENV
echo "$RENAMED_FILES" >> $GITHUB_ENV
echo "EOF" >> $GITHUB_ENV
# Markdown changes
DELETED_MD=$(git diff --name-status $BASE $HEAD | grep '^D.*\.md$' | cut -f2- || true)
RENAMED_MD=$(git diff --name-status $BASE $HEAD | grep '^R.*\.md$' | awk '{print $2 " -> " $3}' || true)

# Nav changes
DELETED_NAV=$(git diff --name-status $BASE $HEAD | grep '^D.*\.nav\.ya?ml$' | cut -f2- || true)
MODIFIED_NAV=$(git diff --name-status $BASE $HEAD | grep -E '^[AM].*\.nav\.ya?ml$' | cut -f2- || true)
RENAMED_NAV=$(git diff --name-status $BASE $HEAD | grep '^R.*\.nav\.ya?ml$' | awk '{print $2 " -> " $3}' || true)

# Set warning flag if there are any changes
if [ ! -z "$DELETED_FILES" ] || [ ! -z "$RENAMED_FILES" ]; then
NAV_CHANGES=""
for f in $DELETED_NAV; do NAV_CHANGES+="$f: [DELETED]\n\n"; done
for f in $MODIFIED_NAV; do DIFF=$(git diff $BASE $HEAD -- "$f" | grep -vE '^\+\+\+|^---'); NAV_CHANGES+="$f:\n$DIFF\n\n"; done
for f in $RENAMED_NAV; do NAV_CHANGES+="$f [RENAMED]\n\n"; done
echo "DELETED_MD<<EOF" >> $GITHUB_ENV
echo "$DELETED_MD" >> $GITHUB_ENV
echo "EOF" >> $GITHUB_ENV
echo "RENAMED_MD<<EOF" >> $GITHUB_ENV
echo "$RENAMED_MD" >> $GITHUB_ENV
echo "EOF" >> $GITHUB_ENV
echo "NAV_CHANGES<<EOF" >> $GITHUB_ENV
echo -e "$NAV_CHANGES" >> $GITHUB_ENV
echo "EOF" >> $GITHUB_ENV
if [ -n "$DELETED_MD$RENAMED_MD$NAV_CHANGES" ]; then
echo "warning=true" >> $GITHUB_ENV
else
echo "warning=false" >> $GITHUB_ENV
fi

# Print to console for logging
echo "Deleted files:"
echo "$DELETED_FILES"
echo -e "\nRenamed/Moved files:"
echo "$RENAMED_FILES"

- name: Post PR warning
- name: Post PR comment if relevant
if: env.warning == 'true'
uses: actions/github-script@v7
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const issue_number = context.payload.pull_request.number;
const repo = context.repo;
const deletedFiles = `${process.env.DELETED_FILES}`.trim();
const renamedFiles = `${process.env.RENAMED_FILES}`.trim();

let message = `🔍 **Documentation URL Checker**\n\nThis PR modifies documentation files in ways that could potentially create broken links.\n\n`;

if (deletedFiles) {
message += `**Deleted files:**\n\`\`\`\n${deletedFiles}\n\`\`\`\n\n`;
}

if (renamedFiles) {
message += `**Renamed/Moved files:**\n\`\`\`\n${renamedFiles}\n\`\`\`\n\n`;
}

message += `🚨 Please review these changes carefully 🚨\n\n If not handled properly, broken links (404 errors) could appear. To maintain a smooth user experience, consider:\n- Adding redirects in the \`mkdocs.yml\` file from the old URLs to the new ones\n- Updating internal references to these files`;
const deletedMd = `${process.env.DELETED_MD}`.trim();
const renamedMd = `${process.env.RENAMED_MD}`.trim();
const navChanges = `${process.env.NAV_CHANGES}`.trim();

let message = "🔍 **Documentation & Navigation Checker**\n\nThis PR modifies `.md` or `.nav.yml/.nav.yaml` files.\n\n";
if (deletedMd) message += `**Deleted Markdown files:**\n\`\`\`\n${deletedMd}\n\`\`\`\n\n`;
if (renamedMd) message += `**Renamed Markdown files:**\n\`\`\`\n${renamedMd}\n\`\`\`\n\n`;
if (navChanges) message += `**Navigation file changes:**\n\`\`\`\n${navChanges}\n\`\`\`\n\n`;

message += "🚨 Please verify:\n- Links are correct\n- TOC matches expected structure\n- Deleted/renamed entries are handled. \n\n 🚨 If not handled properly, broken links (404 errors) could appear. To maintain a smooth user experience, consider:\n- Adding redirects in the \`mkdocs.yml\` file from the old URLs to the new ones\n- Updating internal references to these files";

github.rest.issues.createComment({
owner: repo.owner,
repo: repo.repo,
issue_number: issue_number,
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.payload.pull_request.number,
body: message
});
Loading