From 7e497eea7435498fdbbdeb6f7984f836725923d8 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 2 Dec 2025 14:43:00 +0000 Subject: [PATCH 1/2] Initial plan From ddcc873970efc619166c5c9cfc3c3c096ff20166 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 2 Dec 2025 14:55:25 +0000 Subject: [PATCH 2/2] Fix shellcheck SC2086 quoting issues in shell scripts Quote variable expansions to prevent word splitting and glob expansion: - go-pattern-detector.md: Quote $GITHUB_PATH - release.md: Quote $GITHUB_OUTPUT, $GITHUB_ENV, and file path in jq command Fixes #5295 Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com> --- .github/workflows/go-pattern-detector.lock.yml | 4 ++-- .github/workflows/go-pattern-detector.md | 2 +- .github/workflows/release.lock.yml | 14 +++++++------- .github/workflows/release.md | 10 +++++----- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/.github/workflows/go-pattern-detector.lock.yml b/.github/workflows/go-pattern-detector.lock.yml index d99b9f81fbc..30f488670a4 100644 --- a/.github/workflows/go-pattern-detector.lock.yml +++ b/.github/workflows/go-pattern-detector.lock.yml @@ -47,7 +47,7 @@ # run: | # # Install ast-grep using cargo for better version control and security # cargo install ast-grep --locked -# echo "$HOME/.cargo/bin" >> $GITHUB_PATH +# echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" # - name: Detect Go patterns # id: detect # run: | @@ -4425,7 +4425,7 @@ jobs: run: | # Install ast-grep using cargo for better version control and security cargo install ast-grep --locked - echo "$HOME/.cargo/bin" >> $GITHUB_PATH + echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - name: Detect Go patterns id: detect run: | diff --git a/.github/workflows/go-pattern-detector.md b/.github/workflows/go-pattern-detector.md index 31e9529b21f..90f3ee7eb3f 100644 --- a/.github/workflows/go-pattern-detector.md +++ b/.github/workflows/go-pattern-detector.md @@ -24,7 +24,7 @@ jobs: run: | # Install ast-grep using cargo for better version control and security cargo install ast-grep --locked - echo "$HOME/.cargo/bin" >> $GITHUB_PATH + echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" - name: Detect Go patterns id: detect run: | diff --git a/.github/workflows/release.lock.yml b/.github/workflows/release.lock.yml index 90e621d7835..529deab88a9 100644 --- a/.github/workflows/release.lock.yml +++ b/.github/workflows/release.lock.yml @@ -80,7 +80,7 @@ # RELEASE_TAG="${GITHUB_REF#refs/tags/}" # echo "Getting release ID for tag: $RELEASE_TAG" # RELEASE_ID=$(gh release view "$RELEASE_TAG" --json databaseId --jq '.databaseId') -# echo "release_id=$RELEASE_ID" >> $GITHUB_OUTPUT +# echo "release_id=$RELEASE_ID" >> "$GITHUB_OUTPUT" # echo "✓ Release ID: $RELEASE_ID" # steps: # - name: Setup environment and fetch release data @@ -99,7 +99,7 @@ # RELEASE_TAG="${GITHUB_REF#refs/tags/}" # echo "Processing release: $RELEASE_TAG" # -# echo "RELEASE_TAG=$RELEASE_TAG" >> $GITHUB_ENV +# echo "RELEASE_TAG=$RELEASE_TAG" >> "$GITHUB_ENV" # # # Get the current release information # gh release view "$RELEASE_TAG" --json name,tagName,createdAt,publishedAt,url,body > /tmp/gh-aw/release-data/current_release.json @@ -110,12 +110,12 @@ # # if [ -z "$PREV_RELEASE_TAG" ]; then # echo "No previous release found. This appears to be the first release." -# echo "PREV_RELEASE_TAG=" >> $GITHUB_ENV +# echo "PREV_RELEASE_TAG=" >> "$GITHUB_ENV" # touch /tmp/gh-aw/release-data/pull_requests.json # echo "[]" > /tmp/gh-aw/release-data/pull_requests.json # else # echo "Previous release: $PREV_RELEASE_TAG" -# echo "PREV_RELEASE_TAG=$PREV_RELEASE_TAG" >> $GITHUB_ENV +# echo "PREV_RELEASE_TAG=$PREV_RELEASE_TAG" >> "$GITHUB_ENV" # # # Get commits between releases # echo "Fetching commits between $PREV_RELEASE_TAG and $RELEASE_TAG..." @@ -132,7 +132,7 @@ # --jq "[.[] | select(.mergedAt >= \"$PREV_PUBLISHED_AT\" and .mergedAt <= \"$CURR_PUBLISHED_AT\")]" \ # > /tmp/gh-aw/release-data/pull_requests.json # -# PR_COUNT=$(jq length /tmp/gh-aw/release-data/pull_requests.json) +# PR_COUNT=$(jq length "/tmp/gh-aw/release-data/pull_requests.json") # echo "✓ Fetched $PR_COUNT pull requests" # fi # @@ -461,7 +461,7 @@ jobs: - env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} name: Setup environment and fetch release data - run: "set -e\nmkdir -p /tmp/gh-aw/release-data\n\n# Use the release ID from the release job\necho \"Release ID from release job: ${{ needs.release.outputs.release_id }}\"\n\n# Get the release tag from the push event\nif [[ ! \"$GITHUB_REF\" == refs/tags/* ]]; then\n echo \"Error: Push event triggered but GITHUB_REF is not a tag: $GITHUB_REF\"\n exit 1\nfi\nRELEASE_TAG=\"${GITHUB_REF#refs/tags/}\"\necho \"Processing release: $RELEASE_TAG\"\n\necho \"RELEASE_TAG=$RELEASE_TAG\" >> $GITHUB_ENV\n\n# Get the current release information\ngh release view \"$RELEASE_TAG\" --json name,tagName,createdAt,publishedAt,url,body > /tmp/gh-aw/release-data/current_release.json\necho \"✓ Fetched current release information\"\n\n# Get the previous release to determine the range\nPREV_RELEASE_TAG=$(gh release list --limit 2 --json tagName --jq '.[1].tagName // empty')\n\nif [ -z \"$PREV_RELEASE_TAG\" ]; then\n echo \"No previous release found. This appears to be the first release.\"\n echo \"PREV_RELEASE_TAG=\" >> $GITHUB_ENV\n touch /tmp/gh-aw/release-data/pull_requests.json\n echo \"[]\" > /tmp/gh-aw/release-data/pull_requests.json\nelse\n echo \"Previous release: $PREV_RELEASE_TAG\"\n echo \"PREV_RELEASE_TAG=$PREV_RELEASE_TAG\" >> $GITHUB_ENV\n \n # Get commits between releases\n echo \"Fetching commits between $PREV_RELEASE_TAG and $RELEASE_TAG...\"\n git fetch --unshallow 2>/dev/null || git fetch --depth=1000\n \n # Get all merged PRs between the two releases\n echo \"Fetching pull requests merged between releases...\"\n PREV_PUBLISHED_AT=$(gh release view \"$PREV_RELEASE_TAG\" --json publishedAt --jq .publishedAt)\n CURR_PUBLISHED_AT=$(gh release view \"$RELEASE_TAG\" --json publishedAt --jq .publishedAt)\n gh pr list \\\n --state merged \\\n --limit 1000 \\\n --json number,title,author,labels,mergedAt,url,body \\\n --jq \"[.[] | select(.mergedAt >= \\\"$PREV_PUBLISHED_AT\\\" and .mergedAt <= \\\"$CURR_PUBLISHED_AT\\\")]\" \\\n > /tmp/gh-aw/release-data/pull_requests.json\n \n PR_COUNT=$(jq length /tmp/gh-aw/release-data/pull_requests.json)\n echo \"✓ Fetched $PR_COUNT pull requests\"\nfi\n\n# Get the CHANGELOG.md content around this version\nif [ -f \"CHANGELOG.md\" ]; then\n cp CHANGELOG.md /tmp/gh-aw/release-data/CHANGELOG.md\n echo \"✓ Copied CHANGELOG.md for reference\"\nfi\n\n# List documentation files for linking\nfind docs -type f -name \"*.md\" 2>/dev/null > /tmp/gh-aw/release-data/docs_files.txt || echo \"No docs directory found\"\n\necho \"✓ Setup complete. Data available in /tmp/gh-aw/release-data/\"\n" + run: "set -e\nmkdir -p /tmp/gh-aw/release-data\n\n# Use the release ID from the release job\necho \"Release ID from release job: ${{ needs.release.outputs.release_id }}\"\n\n# Get the release tag from the push event\nif [[ ! \"$GITHUB_REF\" == refs/tags/* ]]; then\n echo \"Error: Push event triggered but GITHUB_REF is not a tag: $GITHUB_REF\"\n exit 1\nfi\nRELEASE_TAG=\"${GITHUB_REF#refs/tags/}\"\necho \"Processing release: $RELEASE_TAG\"\n\necho \"RELEASE_TAG=$RELEASE_TAG\" >> \"$GITHUB_ENV\"\n\n# Get the current release information\ngh release view \"$RELEASE_TAG\" --json name,tagName,createdAt,publishedAt,url,body > /tmp/gh-aw/release-data/current_release.json\necho \"✓ Fetched current release information\"\n\n# Get the previous release to determine the range\nPREV_RELEASE_TAG=$(gh release list --limit 2 --json tagName --jq '.[1].tagName // empty')\n\nif [ -z \"$PREV_RELEASE_TAG\" ]; then\n echo \"No previous release found. This appears to be the first release.\"\n echo \"PREV_RELEASE_TAG=\" >> \"$GITHUB_ENV\"\n touch /tmp/gh-aw/release-data/pull_requests.json\n echo \"[]\" > /tmp/gh-aw/release-data/pull_requests.json\nelse\n echo \"Previous release: $PREV_RELEASE_TAG\"\n echo \"PREV_RELEASE_TAG=$PREV_RELEASE_TAG\" >> \"$GITHUB_ENV\"\n \n # Get commits between releases\n echo \"Fetching commits between $PREV_RELEASE_TAG and $RELEASE_TAG...\"\n git fetch --unshallow 2>/dev/null || git fetch --depth=1000\n \n # Get all merged PRs between the two releases\n echo \"Fetching pull requests merged between releases...\"\n PREV_PUBLISHED_AT=$(gh release view \"$PREV_RELEASE_TAG\" --json publishedAt --jq .publishedAt)\n CURR_PUBLISHED_AT=$(gh release view \"$RELEASE_TAG\" --json publishedAt --jq .publishedAt)\n gh pr list \\\n --state merged \\\n --limit 1000 \\\n --json number,title,author,labels,mergedAt,url,body \\\n --jq \"[.[] | select(.mergedAt >= \\\"$PREV_PUBLISHED_AT\\\" and .mergedAt <= \\\"$CURR_PUBLISHED_AT\\\")]\" \\\n > /tmp/gh-aw/release-data/pull_requests.json\n \n PR_COUNT=$(jq length \"/tmp/gh-aw/release-data/pull_requests.json\")\n echo \"✓ Fetched $PR_COUNT pull requests\"\nfi\n\n# Get the CHANGELOG.md content around this version\nif [ -f \"CHANGELOG.md\" ]; then\n cp CHANGELOG.md /tmp/gh-aw/release-data/CHANGELOG.md\n echo \"✓ Copied CHANGELOG.md for reference\"\nfi\n\n# List documentation files for linking\nfind docs -type f -name \"*.md\" 2>/dev/null > /tmp/gh-aw/release-data/docs_files.txt || echo \"No docs directory found\"\n\necho \"✓ Setup complete. Data available in /tmp/gh-aw/release-data/\"\n" - name: Configure Git credentials env: @@ -5888,7 +5888,7 @@ jobs: RELEASE_TAG="${GITHUB_REF#refs/tags/}" echo "Getting release ID for tag: $RELEASE_TAG" RELEASE_ID=$(gh release view "$RELEASE_TAG" --json databaseId --jq '.databaseId') - echo "release_id=$RELEASE_ID" >> $GITHUB_OUTPUT + echo "release_id=$RELEASE_ID" >> "$GITHUB_OUTPUT" echo "✓ Release ID: $RELEASE_ID" env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/release.md b/.github/workflows/release.md index 50603ca47bb..02a9d71d60d 100644 --- a/.github/workflows/release.md +++ b/.github/workflows/release.md @@ -57,7 +57,7 @@ jobs: RELEASE_TAG="${GITHUB_REF#refs/tags/}" echo "Getting release ID for tag: $RELEASE_TAG" RELEASE_ID=$(gh release view "$RELEASE_TAG" --json databaseId --jq '.databaseId') - echo "release_id=$RELEASE_ID" >> $GITHUB_OUTPUT + echo "release_id=$RELEASE_ID" >> "$GITHUB_OUTPUT" echo "✓ Release ID: $RELEASE_ID" steps: - name: Setup environment and fetch release data @@ -76,7 +76,7 @@ steps: RELEASE_TAG="${GITHUB_REF#refs/tags/}" echo "Processing release: $RELEASE_TAG" - echo "RELEASE_TAG=$RELEASE_TAG" >> $GITHUB_ENV + echo "RELEASE_TAG=$RELEASE_TAG" >> "$GITHUB_ENV" # Get the current release information gh release view "$RELEASE_TAG" --json name,tagName,createdAt,publishedAt,url,body > /tmp/gh-aw/release-data/current_release.json @@ -87,12 +87,12 @@ steps: if [ -z "$PREV_RELEASE_TAG" ]; then echo "No previous release found. This appears to be the first release." - echo "PREV_RELEASE_TAG=" >> $GITHUB_ENV + echo "PREV_RELEASE_TAG=" >> "$GITHUB_ENV" touch /tmp/gh-aw/release-data/pull_requests.json echo "[]" > /tmp/gh-aw/release-data/pull_requests.json else echo "Previous release: $PREV_RELEASE_TAG" - echo "PREV_RELEASE_TAG=$PREV_RELEASE_TAG" >> $GITHUB_ENV + echo "PREV_RELEASE_TAG=$PREV_RELEASE_TAG" >> "$GITHUB_ENV" # Get commits between releases echo "Fetching commits between $PREV_RELEASE_TAG and $RELEASE_TAG..." @@ -109,7 +109,7 @@ steps: --jq "[.[] | select(.mergedAt >= \"$PREV_PUBLISHED_AT\" and .mergedAt <= \"$CURR_PUBLISHED_AT\")]" \ > /tmp/gh-aw/release-data/pull_requests.json - PR_COUNT=$(jq length /tmp/gh-aw/release-data/pull_requests.json) + PR_COUNT=$(jq length "/tmp/gh-aw/release-data/pull_requests.json") echo "✓ Fetched $PR_COUNT pull requests" fi