Skip to content

Commit 8adc3e1

Browse files
mizdraclaude
andauthored
ci: wait for npm packages to be available before publishing vscode extension (#312)
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 <noreply@anthropic.com>
1 parent df01b95 commit 8adc3e1

2 files changed

Lines changed: 37 additions & 0 deletions

File tree

.github/workflows/release.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@ jobs:
3838
env:
3939
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
4040
NPM_CONFIG_PROVENANCE: true
41+
- name: Wait for npm packages to be available
42+
if: steps.changesets.outputs.publishedPackages != '[]'
43+
run: ./scripts/wait-for-npm-packages.sh '${{ steps.changesets.outputs.publishedPackages }}'
4144
- run: npx @vscode/vsce publish --no-git-tag-version --skip-duplicate
4245
if: steps.changesets.outputs.hasChangesets == 'false'
4346
working-directory: packages/vscode

scripts/wait-for-npm-packages.sh

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
#!/bin/bash
2+
set -euo pipefail
3+
4+
# Wait for published npm packages to be available on the registry
5+
# Usage: ./wait-for-npm-packages.sh '<publishedPackages JSON>'
6+
# Example: ./wait-for-npm-packages.sh '[{"name":"@css-modules-kit/core","version":"0.8.1"}]'
7+
8+
published_packages="$1"
9+
10+
# Parse published packages and wait for each to be available on npm registry
11+
echo "$published_packages" | jq -r '.[] | "\(.name)@\(.version)"' | while read -r package; do
12+
echo "Waiting for $package to be available on npm registry..."
13+
max_attempts=10
14+
attempt=1
15+
16+
while [ $attempt -le $max_attempts ]; do
17+
if npm view "$package" version &> /dev/null; then
18+
echo "$package is now available on npm registry"
19+
echo ""
20+
break
21+
fi
22+
23+
if [ $attempt -eq $max_attempts ]; then
24+
echo "✗ Timeout waiting for $package to be available"
25+
exit 1
26+
fi
27+
28+
echo " Attempt $attempt/$max_attempts: not yet available, waiting 10 seconds..."
29+
sleep 10
30+
attempt=$((attempt + 1))
31+
done
32+
done
33+
34+
echo "All packages are now available on npm registry"

0 commit comments

Comments
 (0)