From aeadcbf3d6d5cd1b283ff43ba78dfa1206763bed Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 9 Jul 2026 05:57:18 +0000 Subject: [PATCH 1/3] Initial plan From e8c729b5f614995cf9f40dc42cbcb7abc5a94aab Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 9 Jul 2026 06:00:29 +0000 Subject: [PATCH 2/3] fix(ci): add retry logic to VSCode IDE Companion publish steps The publish step failed due to a request timeout when publishing the universal VSIX to the VS Code Marketplace. Add retry logic (up to 3 attempts with 15s delay) to both the Microsoft Marketplace and OpenVSX publish steps to handle transient network failures gracefully. Closes #6550 --- .../workflows/release-vscode-companion.yml | 33 +++++++++++++++---- 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/.github/workflows/release-vscode-companion.yml b/.github/workflows/release-vscode-companion.yml index d1fb8b01a7f..14d061062b0 100644 --- a/.github/workflows/release-vscode-companion.yml +++ b/.github/workflows/release-vscode-companion.yml @@ -314,7 +314,17 @@ jobs: echo "Publishing to Microsoft Marketplace..." for vsix in vsix-artifacts/*.vsix; do echo "Publishing: ${vsix}" - vsce publish --packagePath "${vsix}" --pat "${VSCE_PAT}" --skip-duplicate + for attempt in 1 2 3; do + if vsce publish --packagePath "${vsix}" --pat "${VSCE_PAT}" --skip-duplicate; then + break + fi + if [[ ${attempt} -eq 3 ]]; then + echo "Failed to publish ${vsix} after 3 attempts" + exit 1 + fi + echo "Attempt ${attempt} failed, retrying in 15s..." + sleep 15 + done done - name: 'Publish to OpenVSX' @@ -325,11 +335,22 @@ jobs: echo "Publishing to OpenVSX..." for vsix in vsix-artifacts/*.vsix; do echo "Publishing: ${vsix}" - if [[ "${{ needs.prepare.outputs.is_preview }}" == "true" ]]; then - ovsx publish "${vsix}" --pat "${OVSX_TOKEN}" --pre-release - else - ovsx publish "${vsix}" --pat "${OVSX_TOKEN}" - fi + for attempt in 1 2 3; do + if [[ "${{ needs.prepare.outputs.is_preview }}" == "true" ]]; then + publish_cmd=(ovsx publish "${vsix}" --pat "${OVSX_TOKEN}" --pre-release) + else + publish_cmd=(ovsx publish "${vsix}" --pat "${OVSX_TOKEN}") + fi + if "${publish_cmd[@]}"; then + break + fi + if [[ ${attempt} -eq 3 ]]; then + echo "Failed to publish ${vsix} after 3 attempts" + exit 1 + fi + echo "Attempt ${attempt} failed, retrying in 15s..." + sleep 15 + done done - name: 'Upload all VSIXes as release artifacts (dry run)' From 90d2bdfbf3e5ce639f1a2fab0103e8eea6665169 Mon Sep 17 00:00:00 2001 From: yiliang114 Date: Thu, 9 Jul 2026 15:15:42 +0800 Subject: [PATCH 3/3] fix(ci): make OpenVSX publish retries idempotent --- .github/workflows/release-vscode-companion.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-vscode-companion.yml b/.github/workflows/release-vscode-companion.yml index 14d061062b0..a407b00105e 100644 --- a/.github/workflows/release-vscode-companion.yml +++ b/.github/workflows/release-vscode-companion.yml @@ -337,9 +337,9 @@ jobs: echo "Publishing: ${vsix}" for attempt in 1 2 3; do if [[ "${{ needs.prepare.outputs.is_preview }}" == "true" ]]; then - publish_cmd=(ovsx publish "${vsix}" --pat "${OVSX_TOKEN}" --pre-release) + publish_cmd=(ovsx publish "${vsix}" --pat "${OVSX_TOKEN}" --pre-release --skip-duplicate) else - publish_cmd=(ovsx publish "${vsix}" --pat "${OVSX_TOKEN}") + publish_cmd=(ovsx publish "${vsix}" --pat "${OVSX_TOKEN}" --skip-duplicate) fi if "${publish_cmd[@]}"; then break