From 767cd28f0392985cb413ba94184c4d6b77ec5c8a Mon Sep 17 00:00:00 2001 From: mizdra Date: Sat, 24 Jan 2026 16:06:09 +0900 Subject: [PATCH] ci: wait for npm packages to be available before publishing vscode extension Add a script to wait for published npm packages to be available on the registry before publishing the vscode extension. This prevents the vscode extension from being published with outdated dependencies. Co-Authored-By: Claude Sonnet 4.5 --- .github/workflows/release.yml | 3 +++ scripts/wait-for-npm-packages.sh | 34 ++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100755 scripts/wait-for-npm-packages.sh diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 553dc8d7..eb6032cf 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -38,6 +38,9 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} NPM_CONFIG_PROVENANCE: true + - name: Wait for npm packages to be available + if: steps.changesets.outputs.publishedPackages != '[]' + run: ./scripts/wait-for-npm-packages.sh '${{ steps.changesets.outputs.publishedPackages }}' - run: npx @vscode/vsce publish --no-git-tag-version --skip-duplicate if: steps.changesets.outputs.hasChangesets == 'false' working-directory: packages/vscode diff --git a/scripts/wait-for-npm-packages.sh b/scripts/wait-for-npm-packages.sh new file mode 100755 index 00000000..647d63f1 --- /dev/null +++ b/scripts/wait-for-npm-packages.sh @@ -0,0 +1,34 @@ +#!/bin/bash +set -euo pipefail + +# Wait for published npm packages to be available on the registry +# Usage: ./wait-for-npm-packages.sh '' +# Example: ./wait-for-npm-packages.sh '[{"name":"@css-modules-kit/core","version":"0.8.1"}]' + +published_packages="$1" + +# Parse published packages and wait for each to be available on npm registry +echo "$published_packages" | jq -r '.[] | "\(.name)@\(.version)"' | while read -r package; do + echo "Waiting for $package to be available on npm registry..." + max_attempts=10 + attempt=1 + + while [ $attempt -le $max_attempts ]; do + if npm view "$package" version &> /dev/null; then + echo "✓ $package is now available on npm registry" + echo "" + break + fi + + if [ $attempt -eq $max_attempts ]; then + echo "✗ Timeout waiting for $package to be available" + exit 1 + fi + + echo " Attempt $attempt/$max_attempts: not yet available, waiting 10 seconds..." + sleep 10 + attempt=$((attempt + 1)) + done +done + +echo "All packages are now available on npm registry"