From 8da4d53052f28499d7f15eeebfb7bb0dd84ebbc4 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 29 Jun 2025 23:29:46 +0000 Subject: [PATCH 1/2] Initial plan From 90e90bf54f9ff2af3708ce20daf003eaf0aa3ab2 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 29 Jun 2025 23:35:44 +0000 Subject: [PATCH 2/2] Replace lychee-action with Docker-based script for local execution Co-authored-by: trask <218610+trask@users.noreply.github.com> --- .github/scripts/check-links.sh | 35 +++++++++++++++++++ .github/scripts/dependencies.dockerfile | 3 ++ .github/workflows/build.yml | 6 ++-- .github/workflows/reusable-check-links.yml | 18 ++++++++++ .../reusable-markdown-link-check.yml | 23 ------------ lychee.toml | 9 +++++ 6 files changed, 68 insertions(+), 26 deletions(-) create mode 100755 .github/scripts/check-links.sh create mode 100644 .github/scripts/dependencies.dockerfile create mode 100644 .github/workflows/reusable-check-links.yml delete mode 100644 .github/workflows/reusable-markdown-link-check.yml create mode 100644 lychee.toml diff --git a/.github/scripts/check-links.sh b/.github/scripts/check-links.sh new file mode 100755 index 0000000000..7b8c8d70d4 --- /dev/null +++ b/.github/scripts/check-links.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +set -e + +export MSYS_NO_PATHCONV=1 # for Git Bash on Windows + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +LYCHEE_CONFIG="$SCRIPT_DIR/../../lychee.toml" +DEPENDENCIES_DOCKERFILE="$SCRIPT_DIR/dependencies.dockerfile" + +# Extract lychee version from dependencies.dockerfile +LYCHEE_VERSION=$(grep "FROM lycheeverse/lychee:" "$DEPENDENCIES_DOCKERFILE" | sed 's/.*FROM lycheeverse\/lychee:\([^ ]*\).*/\1/') + +# Build the lychee command with optional GitHub token +CMD="lycheeverse/lychee:$LYCHEE_VERSION --verbose --config ./lychee.toml" + +# Add GitHub token if available +if [[ -n "$GITHUB_TOKEN" ]]; then + CMD="$CMD --github-token $GITHUB_TOKEN" +fi + +# Add the target directory +CMD="$CMD ." + +# Determine if we should allocate a TTY +DOCKER_FLAGS="--rm --init" +if [[ -t 0 ]]; then + DOCKER_FLAGS="$DOCKER_FLAGS -it" +else + DOCKER_FLAGS="$DOCKER_FLAGS -i" +fi + +# Run lychee with proper signal handling +# shellcheck disable=SC2086 +exec docker run $DOCKER_FLAGS -v "$(dirname "$LYCHEE_CONFIG")":/data -w /data $CMD \ No newline at end of file diff --git a/.github/scripts/dependencies.dockerfile b/.github/scripts/dependencies.dockerfile new file mode 100644 index 0000000000..f76746362a --- /dev/null +++ b/.github/scripts/dependencies.dockerfile @@ -0,0 +1,3 @@ +# this file exists so that Renovate can auto-update docker image versions that are then used elsewhere + +FROM lycheeverse/lychee:sha-2aa22f8@sha256:2e3786630482c41f9f2dd081e06d7da1c36d66996e8cf6573409b8bc418d48c4 AS lychee \ No newline at end of file diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4850fa48ca..c2bd1557f6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -118,8 +118,8 @@ jobs: name: integration-test-results path: jmx-metrics/build/reports/tests/integrationTest - markdown-link-check: - uses: ./.github/workflows/reusable-markdown-link-check.yml + check-links: + uses: ./.github/workflows/reusable-check-links.yml markdown-lint-check: uses: ./.github/workflows/reusable-markdown-lint.yml @@ -142,7 +142,7 @@ jobs: # and so would not short-circuit if used in the second-last position name: publish-snapshots${{ (github.ref_name != 'main' || github.repository != 'open-telemetry/opentelemetry-java-contrib') && ' (skipped)' || '' }} needs: - # intentionally not blocking snapshot publishing on markdown-link-check or misspell-check + # intentionally not blocking snapshot publishing on check-links or misspell-check - build - integration-test runs-on: ubuntu-latest diff --git a/.github/workflows/reusable-check-links.yml b/.github/workflows/reusable-check-links.yml new file mode 100644 index 0000000000..dc6547d591 --- /dev/null +++ b/.github/workflows/reusable-check-links.yml @@ -0,0 +1,18 @@ +name: Reusable - Check links + +on: + workflow_call: + +permissions: + contents: read + +jobs: + check-links: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - name: Check links + env: + GITHUB_TOKEN: ${{ github.token }} + run: ./.github/scripts/check-links.sh diff --git a/.github/workflows/reusable-markdown-link-check.yml b/.github/workflows/reusable-markdown-link-check.yml deleted file mode 100644 index 3120678ce0..0000000000 --- a/.github/workflows/reusable-markdown-link-check.yml +++ /dev/null @@ -1,23 +0,0 @@ -name: Reusable - Markdown link check - -on: - workflow_call: - -permissions: - contents: read - -jobs: - markdown-link-check: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - - uses: lycheeverse/lychee-action@82202e5e9c2f4ef1a55a3d02563e1cb6041e5332 # v2.4.1 - with: - # excluding links to pull requests and issues is done for performance - args: > - --include-fragments - --exclude "^https://github.com/open-telemetry/opentelemetry-java-contrib/(issues|pull)/\\d+$" - --max-retries 6 - --max-concurrency 1 - . diff --git a/lychee.toml b/lychee.toml new file mode 100644 index 0000000000..65e1b80138 --- /dev/null +++ b/lychee.toml @@ -0,0 +1,9 @@ +# configuration options that were used in the github workflow +include_fragments = true +max_retries = 6 +max_concurrency = 1 + +# excluding links to pull requests and issues is done for performance +exclude = [ + '^https://github.com/open-telemetry/opentelemetry-java-contrib/(issues|pull)/\\d+$', +] \ No newline at end of file