From 9b26d6f5b7df0a14b4855cf46c0bbb2e6fef1618 Mon Sep 17 00:00:00 2001 From: Ron <45816308+rjaegers@users.noreply.github.com> Date: Fri, 30 Jan 2026 10:18:44 +0100 Subject: [PATCH 01/24] ci: fix updating apt dependencies --- .github/workflows/update-dependencies.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-dependencies.yml b/.github/workflows/update-dependencies.yml index 5c7a159c..d2aa1c1f 100644 --- a/.github/workflows/update-dependencies.yml +++ b/.github/workflows/update-dependencies.yml @@ -31,7 +31,7 @@ jobs: - uses: ./.github/actions/update-apt-packages id: update-packages with: - input-file: .devcontainer/${{ matrix.flavor }}/apt-requirements-*.json + input-file: .devcontainer/${{ matrix.flavor }}/apt-requirements*.json - uses: actions/create-github-app-token@29824e69f54612133e76f7eaac726eef6c875baf # v2.2.1 id: token with: From 7a3143f58cdfc2bfbd354922b3b97aa8fb3bfad3 Mon Sep 17 00:00:00 2001 From: Ron <45816308+rjaegers@users.noreply.github.com> Date: Fri, 30 Jan 2026 10:19:18 +0100 Subject: [PATCH 02/24] ci: truncate release details for extension updates --- .../update-vscode-extensions.sh | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/.github/actions/update-vscode-extensions/update-vscode-extensions.sh b/.github/actions/update-vscode-extensions/update-vscode-extensions.sh index f8d08e50..90c584e5 100755 --- a/.github/actions/update-vscode-extensions/update-vscode-extensions.sh +++ b/.github/actions/update-vscode-extensions/update-vscode-extensions.sh @@ -32,7 +32,16 @@ get_github_releasenotes() { break; fi - printf "%s\n\n" "$(gh release view --json body --jq '.body' -R $GITHUB_URL $TAG)" + RELEASE_BODY=$(gh release view --json body --jq '.body' -R $GITHUB_URL $TAG) + MAX_RELEASE_BODY_SIZE=32768 + TRUNCATED="" + + if [[ ${#RELEASE_BODY} > $MAX_RELEASE_BODY_SIZE) ]] + then + TRUNCATED="\n\n... [truncated]" + fi + + printf "%.$MAX_RELEASE_BODY_SIZEs%s\n\n" "$(gh release view --json body --jq '.body' -R $GITHUB_URL $TAG)" $TRUNCATED done } From 06c71b8f4aca48eb415dd6840a2c2cd4e6ad67a8 Mon Sep 17 00:00:00 2001 From: Ron <45816308+rjaegers@users.noreply.github.com> Date: Fri, 30 Jan 2026 10:24:10 +0100 Subject: [PATCH 03/24] ci: fix script error --- .../update-vscode-extensions/update-vscode-extensions.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/update-vscode-extensions/update-vscode-extensions.sh b/.github/actions/update-vscode-extensions/update-vscode-extensions.sh index 90c584e5..e03586c9 100755 --- a/.github/actions/update-vscode-extensions/update-vscode-extensions.sh +++ b/.github/actions/update-vscode-extensions/update-vscode-extensions.sh @@ -36,7 +36,7 @@ get_github_releasenotes() { MAX_RELEASE_BODY_SIZE=32768 TRUNCATED="" - if [[ ${#RELEASE_BODY} > $MAX_RELEASE_BODY_SIZE) ]] + if [[ ${#RELEASE_BODY} > $MAX_RELEASE_BODY_SIZE ]] then TRUNCATED="\n\n... [truncated]" fi From 041b38be1659ed0752a5f06664fd05f104d0c761 Mon Sep 17 00:00:00 2001 From: Ron <45816308+rjaegers@users.noreply.github.com> Date: Fri, 30 Jan 2026 10:26:30 +0100 Subject: [PATCH 04/24] ci: minor script fixes --- .../update-vscode-extensions/update-vscode-extensions.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/actions/update-vscode-extensions/update-vscode-extensions.sh b/.github/actions/update-vscode-extensions/update-vscode-extensions.sh index e03586c9..7a41455c 100755 --- a/.github/actions/update-vscode-extensions/update-vscode-extensions.sh +++ b/.github/actions/update-vscode-extensions/update-vscode-extensions.sh @@ -36,12 +36,12 @@ get_github_releasenotes() { MAX_RELEASE_BODY_SIZE=32768 TRUNCATED="" - if [[ ${#RELEASE_BODY} > $MAX_RELEASE_BODY_SIZE ]] + if [[ ${#RELEASE_BODY} -gt $MAX_RELEASE_BODY_SIZE ]] then TRUNCATED="\n\n... [truncated]" fi - printf "%.$MAX_RELEASE_BODY_SIZEs%s\n\n" "$(gh release view --json body --jq '.body' -R $GITHUB_URL $TAG)" $TRUNCATED + printf "%.$MAX_RELEASE_BODY_SIZEs%s\n\n" "$RELEASE_BODY" $TRUNCATED done } From 03e6010c2e25205ceb11ccc5bfcb2e782ed6db89 Mon Sep 17 00:00:00 2001 From: Ron <45816308+rjaegers@users.noreply.github.com> Date: Fri, 30 Jan 2026 10:29:44 +0100 Subject: [PATCH 05/24] ci: more script fixes --- .../update-vscode-extensions/update-vscode-extensions.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/update-vscode-extensions/update-vscode-extensions.sh b/.github/actions/update-vscode-extensions/update-vscode-extensions.sh index 7a41455c..f7131e3a 100755 --- a/.github/actions/update-vscode-extensions/update-vscode-extensions.sh +++ b/.github/actions/update-vscode-extensions/update-vscode-extensions.sh @@ -41,7 +41,7 @@ get_github_releasenotes() { TRUNCATED="\n\n... [truncated]" fi - printf "%.$MAX_RELEASE_BODY_SIZEs%s\n\n" "$RELEASE_BODY" $TRUNCATED + printf "%.*%s\n\n" "$MAX_RELEASE_BODY_SIZE" "$RELEASE_BODY" "$TRUNCATED" done } From e67d9081fdfa984b69eba1238d10ea83dd763ac1 Mon Sep 17 00:00:00 2001 From: Ron <45816308+rjaegers@users.noreply.github.com> Date: Fri, 30 Jan 2026 10:38:26 +0100 Subject: [PATCH 06/24] ci: more fixing --- .../update-vscode-extensions/update-vscode-extensions.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/update-vscode-extensions/update-vscode-extensions.sh b/.github/actions/update-vscode-extensions/update-vscode-extensions.sh index f7131e3a..11328cb6 100755 --- a/.github/actions/update-vscode-extensions/update-vscode-extensions.sh +++ b/.github/actions/update-vscode-extensions/update-vscode-extensions.sh @@ -41,7 +41,7 @@ get_github_releasenotes() { TRUNCATED="\n\n... [truncated]" fi - printf "%.*%s\n\n" "$MAX_RELEASE_BODY_SIZE" "$RELEASE_BODY" "$TRUNCATED" + printf "%.*s%s\n\n" "$MAX_RELEASE_BODY_SIZE" "$RELEASE_BODY" "$TRUNCATED" done } From 08cbea64c08ae23e8381288dd998aba504b43d9c Mon Sep 17 00:00:00 2001 From: Ron <45816308+rjaegers@users.noreply.github.com> Date: Fri, 30 Jan 2026 10:41:23 +0100 Subject: [PATCH 07/24] ci: minor refactor --- .../update-vscode-extensions/update-vscode-extensions.sh | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/actions/update-vscode-extensions/update-vscode-extensions.sh b/.github/actions/update-vscode-extensions/update-vscode-extensions.sh index 11328cb6..861f5b63 100755 --- a/.github/actions/update-vscode-extensions/update-vscode-extensions.sh +++ b/.github/actions/update-vscode-extensions/update-vscode-extensions.sh @@ -34,14 +34,13 @@ get_github_releasenotes() { RELEASE_BODY=$(gh release view --json body --jq '.body' -R $GITHUB_URL $TAG) MAX_RELEASE_BODY_SIZE=32768 - TRUNCATED="" if [[ ${#RELEASE_BODY} -gt $MAX_RELEASE_BODY_SIZE ]] then - TRUNCATED="\n\n... [truncated]" + printf "%.*s\n\n... [truncated]\n\n" "$MAX_RELEASE_BODY_SIZE" "$RELEASE_BODY" "$TRUNCATED" + else + printf "%s\n\n" "$RELEASE_BODY" fi - - printf "%.*s%s\n\n" "$MAX_RELEASE_BODY_SIZE" "$RELEASE_BODY" "$TRUNCATED" done } From 79511c9e59dca8dfa43dc762ca69999ffdab9a94 Mon Sep 17 00:00:00 2001 From: Ron <45816308+rjaegers@users.noreply.github.com> Date: Fri, 30 Jan 2026 11:09:01 +0100 Subject: [PATCH 08/24] ci: different strategy --- .../update-vscode-extensions.sh | 10 +--------- .github/workflows/update-dependencies.yml | 13 ++++++++----- 2 files changed, 9 insertions(+), 14 deletions(-) diff --git a/.github/actions/update-vscode-extensions/update-vscode-extensions.sh b/.github/actions/update-vscode-extensions/update-vscode-extensions.sh index 861f5b63..f8d08e50 100755 --- a/.github/actions/update-vscode-extensions/update-vscode-extensions.sh +++ b/.github/actions/update-vscode-extensions/update-vscode-extensions.sh @@ -32,15 +32,7 @@ get_github_releasenotes() { break; fi - RELEASE_BODY=$(gh release view --json body --jq '.body' -R $GITHUB_URL $TAG) - MAX_RELEASE_BODY_SIZE=32768 - - if [[ ${#RELEASE_BODY} -gt $MAX_RELEASE_BODY_SIZE ]] - then - printf "%.*s\n\n... [truncated]\n\n" "$MAX_RELEASE_BODY_SIZE" "$RELEASE_BODY" "$TRUNCATED" - else - printf "%s\n\n" "$RELEASE_BODY" - fi + printf "%s\n\n" "$(gh release view --json body --jq '.body' -R $GITHUB_URL $TAG)" done } diff --git a/.github/workflows/update-dependencies.yml b/.github/workflows/update-dependencies.yml index d2aa1c1f..16d94d05 100644 --- a/.github/workflows/update-dependencies.yml +++ b/.github/workflows/update-dependencies.yml @@ -67,6 +67,13 @@ jobs: id: update-extensions with: input-file: .devcontainer/${{ matrix.flavor }}/${{ matrix.file }} + - run: | + { + echo "> [!NOTE]" + echo "> Before merging this PR, please conduct a manual test checking basic functionality of the updated plug-ins. There are limited automated tests for the VS Code Extension updates." + echo "" + echo "${{ steps.update-extensions.outputs.markdown-summary }}" + } >> pull-request-body.md - uses: actions/create-github-app-token@29824e69f54612133e76f7eaac726eef6c875baf # v2.2.1 id: token with: @@ -76,11 +83,7 @@ jobs: with: commit-message: "Update ${{ join(fromJson(steps.update-extensions.outputs.updated-dependencies), ', ') }} in ${{ matrix.file }}" branch: feature/amp-devcontainer-${{ matrix.flavor }}/update-vscode-extensions-${{ matrix.file }} - body: | - > [!NOTE] - > Before merging this PR, please conduct a manual test checking basic functionality of the updated plug-ins. There are limited automated tests for the VS Code Extension updates. - - ${{ steps.update-extensions.outputs.markdown-summary }} + body-path: pull-request-body.md title: "chore(deps, ${{ matrix.flavor }}): update ${{ join(fromJson(steps.update-extensions.outputs.updated-dependencies), ', ') }} in ${{ matrix.file }}" labels: dependencies,vscode-extensions token: ${{ steps.token.outputs.token }} From 4e86f5c0231fd15c9bb2ed88f26fe7e77c7b191e Mon Sep 17 00:00:00 2001 From: Ron <45816308+rjaegers@users.noreply.github.com> Date: Fri, 30 Jan 2026 11:14:47 +0100 Subject: [PATCH 09/24] ci: enable dry-run of update-dependencies jobs --- .github/workflows/update-dependencies.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/update-dependencies.yml b/.github/workflows/update-dependencies.yml index 16d94d05..53f110eb 100644 --- a/.github/workflows/update-dependencies.yml +++ b/.github/workflows/update-dependencies.yml @@ -2,6 +2,7 @@ name: Update Dependencies on: + pull_request: schedule: - cron: "30 2 * * 0" workflow_dispatch: @@ -34,10 +35,12 @@ jobs: input-file: .devcontainer/${{ matrix.flavor }}/apt-requirements*.json - uses: actions/create-github-app-token@29824e69f54612133e76f7eaac726eef6c875baf # v2.2.1 id: token + if: github.event_name != 'pull_request' with: app-id: ${{ vars.FOREST_RELEASER_APP_ID }} private-key: ${{ secrets.FOREST_RELEASER_APP_PRIVATE_KEY }} - uses: peter-evans/create-pull-request@98357b18bf14b5342f975ff684046ec3b2a07725 # v8.0.0 + if: github.event_name != 'pull_request' with: commit-message: "Update ${{ join(fromJson(steps.update-packages.outputs.updated-dependencies), ', ') }}" branch: feature/amp-devcontainer-${{ matrix.flavor }}/update-apt-packages @@ -76,10 +79,12 @@ jobs: } >> pull-request-body.md - uses: actions/create-github-app-token@29824e69f54612133e76f7eaac726eef6c875baf # v2.2.1 id: token + if: github.event_name != 'pull_request' with: app-id: ${{ vars.FOREST_RELEASER_APP_ID }} private-key: ${{ secrets.FOREST_RELEASER_APP_PRIVATE_KEY }} - uses: peter-evans/create-pull-request@98357b18bf14b5342f975ff684046ec3b2a07725 # v8.0.0 + if: github.event_name != 'pull_request' with: commit-message: "Update ${{ join(fromJson(steps.update-extensions.outputs.updated-dependencies), ', ') }} in ${{ matrix.file }}" branch: feature/amp-devcontainer-${{ matrix.flavor }}/update-vscode-extensions-${{ matrix.file }} From 093d594d3714d2336538e90ab27ed0224a04978e Mon Sep 17 00:00:00 2001 From: Ron <45816308+rjaegers@users.noreply.github.com> Date: Fri, 30 Jan 2026 11:25:11 +0100 Subject: [PATCH 10/24] Update .github/workflows/update-dependencies.yml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Ron <45816308+rjaegers@users.noreply.github.com> --- .github/workflows/update-dependencies.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-dependencies.yml b/.github/workflows/update-dependencies.yml index 53f110eb..d2946df8 100644 --- a/.github/workflows/update-dependencies.yml +++ b/.github/workflows/update-dependencies.yml @@ -32,7 +32,7 @@ jobs: - uses: ./.github/actions/update-apt-packages id: update-packages with: - input-file: .devcontainer/${{ matrix.flavor }}/apt-requirements*.json + input-file: .devcontainer/${{ matrix.flavor }}/apt-requirements{,-*}.json - uses: actions/create-github-app-token@29824e69f54612133e76f7eaac726eef6c875baf # v2.2.1 id: token if: github.event_name != 'pull_request' From 603c367fa8cc336a647e1358ee47ab1aa52b93f8 Mon Sep 17 00:00:00 2001 From: Ron <45816308+rjaegers@users.noreply.github.com> Date: Fri, 30 Jan 2026 11:36:26 +0100 Subject: [PATCH 11/24] ci: revert copilot fix --- .github/workflows/update-dependencies.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-dependencies.yml b/.github/workflows/update-dependencies.yml index d2946df8..53f110eb 100644 --- a/.github/workflows/update-dependencies.yml +++ b/.github/workflows/update-dependencies.yml @@ -32,7 +32,7 @@ jobs: - uses: ./.github/actions/update-apt-packages id: update-packages with: - input-file: .devcontainer/${{ matrix.flavor }}/apt-requirements{,-*}.json + input-file: .devcontainer/${{ matrix.flavor }}/apt-requirements*.json - uses: actions/create-github-app-token@29824e69f54612133e76f7eaac726eef6c875baf # v2.2.1 id: token if: github.event_name != 'pull_request' From 4f7eca2e513e7d92cb31f1633d94bde57ebb4394 Mon Sep 17 00:00:00 2001 From: Ron <45816308+rjaegers@users.noreply.github.com> Date: Fri, 30 Jan 2026 10:41:50 +0000 Subject: [PATCH 12/24] ci: additional fixes --- .github/workflows/update-dependencies.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/update-dependencies.yml b/.github/workflows/update-dependencies.yml index d2946df8..8b9a7b62 100644 --- a/.github/workflows/update-dependencies.yml +++ b/.github/workflows/update-dependencies.yml @@ -14,6 +14,7 @@ jobs: name: Update APT Dependencies (๐Ÿจ ${{ matrix.flavor }}) runs-on: ubuntu-latest strategy: + fail-fast: false matrix: flavor: ["base", "cpp", "rust"] # Using our own container is required since we need all package sources @@ -32,7 +33,7 @@ jobs: - uses: ./.github/actions/update-apt-packages id: update-packages with: - input-file: .devcontainer/${{ matrix.flavor }}/apt-requirements{,-*}.json + input-file: .devcontainer/${{ matrix.flavor }}/apt-requirements*.json - uses: actions/create-github-app-token@29824e69f54612133e76f7eaac726eef6c875baf # v2.2.1 id: token if: github.event_name != 'pull_request' @@ -53,6 +54,7 @@ jobs: name: Update VS Code Extensions (๐Ÿจ ${{ matrix.flavor }}, ${{ matrix.file }}) runs-on: ubuntu-latest strategy: + fail-fast: false matrix: flavor: ["cpp", "rust"] file: ["devcontainer-metadata.json", "devcontainer.json"] @@ -75,8 +77,10 @@ jobs: echo "> [!NOTE]" echo "> Before merging this PR, please conduct a manual test checking basic functionality of the updated plug-ins. There are limited automated tests for the VS Code Extension updates." echo "" - echo "${{ steps.update-extensions.outputs.markdown-summary }}" + echo "$MARKDOWN_SUMMARY" } >> pull-request-body.md + env: + MARKDOWN_SUMMARY: ${{ steps.update-extensions.outputs.markdown-summary }} - uses: actions/create-github-app-token@29824e69f54612133e76f7eaac726eef6c875baf # v2.2.1 id: token if: github.event_name != 'pull_request' From 96018d61de6d0b41f9e2fca6cdc1bfa659e48273 Mon Sep 17 00:00:00 2001 From: Ron <45816308+rjaegers@users.noreply.github.com> Date: Fri, 30 Jan 2026 10:48:18 +0000 Subject: [PATCH 13/24] ci: another another aproach --- .github/actions/update-vscode-extensions/action.yml | 13 +++++-------- .../update-vscode-extensions.sh | 1 + .github/workflows/update-dependencies.yml | 4 ++-- 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/.github/actions/update-vscode-extensions/action.yml b/.github/actions/update-vscode-extensions/action.yml index 6104154e..eb502e85 100644 --- a/.github/actions/update-vscode-extensions/action.yml +++ b/.github/actions/update-vscode-extensions/action.yml @@ -11,9 +11,9 @@ outputs: updated-dependencies: description: JSON array with the names of the updated dependencies value: ${{ steps.update-extensions.outputs.updated-dependencies }} - markdown-summary: - description: Markdown summary of update result - value: ${{ steps.update-extensions.outputs.markdown-summary }} + markdown-summary-file: + description: Path to a file containing the markdown summary of update result + value: ${{ steps.update-extensions.outputs.markdown-summary-file }} runs: using: composite @@ -24,11 +24,8 @@ runs: sudo npm install -g @vscode/vsce shell: bash - run: | - EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64) - echo "markdown-summary<<${EOF}" >> "${GITHUB_OUTPUT}" - echo "$(${GITHUB_ACTION_PATH}/update-vscode-extensions.sh ${INPUT_FILE})" >> "${GITHUB_OUTPUT}" - echo "${EOF}" >> "${GITHUB_OUTPUT}" - + ${GITHUB_ACTION_PATH}/update-vscode-extensions.sh ${INPUT_FILE} + echo "markdown-summary-file=${RUNNER_TEMP}/markdown-summary.md" >> "${GITHUB_OUTPUT}" echo "updated-dependencies=$(cat updated-extensions.json)" >> "${GITHUB_OUTPUT}" rm updated-extensions.json id: update-extensions diff --git a/.github/actions/update-vscode-extensions/update-vscode-extensions.sh b/.github/actions/update-vscode-extensions/update-vscode-extensions.sh index f8d08e50..65562316 100755 --- a/.github/actions/update-vscode-extensions/update-vscode-extensions.sh +++ b/.github/actions/update-vscode-extensions/update-vscode-extensions.sh @@ -64,4 +64,5 @@ EXTENSIONS=$(echo "[${EXTENSIONS::-1}]" | jq 'sort_by(. | ascii_downcase)') echo $JSON | jq '.customizations.vscode.extensions = $extensions' --argjson extensions "$EXTENSIONS" > $FILE echo "$UPDATE_DETAILS_MARKDOWN" +echo "$UPDATE_DETAILS_MARKDOWN" > "${RUNNER_TEMP}/markdown-summary.md" echo "$UPDATED_EXTENSIONS_JSON" > updated-extensions.json diff --git a/.github/workflows/update-dependencies.yml b/.github/workflows/update-dependencies.yml index 8b9a7b62..89e67e01 100644 --- a/.github/workflows/update-dependencies.yml +++ b/.github/workflows/update-dependencies.yml @@ -77,10 +77,10 @@ jobs: echo "> [!NOTE]" echo "> Before merging this PR, please conduct a manual test checking basic functionality of the updated plug-ins. There are limited automated tests for the VS Code Extension updates." echo "" - echo "$MARKDOWN_SUMMARY" + cat "$MARKDOWN_SUMMARY_FILE" } >> pull-request-body.md env: - MARKDOWN_SUMMARY: ${{ steps.update-extensions.outputs.markdown-summary }} + MARKDOWN_SUMMARY_FILE: ${{ steps.update-extensions.outputs.markdown-summary-file }} - uses: actions/create-github-app-token@29824e69f54612133e76f7eaac726eef6c875baf # v2.2.1 id: token if: github.event_name != 'pull_request' From a32cad4421f1d28d0b518ee75fbed20d65b7bb43 Mon Sep 17 00:00:00 2001 From: Ron <45816308+rjaegers@users.noreply.github.com> Date: Fri, 30 Jan 2026 11:03:19 +0000 Subject: [PATCH 14/24] ci: reduce script injection attack surface --- .../update-vscode-extensions/action.yml | 6 +-- .../update-vscode-extensions.sh | 40 +++++++++++-------- .github/workflows/update-dependencies.yml | 3 +- 3 files changed, 28 insertions(+), 21 deletions(-) diff --git a/.github/actions/update-vscode-extensions/action.yml b/.github/actions/update-vscode-extensions/action.yml index eb502e85..96b507f9 100644 --- a/.github/actions/update-vscode-extensions/action.yml +++ b/.github/actions/update-vscode-extensions/action.yml @@ -24,10 +24,10 @@ runs: sudo npm install -g @vscode/vsce shell: bash - run: | - ${GITHUB_ACTION_PATH}/update-vscode-extensions.sh ${INPUT_FILE} + "${GITHUB_ACTION_PATH}/update-vscode-extensions.sh" "${INPUT_FILE}" echo "markdown-summary-file=${RUNNER_TEMP}/markdown-summary.md" >> "${GITHUB_OUTPUT}" - echo "updated-dependencies=$(cat updated-extensions.json)" >> "${GITHUB_OUTPUT}" - rm updated-extensions.json + echo "updated-dependencies=$(cat ${RUNNER_TEMP}/updated-extensions.json)" >> "${GITHUB_OUTPUT}" + rm "${RUNNER_TEMP}/updated-extensions.json" id: update-extensions shell: bash env: diff --git a/.github/actions/update-vscode-extensions/update-vscode-extensions.sh b/.github/actions/update-vscode-extensions/update-vscode-extensions.sh index 65562316..7a74c075 100755 --- a/.github/actions/update-vscode-extensions/update-vscode-extensions.sh +++ b/.github/actions/update-vscode-extensions/update-vscode-extensions.sh @@ -3,7 +3,7 @@ set -Eeuo pipefail FILE=${1:?} -JSON=$(cat $FILE) +JSON=$(cat "$FILE") EXTENSIONS= UPDATE_DETAILS_MARKDOWN= UPDATED_EXTENSIONS_JSON="[]" @@ -22,47 +22,53 @@ get_github_releasenotes() { local GITHUB_URL=${1:?} local CURRENT_RELEASE=${2:?} - gh release list --exclude-drafts --exclude-pre-releases -R $GITHUB_URL --json name,tagName --jq '.[]' | while read -r RELEASE; + gh release list --exclude-drafts --exclude-pre-releases -R "$GITHUB_URL" --json name,tagName --jq '.[]' | while read -r RELEASE; do NAME=$(echo "$RELEASE" | jq -r '.name') TAG=$(echo "$RELEASE" | jq -r '.tagName') - if [[ $NAME == *$CURRENT_RELEASE* || $TAG == v$CURRENT_RELEASE ]]; + if [[ $NAME == *"$CURRENT_RELEASE"* || $TAG == "v$CURRENT_RELEASE" ]]; then break; fi - printf "%s\n\n" "$(gh release view --json body --jq '.body' -R $GITHUB_URL $TAG)" + printf "%s\n\n" "$(gh release view --json body --jq '.body' -R "$GITHUB_URL" "$TAG")" done } -for EXTENSION in $(echo $JSON | jq -r '.customizations.vscode.extensions | flatten[]'); do +while IFS= read -r EXTENSION; do + [[ -z "$EXTENSION" ]] && continue + NAME="${EXTENSION%%@*}" CURRENT_VERSION="${EXTENSION#*@}" - LATEST_NON_PRERELEASE_VERSION_JSON=$(vsce show --json $NAME | jq '[ .versions[] | select(.properties) | select(any(.properties[].key; contains("Microsoft.VisualStudio.Code.PreRelease")) | not) ][0]') - LATEST_NON_PRERELEASE_VERSION=$(echo $LATEST_NON_PRERELEASE_VERSION_JSON | jq -r '.version') + LATEST_NON_PRERELEASE_VERSION_JSON=$(vsce show --json "$NAME" | jq '[ .versions[] | select(.properties) | select(any(.properties[].key; contains("Microsoft.VisualStudio.Code.PreRelease")) | not) ][0]') + LATEST_NON_PRERELEASE_VERSION=$(echo "$LATEST_NON_PRERELEASE_VERSION_JSON" | jq -r '.version') - if [[ $CURRENT_VERSION != $LATEST_NON_PRERELEASE_VERSION ]]; + if [[ $CURRENT_VERSION != "$LATEST_NON_PRERELEASE_VERSION" ]]; then - GITHUB_URL=$(echo $LATEST_NON_PRERELEASE_VERSION_JSON | jq -r '.properties | map(select(.key == "Microsoft.VisualStudio.Services.Links.GitHub"))[] | .value') + GITHUB_URL=$(echo "$LATEST_NON_PRERELEASE_VERSION_JSON" | jq -r '.properties | map(select(.key == "Microsoft.VisualStudio.Services.Links.GitHub"))[] | .value') if [[ -n "$GITHUB_URL" && "$GITHUB_URL" != "null" ]]; then - RELEASE_DETAILS=$(get_github_releasenotes $GITHUB_URL $CURRENT_VERSION | prevent_github_backlinks | prevent_github_at_mentions) - UPDATE_DETAILS_MARKDOWN=$(printf "Updates \`%s\` from %s to %s\n
\nRelease notes\n
\n\n%s\n
\n
\n\n%s" $NAME $CURRENT_VERSION $LATEST_NON_PRERELEASE_VERSION "$RELEASE_DETAILS" "$UPDATE_DETAILS_MARKDOWN") + RELEASE_DETAILS=$(get_github_releasenotes "$GITHUB_URL" "$CURRENT_VERSION" | prevent_github_backlinks | prevent_github_at_mentions) + UPDATE_DETAILS_MARKDOWN=$(printf "Updates \`%s\` from %s to %s\n
\nRelease notes\n
\n\n%s\n
\n
\n\n%s" "$NAME" "$CURRENT_VERSION" "$LATEST_NON_PRERELEASE_VERSION" "$RELEASE_DETAILS" "$UPDATE_DETAILS_MARKDOWN") else - UPDATE_DETAILS_MARKDOWN=$(printf "Updates \`%s\` from %s to %s\n\n%s" $NAME $CURRENT_VERSION $LATEST_NON_PRERELEASE_VERSION "$UPDATE_DETAILS_MARKDOWN") + UPDATE_DETAILS_MARKDOWN=$(printf "Updates \`%s\` from %s to %s\n\n%s" "$NAME" "$CURRENT_VERSION" "$LATEST_NON_PRERELEASE_VERSION" "$UPDATE_DETAILS_MARKDOWN") fi - UPDATED_EXTENSIONS_JSON=$(echo $UPDATED_EXTENSIONS_JSON | jq -c '. += ["'$NAME'"]') + UPDATED_EXTENSIONS_JSON=$(echo "$UPDATED_EXTENSIONS_JSON" | jq -c --arg name "$NAME" '. += [$name]') fi EXTENSIONS="\"$NAME@$LATEST_NON_PRERELEASE_VERSION\",$EXTENSIONS" -done +done < <(echo "$JSON" | jq -r '.customizations.vscode.extensions | flatten[]') -EXTENSIONS=$(echo "[${EXTENSIONS::-1}]" | jq 'sort_by(. | ascii_downcase)') -echo $JSON | jq '.customizations.vscode.extensions = $extensions' --argjson extensions "$EXTENSIONS" > $FILE +if [[ -n "$EXTENSIONS" ]]; then + EXTENSIONS=$(echo "[${EXTENSIONS::-1}]" | jq 'sort_by(. | ascii_downcase)') +else + EXTENSIONS="[]" +fi +echo "$JSON" | jq '.customizations.vscode.extensions = $extensions' --argjson extensions "$EXTENSIONS" > "$FILE" echo "$UPDATE_DETAILS_MARKDOWN" echo "$UPDATE_DETAILS_MARKDOWN" > "${RUNNER_TEMP}/markdown-summary.md" -echo "$UPDATED_EXTENSIONS_JSON" > updated-extensions.json +echo "$UPDATED_EXTENSIONS_JSON" > "${RUNNER_TEMP}/updated-extensions.json" diff --git a/.github/workflows/update-dependencies.yml b/.github/workflows/update-dependencies.yml index 89e67e01..85064354 100644 --- a/.github/workflows/update-dependencies.yml +++ b/.github/workflows/update-dependencies.yml @@ -72,7 +72,8 @@ jobs: id: update-extensions with: input-file: .devcontainer/${{ matrix.flavor }}/${{ matrix.file }} - - run: | + - name: Generate PR body + run: | { echo "> [!NOTE]" echo "> Before merging this PR, please conduct a manual test checking basic functionality of the updated plug-ins. There are limited automated tests for the VS Code Extension updates." From 8132dedfda02dd99555c37c7774d2fcbeb16342f Mon Sep 17 00:00:00 2001 From: Ron <45816308+rjaegers@users.noreply.github.com> Date: Fri, 30 Jan 2026 11:15:12 +0000 Subject: [PATCH 15/24] ci: don't add files to the workspace --- .github/workflows/update-dependencies.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/update-dependencies.yml b/.github/workflows/update-dependencies.yml index 85064354..1fcb18b2 100644 --- a/.github/workflows/update-dependencies.yml +++ b/.github/workflows/update-dependencies.yml @@ -79,7 +79,7 @@ jobs: echo "> Before merging this PR, please conduct a manual test checking basic functionality of the updated plug-ins. There are limited automated tests for the VS Code Extension updates." echo "" cat "$MARKDOWN_SUMMARY_FILE" - } >> pull-request-body.md + } >> "${RUNNER_TEMP}/pull-request-body.md" env: MARKDOWN_SUMMARY_FILE: ${{ steps.update-extensions.outputs.markdown-summary-file }} - uses: actions/create-github-app-token@29824e69f54612133e76f7eaac726eef6c875baf # v2.2.1 @@ -93,7 +93,7 @@ jobs: with: commit-message: "Update ${{ join(fromJson(steps.update-extensions.outputs.updated-dependencies), ', ') }} in ${{ matrix.file }}" branch: feature/amp-devcontainer-${{ matrix.flavor }}/update-vscode-extensions-${{ matrix.file }} - body-path: pull-request-body.md + body-path: "${RUNNER_TEMP}/pull-request-body.md" title: "chore(deps, ${{ matrix.flavor }}): update ${{ join(fromJson(steps.update-extensions.outputs.updated-dependencies), ', ') }} in ${{ matrix.file }}" labels: dependencies,vscode-extensions token: ${{ steps.token.outputs.token }} From f9114f46fca48cfa4bfa174f9bb9ca1cf4aa93fa Mon Sep 17 00:00:00 2001 From: "philips-software-forest-releaser[bot]" <80338643+philips-software-forest-releaser[bot]@users.noreply.github.com> Date: Fri, 30 Jan 2026 13:29:10 +0100 Subject: [PATCH 16/24] chore(deps, cpp): update mull-19 (#1115) Update mull-19 Co-authored-by: philips-software-forest-releaser[bot] <80338643+philips-software-forest-releaser[bot]@users.noreply.github.com> --- .devcontainer/cpp/apt-requirements-clang.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.devcontainer/cpp/apt-requirements-clang.json b/.devcontainer/cpp/apt-requirements-clang.json index 5a9b33a1..3786b760 100644 --- a/.devcontainer/cpp/apt-requirements-clang.json +++ b/.devcontainer/cpp/apt-requirements-clang.json @@ -7,5 +7,5 @@ "libclang-rt-19-dev": "1:19.1.7~++20250804090312+cd708029e0b2-1~exp1~20250804210325.79", "lld-19": "1:19.1.7~++20250804090312+cd708029e0b2-1~exp1~20250804210325.79", "llvm-19": "1:19.1.7~++20250804090312+cd708029e0b2-1~exp1~20250804210325.79", - "mull-19": "0.27.1" + "mull-19": "0.29.0" } From cbf92345861e1d8e02fe659c14ca2921fe9da4a9 Mon Sep 17 00:00:00 2001 From: Ron <45816308+rjaegers@users.noreply.github.com> Date: Fri, 30 Jan 2026 13:34:32 +0100 Subject: [PATCH 17/24] Apply suggestion from @Copilot Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Ron <45816308+rjaegers@users.noreply.github.com> --- .github/workflows/update-dependencies.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-dependencies.yml b/.github/workflows/update-dependencies.yml index 3f0577b4..4ef6be7d 100644 --- a/.github/workflows/update-dependencies.yml +++ b/.github/workflows/update-dependencies.yml @@ -93,7 +93,7 @@ jobs: with: commit-message: "Update ${{ join(fromJson(steps.update-extensions.outputs.updated-dependencies), ', ') }} in ${{ matrix.file }}" branch: feature/amp-devcontainer-${{ matrix.flavor }}/update-vscode-extensions-${{ matrix.file }} - body-path: "${RUNNER_TEMP}/pull-request-body.md" + body-path: ${{ runner.temp }}/pull-request-body.md title: "chore(deps, ${{ matrix.flavor }}): update ${{ join(fromJson(steps.update-extensions.outputs.updated-dependencies), ', ') }} in ${{ matrix.file }}" labels: dependencies,vscode-extensions token: ${{ steps.token.outputs.token }} From e6120153f60318e3cf035e4de88a52d3dc62076b Mon Sep 17 00:00:00 2001 From: Ron <45816308+rjaegers@users.noreply.github.com> Date: Fri, 30 Jan 2026 13:35:23 +0100 Subject: [PATCH 18/24] Apply suggestion from @rjaegers Signed-off-by: Ron <45816308+rjaegers@users.noreply.github.com> --- .devcontainer/cpp/apt-requirements-clang.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.devcontainer/cpp/apt-requirements-clang.json b/.devcontainer/cpp/apt-requirements-clang.json index 3786b760..5a9b33a1 100644 --- a/.devcontainer/cpp/apt-requirements-clang.json +++ b/.devcontainer/cpp/apt-requirements-clang.json @@ -7,5 +7,5 @@ "libclang-rt-19-dev": "1:19.1.7~++20250804090312+cd708029e0b2-1~exp1~20250804210325.79", "lld-19": "1:19.1.7~++20250804090312+cd708029e0b2-1~exp1~20250804210325.79", "llvm-19": "1:19.1.7~++20250804090312+cd708029e0b2-1~exp1~20250804210325.79", - "mull-19": "0.29.0" + "mull-19": "0.27.1" } From 4c473dfd54f0d4d3361f475270ebe40fc5ba8fa0 Mon Sep 17 00:00:00 2001 From: Ron <45816308+rjaegers@users.noreply.github.com> Date: Mon, 2 Feb 2026 09:14:29 +0000 Subject: [PATCH 19/24] ci: shorten job names somewhat --- .github/workflows/update-dependencies.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/update-dependencies.yml b/.github/workflows/update-dependencies.yml index 4ef6be7d..2a041fe5 100644 --- a/.github/workflows/update-dependencies.yml +++ b/.github/workflows/update-dependencies.yml @@ -1,5 +1,5 @@ --- -name: Update Dependencies +name: Update ๐Ÿ“ฆ on: pull_request: @@ -11,7 +11,7 @@ permissions: {} jobs: update-apt-dependencies: - name: Update APT Dependencies (๐Ÿจ ${{ matrix.flavor }}) + name: OS (๐Ÿจ ${{ matrix.flavor }}) runs-on: ubuntu-latest strategy: fail-fast: false @@ -51,7 +51,7 @@ jobs: sign-commits: true update-vscode-extensions: - name: Update VS Code Extensions (๐Ÿจ ${{ matrix.flavor }}, ${{ matrix.file }}) + name: Extensions (๐Ÿจ ${{ matrix.flavor }}, ${{ matrix.file }}) runs-on: ubuntu-latest strategy: fail-fast: false From 0fca03706ee77f0e6caa9012b8f2c80c1b5e6ade Mon Sep 17 00:00:00 2001 From: Ron <45816308+rjaegers@users.noreply.github.com> Date: Mon, 2 Feb 2026 09:21:16 +0000 Subject: [PATCH 20/24] ci: processed review comment --- .github/actions/update-vscode-extensions/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/update-vscode-extensions/action.yml b/.github/actions/update-vscode-extensions/action.yml index 96b507f9..d1318af3 100644 --- a/.github/actions/update-vscode-extensions/action.yml +++ b/.github/actions/update-vscode-extensions/action.yml @@ -26,7 +26,7 @@ runs: - run: | "${GITHUB_ACTION_PATH}/update-vscode-extensions.sh" "${INPUT_FILE}" echo "markdown-summary-file=${RUNNER_TEMP}/markdown-summary.md" >> "${GITHUB_OUTPUT}" - echo "updated-dependencies=$(cat ${RUNNER_TEMP}/updated-extensions.json)" >> "${GITHUB_OUTPUT}" + echo "updated-dependencies=$(cat "${RUNNER_TEMP}/updated-extensions.json")" >> "${GITHUB_OUTPUT}" rm "${RUNNER_TEMP}/updated-extensions.json" id: update-extensions shell: bash From 8e8c3cad134f8b0e0cfa09c462cc9becea62420b Mon Sep 17 00:00:00 2001 From: Ron <45816308+rjaegers@users.noreply.github.com> Date: Mon, 2 Feb 2026 09:33:18 +0000 Subject: [PATCH 21/24] ci: use secure temp files --- .github/actions/update-vscode-extensions/action.yml | 3 --- .../update-vscode-extensions.sh | 10 ++++++++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/.github/actions/update-vscode-extensions/action.yml b/.github/actions/update-vscode-extensions/action.yml index d1318af3..4fad07ad 100644 --- a/.github/actions/update-vscode-extensions/action.yml +++ b/.github/actions/update-vscode-extensions/action.yml @@ -25,9 +25,6 @@ runs: shell: bash - run: | "${GITHUB_ACTION_PATH}/update-vscode-extensions.sh" "${INPUT_FILE}" - echo "markdown-summary-file=${RUNNER_TEMP}/markdown-summary.md" >> "${GITHUB_OUTPUT}" - echo "updated-dependencies=$(cat "${RUNNER_TEMP}/updated-extensions.json")" >> "${GITHUB_OUTPUT}" - rm "${RUNNER_TEMP}/updated-extensions.json" id: update-extensions shell: bash env: diff --git a/.github/actions/update-vscode-extensions/update-vscode-extensions.sh b/.github/actions/update-vscode-extensions/update-vscode-extensions.sh index 7a74c075..860aab67 100755 --- a/.github/actions/update-vscode-extensions/update-vscode-extensions.sh +++ b/.github/actions/update-vscode-extensions/update-vscode-extensions.sh @@ -69,6 +69,12 @@ else fi echo "$JSON" | jq '.customizations.vscode.extensions = $extensions' --argjson extensions "$EXTENSIONS" > "$FILE" +MARKDOWN_SUMMARY_FILE=$(mktemp "${RUNNER_TEMP}/markdown-summary.XXXXXX.md") + +echo "::group::VS Code Extensions Update Details" echo "$UPDATE_DETAILS_MARKDOWN" -echo "$UPDATE_DETAILS_MARKDOWN" > "${RUNNER_TEMP}/markdown-summary.md" -echo "$UPDATED_EXTENSIONS_JSON" > "${RUNNER_TEMP}/updated-extensions.json" +echo "::endgroup::" + +echo "$UPDATE_DETAILS_MARKDOWN" > "${MARKDOWN_SUMMARY_FILE}" +echo "markdown-summary-file=${MARKDOWN_SUMMARY_FILE}" >> "${GITHUB_OUTPUT}" +echo "updated-dependencies=${UPDATED_EXTENSIONS_JSON}" >> "${GITHUB_OUTPUT}" From d025582d10863aafa6bea54e420876d1b6477f7f Mon Sep 17 00:00:00 2001 From: Ron <45816308+rjaegers@users.noreply.github.com> Date: Mon, 2 Feb 2026 10:14:55 +0000 Subject: [PATCH 22/24] ci: process more review comments --- .../update-vscode-extensions.sh | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/.github/actions/update-vscode-extensions/update-vscode-extensions.sh b/.github/actions/update-vscode-extensions/update-vscode-extensions.sh index 860aab67..591067a3 100755 --- a/.github/actions/update-vscode-extensions/update-vscode-extensions.sh +++ b/.github/actions/update-vscode-extensions/update-vscode-extensions.sh @@ -2,7 +2,7 @@ set -Eeuo pipefail -FILE=${1:?} +FILE=${1:?"Usage: $0 "} JSON=$(cat "$FILE") EXTENSIONS= UPDATE_DETAILS_MARKDOWN= @@ -24,10 +24,10 @@ get_github_releasenotes() { gh release list --exclude-drafts --exclude-pre-releases -R "$GITHUB_URL" --json name,tagName --jq '.[]' | while read -r RELEASE; do - NAME=$(echo "$RELEASE" | jq -r '.name') + RELEASE_NAME=$(echo "$RELEASE" | jq -r '.name') TAG=$(echo "$RELEASE" | jq -r '.tagName') - if [[ $NAME == *"$CURRENT_RELEASE"* || $TAG == "v$CURRENT_RELEASE" ]]; + if [[ $RELEASE_NAME == *"$CURRENT_RELEASE"* || $TAG == "v$CURRENT_RELEASE" ]]; then break; fi @@ -67,14 +67,21 @@ if [[ -n "$EXTENSIONS" ]]; then else EXTENSIONS="[]" fi + echo "$JSON" | jq '.customizations.vscode.extensions = $extensions' --argjson extensions "$EXTENSIONS" > "$FILE" -MARKDOWN_SUMMARY_FILE=$(mktemp "${RUNNER_TEMP}/markdown-summary.XXXXXX.md") +echo "::group::๐Ÿ“„ Changes to $FILE" +git diff --color=always -- "$FILE" || true +echo "::endgroup::" echo "::group::VS Code Extensions Update Details" echo "$UPDATE_DETAILS_MARKDOWN" echo "::endgroup::" +MARKDOWN_SUMMARY_FILE=$(mktemp "${RUNNER_TEMP:-/tmp}/markdown-summary.XXXXXX.md") echo "$UPDATE_DETAILS_MARKDOWN" > "${MARKDOWN_SUMMARY_FILE}" -echo "markdown-summary-file=${MARKDOWN_SUMMARY_FILE}" >> "${GITHUB_OUTPUT}" -echo "updated-dependencies=${UPDATED_EXTENSIONS_JSON}" >> "${GITHUB_OUTPUT}" + +if [[ -n "${GITHUB_OUTPUT:-}" ]]; then + echo "markdown-summary-file=${MARKDOWN_SUMMARY_FILE}" >> "${GITHUB_OUTPUT}" + echo "updated-dependencies=${UPDATED_EXTENSIONS_JSON}" >> "${GITHUB_OUTPUT}" +fi From adbd4a849211ac23c93a71323c0a1a127e2ef6f4 Mon Sep 17 00:00:00 2001 From: Ron <45816308+rjaegers@users.noreply.github.com> Date: Mon, 2 Feb 2026 11:35:59 +0000 Subject: [PATCH 23/24] ci: switch to date based comparison for release notes --- .../update-vscode-extensions.sh | 34 +++++++++++-------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/.github/actions/update-vscode-extensions/update-vscode-extensions.sh b/.github/actions/update-vscode-extensions/update-vscode-extensions.sh index 591067a3..0df817d6 100755 --- a/.github/actions/update-vscode-extensions/update-vscode-extensions.sh +++ b/.github/actions/update-vscode-extensions/update-vscode-extensions.sh @@ -20,18 +20,14 @@ prevent_github_at_mentions() { get_github_releasenotes() { local GITHUB_URL=${1:?} - local CURRENT_RELEASE=${2:?} - - gh release list --exclude-drafts --exclude-pre-releases -R "$GITHUB_URL" --json name,tagName --jq '.[]' | while read -r RELEASE; - do - RELEASE_NAME=$(echo "$RELEASE" | jq -r '.name') - TAG=$(echo "$RELEASE" | jq -r '.tagName') - - if [[ $RELEASE_NAME == *"$CURRENT_RELEASE"* || $TAG == "v$CURRENT_RELEASE" ]]; - then - break; - fi - + local CURRENT_VERSION_DATE=${2:?} + + # Fetch all releases newer than the current version's publish date + # This approach works regardless of versioning scheme (semver, date-based, etc.) + gh release list --exclude-drafts --exclude-pre-releases -R "$GITHUB_URL" \ + --json tagName,publishedAt \ + --jq ".[] | select(.publishedAt > \"$CURRENT_VERSION_DATE\") | .tagName" | \ + while read -r TAG; do printf "%s\n\n" "$(gh release view --json body --jq '.body' -R "$GITHUB_URL" "$TAG")" done } @@ -42,7 +38,9 @@ while IFS= read -r EXTENSION; do NAME="${EXTENSION%%@*}" CURRENT_VERSION="${EXTENSION#*@}" - LATEST_NON_PRERELEASE_VERSION_JSON=$(vsce show --json "$NAME" | jq '[ .versions[] | select(.properties) | select(any(.properties[].key; contains("Microsoft.VisualStudio.Code.PreRelease")) | not) ][0]') + # Fetch all non-prerelease versions with their dates + ALL_VERSIONS_JSON=$(vsce show --json "$NAME" | jq '[ .versions[] | select(.properties) | select(any(.properties[].key; contains("Microsoft.VisualStudio.Code.PreRelease")) | not) ]') + LATEST_NON_PRERELEASE_VERSION_JSON=$(echo "$ALL_VERSIONS_JSON" | jq '.[0]') LATEST_NON_PRERELEASE_VERSION=$(echo "$LATEST_NON_PRERELEASE_VERSION_JSON" | jq -r '.version') if [[ $CURRENT_VERSION != "$LATEST_NON_PRERELEASE_VERSION" ]]; @@ -50,7 +48,15 @@ while IFS= read -r EXTENSION; do GITHUB_URL=$(echo "$LATEST_NON_PRERELEASE_VERSION_JSON" | jq -r '.properties | map(select(.key == "Microsoft.VisualStudio.Services.Links.GitHub"))[] | .value') if [[ -n "$GITHUB_URL" && "$GITHUB_URL" != "null" ]]; then - RELEASE_DETAILS=$(get_github_releasenotes "$GITHUB_URL" "$CURRENT_VERSION" | prevent_github_backlinks | prevent_github_at_mentions) + # Get the publish date of the current version for date-based release matching + CURRENT_VERSION_DATE=$(echo "$ALL_VERSIONS_JSON" | jq -r --arg version "$CURRENT_VERSION" 'map(select(.version == $version))[0].lastUpdated // empty') + + if [[ -n "$CURRENT_VERSION_DATE" ]]; then + RELEASE_DETAILS=$(get_github_releasenotes "$GITHUB_URL" "$CURRENT_VERSION_DATE" | prevent_github_backlinks | prevent_github_at_mentions) + else + echo "::warning::Could not find publish date for $NAME@$CURRENT_VERSION, skipping release notes" + RELEASE_DETAILS="" + fi UPDATE_DETAILS_MARKDOWN=$(printf "Updates \`%s\` from %s to %s\n
\nRelease notes\n
\n\n%s\n
\n
\n\n%s" "$NAME" "$CURRENT_VERSION" "$LATEST_NON_PRERELEASE_VERSION" "$RELEASE_DETAILS" "$UPDATE_DETAILS_MARKDOWN") else UPDATE_DETAILS_MARKDOWN=$(printf "Updates \`%s\` from %s to %s\n\n%s" "$NAME" "$CURRENT_VERSION" "$LATEST_NON_PRERELEASE_VERSION" "$UPDATE_DETAILS_MARKDOWN") From 770eb7213b44fd6fcb80000fc9bd2e79a7c41064 Mon Sep 17 00:00:00 2001 From: Ron <45816308+rjaegers@users.noreply.github.com> Date: Mon, 2 Feb 2026 11:46:23 +0000 Subject: [PATCH 24/24] ci: give a visual cue of a dry-run --- .github/workflows/update-dependencies.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/update-dependencies.yml b/.github/workflows/update-dependencies.yml index 2a041fe5..bebb2257 100644 --- a/.github/workflows/update-dependencies.yml +++ b/.github/workflows/update-dependencies.yml @@ -1,5 +1,5 @@ --- -name: Update ๐Ÿ“ฆ +name: ๐Ÿ“ฆ Update on: pull_request: @@ -11,7 +11,7 @@ permissions: {} jobs: update-apt-dependencies: - name: OS (๐Ÿจ ${{ matrix.flavor }}) + name: ${{ github.event_name == 'pull_request' && '๐Ÿงช' || '' }} OS (๐Ÿจ ${{ matrix.flavor }}) runs-on: ubuntu-latest strategy: fail-fast: false @@ -51,7 +51,7 @@ jobs: sign-commits: true update-vscode-extensions: - name: Extensions (๐Ÿจ ${{ matrix.flavor }}, ${{ matrix.file }}) + name: ${{ github.event_name == 'pull_request' && '๐Ÿงช' || '' }} Extensions (๐Ÿจ ${{ matrix.flavor }}, ${{ matrix.file }}) runs-on: ubuntu-latest strategy: fail-fast: false