Skip to content

Commit c73461a

Browse files
committed
fix(ci): restore Rust CLI binary directory structure in release workflow
Download artifacts without merge-multiple and move files from artifact subdirectories to the expected target/{target}/release/ locations.
1 parent 5888286 commit c73461a

2 files changed

Lines changed: 35 additions & 15 deletions

File tree

.github/workflows/release.yml

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -194,18 +194,31 @@ jobs:
194194
- name: Download Rust CLI binaries
195195
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
196196
with:
197-
path: .
197+
path: rust-cli-artifacts
198198
pattern: vite-global-cli-*
199-
merge-multiple: true
200199

201-
- name: Verify Rust CLI binaries
200+
- name: Move Rust CLI binaries to target directories
202201
run: |
202+
# Move each artifact's binary to the correct target directory
203+
for artifact_dir in rust-cli-artifacts/vite-global-cli-*/; do
204+
if [ -d "$artifact_dir" ]; then
205+
# Extract target name from directory (e.g., vite-global-cli-x86_64-unknown-linux-gnu -> x86_64-unknown-linux-gnu)
206+
dir_name=$(basename "$artifact_dir")
207+
target_name=${dir_name#vite-global-cli-}
208+
# Create target directory and copy binary
209+
mkdir -p "target/${target_name}/release"
210+
cp -r "$artifact_dir"* "target/${target_name}/release/"
211+
fi
212+
done
203213
# Show what we have (fail if no binaries found)
204-
vp_files=$(find target -name "vp*" -type f)
214+
vp_files=$(find target -name "vp*" -type f 2>/dev/null || echo "")
205215
if [ -z "$vp_files" ]; then
206216
echo "Error: No vp binaries found in target directory"
217+
echo "Artifact contents:"
218+
find rust-cli-artifacts -type f || true
207219
exit 1
208220
fi
221+
echo "Found binaries:"
209222
echo "$vp_files"
210223
211224
- name: Set npm packages version

packages/global/publish-native-addons.ts

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { execSync } from 'node:child_process';
2-
import { copyFileSync, existsSync, chmodSync } from 'node:fs';
2+
import { copyFileSync, existsSync, chmodSync, readFileSync, writeFileSync } from 'node:fs';
33
import { readdir } from 'node:fs/promises';
44
import { dirname, join } from 'node:path';
55
import { fileURLToPath } from 'node:url';
@@ -33,10 +33,19 @@ await cli.artifacts({
3333
packageJsonPath: './package.json',
3434
});
3535

36-
// Copy Rust binaries to each platform package
36+
// Pre-publish (generates package.json files in npm directories)
37+
await cli.prePublish({
38+
cwd: currentDir,
39+
packageJsonPath: './package.json',
40+
tagStyle: 'npm',
41+
ghRelease: false,
42+
skipOptionalPublish: true,
43+
});
44+
3745
const npmDir = join(currentDir, 'npm');
3846
const platformDirs = await readdir(npmDir);
3947

48+
// Copy Rust binaries to each platform package and update package.json files
4049
for (const platformDir of platformDirs) {
4150
const rustTarget = RUST_TARGETS[platformDir];
4251
if (!rustTarget) {
@@ -59,19 +68,17 @@ for (const platformDir of platformDirs) {
5968
if (!isWindows) {
6069
chmodSync(rustBinaryDest, 0o755);
6170
}
71+
72+
// Add binary to package.json files field
73+
const platformPackageJsonPath = join(npmDir, platformDir, 'package.json');
74+
const packageJson = JSON.parse(readFileSync(platformPackageJsonPath, 'utf-8'));
75+
packageJson.files.push(binaryName);
76+
writeFileSync(platformPackageJsonPath, JSON.stringify(packageJson, null, 2) + '\n');
77+
6278
// eslint-disable-next-line no-console
6379
console.log(`Copied Rust binary: ${rustBinarySource} -> ${rustBinaryDest}`);
6480
}
6581

66-
// Pre-publish (updates package.json files in npm directories)
67-
await cli.prePublish({
68-
cwd: currentDir,
69-
packageJsonPath: './package.json',
70-
tagStyle: 'npm',
71-
ghRelease: false,
72-
skipOptionalPublish: true,
73-
});
74-
7582
// Publish each platform package
7683
const npmTag = process.env.NPM_TAG || 'latest';
7784
for (const file of platformDirs) {

0 commit comments

Comments
 (0)