This is an automated email from the ASF dual-hosted git repository. github-merge-queue[bot] pushed a commit to branch gh-readonly-queue/dev/pr-12469-866079361a2d8fb747361e889eec4c12e1f3aa10 in repository https://gitbox.apache.org/repos/asf/seatunnel.git
commit a93005261d6f0af1a6a4f9d250fed632d34c6f86 Author: Goutam Adwant <[email protected]> AuthorDate: Mon Sep 28 13:23:45 2026 +0000 [Fix][CI] Check only changed markdown files for dead links on branch pushes (#12469) --- .github/workflows/backend.yml | 50 ++++++++++++++++++++++++++++++++++++++----- 1 file changed, 45 insertions(+), 5 deletions(-) diff --git a/.github/workflows/backend.yml b/.github/workflows/backend.yml index 1745584921..43e7ea115f 100644 --- a/.github/workflows/backend.yml +++ b/.github/workflows/backend.yml @@ -132,11 +132,51 @@ jobs: continue-on-error: true steps: - uses: actions/checkout@v4 - - run: sudo npm install -g [email protected] - - run: | - for file in $(find . -name "*.md"); do - markdown-link-check -c .dlc.json -q "$file" - done + with: + fetch-depth: '2000' + - name: Collect markdown files to check + env: + # The nightly run and pushes to apache/seatunnel dev check every file. + # Other pushes only check markdown files changed against apache/seatunnel dev. + FULL_SCAN: ${{ github.event_name == 'schedule' || (github.repository_owner == 'apache' && github.ref == 'refs/heads/dev') }} + run: | + md_files="${RUNNER_TEMP}/md-files.txt" + if [[ "$FULL_SCAN" != 'true' ]]; then + git remote add apache https://github.com/apache/seatunnel + if git fetch --no-tags --depth=2000 apache dev && base=$(git merge-base FETCH_HEAD HEAD); then + git -c core.quotePath=false diff --name-only --diff-filter=d "$base" HEAD -- '*.md' > "$md_files" + else + echo "::warning::Could not find the merge base with apache/seatunnel dev; checking all markdown files" + FULL_SCAN='true' + fi + fi + if [[ "$FULL_SCAN" == 'true' ]]; then + find . -name "*.md" > "$md_files" + fi + echo "Markdown files to check: $(wc -l < "$md_files")" + echo "MD_FILES=$md_files" >> "$GITHUB_ENV" + - name: Check links + run: | + if [[ ! -s "$MD_FILES" ]]; then + echo "No markdown files to check." + exit 0 + fi + sudo npm install -g [email protected] + failed=() + while IFS= read -r file; do + if ! markdown-link-check -c .dlc.json -q -- "$file" < /dev/null; then + # markdown-link-check 3.8.7 only retries HTTP 429, so give + # transient 5xx responses and timeouts one more chance. + echo "Retrying $file in 30 seconds ..." + sleep 30 + markdown-link-check -c .dlc.json -q -- "$file" < /dev/null || failed+=("$file") + fi + done < "$MD_FILES" + if (( ${#failed[@]} > 0 )); then + echo "Dead links found in:" + printf ' %s\n' "${failed[@]}" + exit 1 + fi sanity-check: name: Sanity check results
