-
Notifications
You must be signed in to change notification settings - Fork 35
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ci[pr-check-links]: dump links from baseline commit for pr link check…
…ing (#180) * ci[pr-check-links]: dump links from baseline commit for pr link checking * ci[pr-check-links]: remove stash and clean up changes after check * fix: update an invalid link * feat: update note for pr-reject-png-jpg * ci[pr-check-links]: add checks for modified and renamed anchors
- Loading branch information
Showing
3 changed files
with
59 additions
and
19 deletions.
There are no files selected for viewing
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -15,11 +15,26 @@ jobs: | |
ref: ${{ github.event.pull_request.head.ref }} | ||
repository: ${{ github.event.pull_request.head.repo.full_name }} | ||
|
||
- name: Check out main branch | ||
run: git checkout main | ||
- name: Set environment variables | ||
id: set-env | ||
run: | | ||
# Extract the base commit ID where the feature branch diverged from main | ||
base_commit=$(git merge-base origin/main ${{ github.event.pull_request.head.ref }}) | ||
echo "base_commit=$base_commit" >> $GITHUB_ENV | ||
# Extract the head commit ID on the feature branch | ||
head_commit=${{ github.event.pull_request.head.sha }} | ||
echo "head_commit=$head_commit" >> $GITHUB_ENV | ||
- name: Create baseline branch by reverting feature branch changes | ||
run: | | ||
# Create a copy of the feature branch | ||
git checkout -b feature-baseline | ||
# Reset the new branch to the base commit | ||
git reset --hard ${{ env.base_commit }} | ||
- name: Dump all links from main | ||
id: dump_links_from_main | ||
- name: Dump all links from feature-baseline | ||
uses: lycheeverse/[email protected] | ||
with: | ||
args: | | ||
|
@@ -28,25 +43,43 @@ jobs: | |
--exclude-path ./themes/ | ||
--exclude-path ./layouts/ | ||
. | ||
output: ./links-main.txt | ||
|
||
- name: Print links-main.txt in main | ||
run: cat links-main.txt | ||
|
||
- name: Stash untracked files | ||
run: git stash push --include-untracked | ||
output: links-baseline.txt | ||
|
||
- name: Check out feature branch | ||
run: git checkout ${{ github.head_ref }} | ||
|
||
- name: Apply stashed changes | ||
# Apply stashed changes, ignore errors if stash is empty | ||
run: git stash pop || true | ||
- name: Append links-baseline.txt to .lycheeignore | ||
run: cat links-baseline.txt >> .lycheeignore | ||
|
||
- name: Print .lycheeignore | ||
run: cat .lycheeignore | ||
|
||
- name: Dump names of files altered in PR and append hash sign to find links with anchors | ||
run: | | ||
git diff --name-only --diff-filter=DM ${{ env.base_commit }} ${{ env.head_commit }} > altered-files.txt | ||
sed -i 's|$|#|' altered-files.txt | ||
git diff --name-status --diff-filter=R ${{ env.base_commit }} ${{ env.head_commit }} | awk '{print $2}' > renamed-files.txt | ||
sed -i 's|$|#|' renamed-files.txt | ||
- name: Print altered-files.txt | ||
run: cat altered-files.txt | ||
|
||
- name: Append links-main.txt to .lycheeignore | ||
run: cat links-main.txt >> .lycheeignore | ||
- name: Print renamed-files.txt | ||
run: cat renamed-files.txt | ||
|
||
- name: In .lycheeignore, remove links with anchors referring to altered files | ||
run: | | ||
while IFS= read -r line; do | ||
sed -i "\|$line|d" .lycheeignore | ||
done < altered-files.txt | ||
- name: Check .lycheeignore content | ||
- name: In .lycheeignore, remove links with anchors referring to renamed files | ||
run: | | ||
while IFS= read -r line; do | ||
sed -i "\|$line|d" .lycheeignore | ||
done < renamed-files.txt | ||
- name: Print .lycheeignore with unaffected links | ||
run: cat .lycheeignore | ||
|
||
- name: Check links | ||
|
@@ -67,3 +100,9 @@ jobs: | |
echo -e "If a link is valid but fails due to a CAPTCHA challenge, IP blocking, login requirements, etc.," | ||
echo -e "consider adding such links to the .lycheeignore file to bypass future checks.\n" | ||
exit 1 | ||
- name: Clean up all changes | ||
if: always() | ||
run: | | ||
git reset --hard HEAD | ||
git clean -df |
This file contains 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
This file contains 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