DOCSP-47065: Load balancing #157
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Verify Redirects | |
on: | |
pull_request_target: | |
jobs: | |
verify-redirects: | |
name: Verifying Redirects | |
runs-on: ubuntu-latest | |
env: | |
REDIRECTS_FILE: "pr/config/redirects" | |
permissions: | |
pull-requests: write | |
steps: | |
- name: Check Out Base Branch | |
uses: actions/checkout@v4 | |
- name: Checkout PR Head Branch | |
uses: actions/checkout@v4 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
ref: ${{ github.event.pull_request.head.ref }} | |
repository: ${{ github.event.pull_request.head.repo.full_name }} | |
path: pr | |
- name: Get Changed Files | |
id: changed-files | |
uses: tj-actions/changed-files@c65cd883420fd2eb864698a825fc4162dd94482c | |
with: | |
include_all_old_new_renamed_files: true | |
- name: Find Missing Redirects for Renamed Files | |
id: renamed-files | |
if: steps.changed-files.outputs.renamed_files_count > 0 | |
env: | |
RENAMED_FILES: ${{ steps.changed-files.outputs.all_old_new_renamed_files }} | |
run: | | |
renamed_redirects="" | |
for file in $RENAMED_FILES; do | |
# only run for .txt files | |
if [[ ! "$file" == *.txt ]]; then | |
continue | |
fi | |
# format old and new URLs | |
old=$(echo "$file" | cut -d',' -f1) | |
old="${old#source}" | |
old="${old%.txt}" | |
new=$(echo "$file" | cut -d',' -f2) | |
new="${new#source}" | |
new="${new%.txt}" | |
redirect='${prefix}/${version}'"$old"'/ -> ${base}/${version}'"$new"'/' | |
# if redirect not already in file, add to string to add to PR description | |
if ! grep -q "$redirect" $REDIRECTS_FILE; then | |
renamed_redirects+="<li>[<v>-*]: $redirect</li>" | |
fi | |
done | |
echo "redirects=${renamed_redirects}" >> "$GITHUB_OUTPUT" | |
- name: Find Missing Redirects for Deleted Files | |
id: deleted-files | |
if: steps.changed-files.outputs.deleted_files_count > 0 | |
env: | |
DELETED_FILES: ${{ steps.changed-files.outputs.deleted_files }} | |
run: | | |
deleted_redirects="" | |
for file in $DELETED_FILES; do | |
# only run for .txt files | |
if [[ ! "$file" == *.txt ]]; then | |
continue | |
fi | |
# format old URL | |
old=$(echo "$file" | cut -d',' -f1) | |
old="${old#source}" | |
old="${old%.txt}" | |
redirect='${prefix}/${version}'"$old"'/ -> ${base}/${version}/' | |
# escape special characters before searching for string | |
escaped_redirect=$(printf '%s\n' "$redirect" | sed 's/[[*${}|\\]/\\&/g') | |
# if redirect not already in file, add to string to add to PR description | |
if ! grep -qE "${escaped_redirect}$" $REDIRECTS_FILE; then | |
deleted_redirects+="<li>[<v>-*]: $redirect</li>" | |
fi | |
done | |
echo "redirects=${deleted_redirects}" >> "$GITHUB_OUTPUT" | |
- name: Build Redirect HTML | |
id: build-redirect-html | |
env: | |
RENAMED_REDIRECTS: ${{ steps.renamed-files.outputs.redirects }} | |
DELETED_REDIRECTS: ${{ steps.deleted-files.outputs.redirects }} | |
run: | | |
redirect_html='' | |
combined_redirects="${RENAMED_REDIRECTS}${DELETED_REDIRECTS}" | |
if [ -n "$combined_redirects" ]; then | |
redirect_html="<h3>Suggested redirects for moved, renamed, and deleted files:</h3><p><em>Replace <v> with the earliest backport target version</p></em>$combined_redirects" | |
fi | |
echo "redirect_html=${redirect_html}" >> "$GITHUB_OUTPUT" | |
- name: Update PR Description | |
uses: MongoCaleb/pr-description-action@4bdfe35b98f64532b419ad20b350a92546cd3aa1 | |
with: | |
regex: "- \\[( |x)\\] Did you add redirects\\?.*" | |
appendContentOnMatchOnly: false | |
regexFlags: is | |
content: "- [ ] Did you add redirects?\n ${{ steps.build-redirect-html.outputs.redirect_html }}" | |
token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Check for duplicates in redirects file | |
run: | | |
if [[ -f "$REDIRECTS_FILE" ]]; then | |
duplicates=$(sort "$REDIRECTS_FILE" | uniq -d) | |
if [[ -n "$duplicates" ]]; then | |
echo "Duplicate lines found in $REDIRECTS_FILE:" | |
echo "$duplicates" | |
exit 1 # error | |
fi | |
else | |
"Redirects file doesn't exist. Skipping duplicate check." | |
fi |