1616 runs-on : ubuntu-latest
1717 steps :
1818 - name : Checkout repository
19- uses : actions/checkout@v5
19+ uses : actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5
20+ with :
21+ persist-credentials : false
2022
2123 - name : Create lychee config
2224 run : |
@@ -380,7 +382,7 @@ jobs:
380382
381383
382384 - name : Upload URLs (early, for debugging)
383- uses : actions/upload-artifact@v6
385+ uses : actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6
384386 with :
385387 name : urls
386388 path : |
@@ -392,7 +394,7 @@ jobs:
392394 - name : Check GitHub links (very low concurrency to avoid 503 rate limiting)
393395 id : lychee_github
394396 if : steps.extract_github_http.outputs.github_http_count != '0'
395- uses : lycheeverse/lychee-action@v2
397+ uses : lycheeverse/lychee-action@8646ba30535128ac92d33dfc9133794bfdd9b411 # v2
396398 with :
397399 args : >-
398400 --no-progress
@@ -408,7 +410,7 @@ jobs:
408410
409411 - name : Check non-GitHub links (high concurrency)
410412 id : lychee_main
411- uses : lycheeverse/lychee-action@v2
413+ uses : lycheeverse/lychee-action@8646ba30535128ac92d33dfc9133794bfdd9b411 # v2
412414 with :
413415 args : >-
414416 --config lychee.toml
@@ -600,15 +602,15 @@ jobs:
600602 broken_count=$(wc -l < broken-links.txt | tr -d ' ')
601603
602604 # Get rate limit stats
603- rate_limited="${{ steps.retry429.outputs.rate_limited_count } }"
605+ rate_limited="${STEPS_RETRY429_OUTPUTS_RATE_LIMITED_COUNT }"
604606 rate_limited=${rate_limited:-0}
605- still_failing_429="${{ steps.retry429.outputs.still_failing_429 } }"
607+ still_failing_429="${STEPS_RETRY429_OUTPUTS_STILL_FAILING_429 }"
606608 still_failing_429=${still_failing_429:-0}
607609
608610 # Get GitHub local verification stats
609- github_verified="${{ steps.verify_github.outputs.verified_count } }"
611+ github_verified="${STEPS_VERIFY_GITHUB_OUTPUTS_VERIFIED_COUNT }"
610612 github_verified=${github_verified:-0}
611- github_missing="${{ steps.verify_github.outputs.missing_count } }"
613+ github_missing="${STEPS_VERIFY_GITHUB_OUTPUTS_MISSING_COUNT }"
612614 github_missing=${github_missing:-0}
613615
614616 # Build clean errors-only report
@@ -682,9 +684,9 @@ jobs:
682684 cat lychee-summary-table.md
683685 echo ""
684686 # Get repo-internal GitHub URL counts
685- verified_locally="${{ steps.retry429.outputs.verified_locally } }"
687+ verified_locally="${STEPS_RETRY429_OUTPUTS_VERIFIED_LOCALLY }"
686688 verified_locally=${verified_locally:-0}
687- missing_locally="${{ steps.retry429.outputs.missing_locally } }"
689+ missing_locally="${STEPS_RETRY429_OUTPUTS_MISSING_LOCALLY }"
688690 missing_locally=${missing_locally:-0}
689691
690692 echo "Recovery Info:"
@@ -763,18 +765,25 @@ jobs:
763765
764766 echo ""
765767 } >> "$GITHUB_STEP_SUMMARY"
768+ env :
769+ STEPS_RETRY429_OUTPUTS_RATE_LIMITED_COUNT : ${{ steps.retry429.outputs.rate_limited_count }}
770+ STEPS_RETRY429_OUTPUTS_STILL_FAILING_429 : ${{ steps.retry429.outputs.still_failing_429 }}
771+ STEPS_VERIFY_GITHUB_OUTPUTS_VERIFIED_COUNT : ${{ steps.verify_github.outputs.verified_count }}
772+ STEPS_VERIFY_GITHUB_OUTPUTS_MISSING_COUNT : ${{ steps.verify_github.outputs.missing_count }}
773+ STEPS_RETRY429_OUTPUTS_VERIFIED_LOCALLY : ${{ steps.retry429.outputs.verified_locally }}
774+ STEPS_RETRY429_OUTPUTS_MISSING_LOCALLY : ${{ steps.retry429.outputs.missing_locally }}
766775
767776 - name : Upload errors-only report
768777 if : always()
769- uses : actions/upload-artifact@v6
778+ uses : actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6
770779 with :
771780 name : lychee-report
772781 path : ./lychee-report.md
773782 if-no-files-found : ignore
774783
775784 - name : Upload lychee outputs and verification results
776785 if : always()
777- uses : actions/upload-artifact@v6
786+ uses : actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6
778787 with :
779788 name : lychee-outputs
780789 path : |
@@ -787,7 +796,7 @@ jobs:
787796 - name : Create PR for broken links
788797 id : create-pr
789798 if : steps.check_failures.outputs.has_other_failures == 'true' || steps.retry429.outputs.has_429_failures == 'true' || steps.verify_github.outputs.has_missing == 'true'
790- uses : actions/github-script@v8
799+ uses : actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
791800 env :
792801 DEVIN_PROMPT : |
793802 @devin-ai-integration Please fix the broken links detected by the scheduled link checker.
@@ -1042,7 +1051,7 @@ jobs:
10421051
10431052 - name : Send Slack notification for broken links
10441053 if : steps.create-pr.outputs.pr_created == 'true'
1045- uses : actions/github-script@v8
1054+ uses : actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
10461055 env :
10471056 SLACK_TOKEN : ${{ secrets.DEVIN_AI_PR_BOT_SLACK_TOKEN }}
10481057 PR_URL : ${{ steps.create-pr.outputs.pr_url }}
@@ -1085,14 +1094,18 @@ jobs:
10851094 if : steps.check_failures.outputs.has_other_failures == 'true' || steps.retry429.outputs.has_429_failures == 'true' || steps.verify_github.outputs.has_missing == 'true'
10861095 run : |
10871096 echo "Link check failed!"
1088- if [ "${{ steps.check_failures.outputs.has_other_failures } }" == "true" ]; then
1097+ if [ "${STEPS_CHECK_FAILURES_OUTPUTS_HAS_OTHER_FAILURES }" == "true" ]; then
10891098 echo "There are broken links (non-429 failures) in the report."
10901099 fi
1091- if [ "${{ steps.retry429.outputs.has_429_failures } }" == "true" ]; then
1100+ if [ "${STEPS_RETRY429_OUTPUTS_HAS_429_FAILURES }" == "true" ]; then
10921101 echo "Some URLs still returned 429 after exponential backoff retry."
10931102 echo "These URLs may need to be excluded or the rate limit needs more time to reset."
10941103 fi
1095- if [ "${{ steps.verify_github.outputs.has_missing } }" == "true" ]; then
1104+ if [ "${STEPS_VERIFY_GITHUB_OUTPUTS_HAS_MISSING }" == "true" ]; then
10961105 echo "Some GitHub URLs point to paths that don't exist in the repos."
10971106 fi
10981107 exit 1
1108+ env :
1109+ STEPS_CHECK_FAILURES_OUTPUTS_HAS_OTHER_FAILURES : ${{ steps.check_failures.outputs.has_other_failures }}
1110+ STEPS_RETRY429_OUTPUTS_HAS_429_FAILURES : ${{ steps.retry429.outputs.has_429_failures }}
1111+ STEPS_VERIFY_GITHUB_OUTPUTS_HAS_MISSING : ${{ steps.verify_github.outputs.has_missing }}
0 commit comments