Skip to content

Commit 578b575

Browse files
committed
feat(release): add npm cli packaging pipeline
1 parent be803dd commit 578b575

51 files changed

Lines changed: 2895 additions & 99 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.changeset/config.json

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
"$schema": "https://unpkg.com/@changesets/config@3.1.1/schema.json",
3+
"changelog": "@changesets/cli/changelog",
4+
"commit": false,
5+
"fixed": [],
6+
"linked": [
7+
[
8+
"@spencer-kit/coder-studio",
9+
"@spencer-kit/coder-studio-linux-x64",
10+
"@spencer-kit/coder-studio-darwin-arm64",
11+
"@spencer-kit/coder-studio-darwin-x64",
12+
"@spencer-kit/coder-studio-win32-x64"
13+
]
14+
],
15+
"access": "public",
16+
"baseBranch": "main",
17+
"updateInternalDependencies": "patch",
18+
"ignore": []
19+
}

.github/workflows/changesets.yml

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
name: Version Packages
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
8+
jobs:
9+
version:
10+
runs-on: ubuntu-latest
11+
steps:
12+
- uses: actions/checkout@v4
13+
with:
14+
fetch-depth: 0
15+
- uses: pnpm/action-setup@v4
16+
with:
17+
version: 10.32.1
18+
- uses: actions/setup-node@v4
19+
with:
20+
node-version: 22
21+
cache: pnpm
22+
- run: pnpm install --frozen-lockfile
23+
- uses: changesets/action@v1
24+
with:
25+
version: pnpm changeset:version
26+
commit: 'chore(release): version packages'
27+
title: 'chore(release): version packages'
28+
env:
29+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

.github/workflows/ci.yml

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
pull_request:
8+
9+
jobs:
10+
cli-cross-platform:
11+
name: CLI Unit (${{ matrix.os }})
12+
runs-on: ${{ matrix.os }}
13+
strategy:
14+
fail-fast: false
15+
matrix:
16+
os:
17+
- ubuntu-latest
18+
- macos-latest
19+
- windows-latest
20+
steps:
21+
- uses: actions/checkout@v4
22+
- uses: pnpm/action-setup@v4
23+
with:
24+
version: 10.32.1
25+
- uses: actions/setup-node@v4
26+
with:
27+
node-version: 22
28+
cache: pnpm
29+
- run: pnpm install --frozen-lockfile
30+
- run: pnpm test:cli
31+
32+
verify-linux:
33+
name: Verify Linux Runtime
34+
runs-on: ubuntu-latest
35+
steps:
36+
- uses: actions/checkout@v4
37+
- name: Install Linux runtime dependencies
38+
run: |
39+
sudo apt-get update
40+
sudo apt-get install -y \
41+
build-essential \
42+
curl \
43+
file \
44+
libayatana-appindicator3-dev \
45+
libssl-dev \
46+
libwebkit2gtk-4.1-dev \
47+
librsvg2-dev \
48+
patchelf \
49+
wget
50+
- uses: dtolnay/rust-toolchain@stable
51+
with:
52+
components: rustfmt, clippy
53+
- uses: pnpm/action-setup@v4
54+
with:
55+
version: 10.32.1
56+
- uses: actions/setup-node@v4
57+
with:
58+
node-version: 22
59+
cache: pnpm
60+
- run: pnpm install --frozen-lockfile
61+
- run: cargo fmt --manifest-path src-tauri/Cargo.toml --all --check
62+
- run: cargo clippy --manifest-path src-tauri/Cargo.toml --all-targets -- -D warnings
63+
- run: cargo check --manifest-path src-tauri/Cargo.toml
64+
- run: pnpm build:web
65+
- run: pnpm build:runtime
66+
- run: pnpm build:packages
67+
- run: pnpm test:smoke
68+
- run: npx playwright install --with-deps chromium
69+
- run: pnpm test:e2e:release

.github/workflows/release.yml

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
name: Release
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v*'
7+
8+
permissions:
9+
contents: write
10+
11+
jobs:
12+
publish-platform:
13+
name: Publish ${{ matrix.package_slug }}
14+
runs-on: ${{ matrix.os }}
15+
strategy:
16+
fail-fast: false
17+
matrix:
18+
include:
19+
- os: ubuntu-latest
20+
package_slug: coder-studio-linux-x64
21+
- os: macos-latest
22+
package_slug: coder-studio-darwin-arm64
23+
- os: macos-15-intel
24+
package_slug: coder-studio-darwin-x64
25+
- os: windows-latest
26+
package_slug: coder-studio-win32-x64
27+
steps:
28+
- uses: actions/checkout@v4
29+
- if: startsWith(matrix.os, 'ubuntu')
30+
name: Install Linux runtime dependencies
31+
run: |
32+
sudo apt-get update
33+
sudo apt-get install -y \
34+
build-essential \
35+
curl \
36+
file \
37+
libayatana-appindicator3-dev \
38+
libssl-dev \
39+
libwebkit2gtk-4.1-dev \
40+
librsvg2-dev \
41+
patchelf \
42+
wget
43+
- uses: dtolnay/rust-toolchain@stable
44+
- uses: pnpm/action-setup@v4
45+
with:
46+
version: 10.32.1
47+
- uses: actions/setup-node@v4
48+
with:
49+
node-version: 22
50+
cache: pnpm
51+
registry-url: 'https://registry.npmjs.org'
52+
- name: Verify tag matches package version
53+
shell: bash
54+
run: |
55+
VERSION=$(node -e "console.log(require('./packages/coder-studio/package.json').version)")
56+
test "v$VERSION" = "$GITHUB_REF_NAME"
57+
- run: pnpm install --frozen-lockfile
58+
- run: pnpm build:web
59+
- run: pnpm build:runtime
60+
- run: pnpm build:packages
61+
- run: pnpm --dir packages/${{ matrix.package_slug }} pack --pack-destination ../../.artifacts
62+
- run: npm publish packages/${{ matrix.package_slug }} --access public
63+
env:
64+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
65+
- uses: actions/upload-artifact@v4
66+
with:
67+
name: ${{ matrix.package_slug }}
68+
path: .artifacts/*.tgz
69+
70+
publish-main:
71+
name: Publish @spencer-kit/coder-studio
72+
needs: publish-platform
73+
runs-on: ubuntu-latest
74+
steps:
75+
- uses: actions/checkout@v4
76+
- uses: pnpm/action-setup@v4
77+
with:
78+
version: 10.32.1
79+
- uses: actions/setup-node@v4
80+
with:
81+
node-version: 22
82+
cache: pnpm
83+
registry-url: 'https://registry.npmjs.org'
84+
- name: Verify tag matches package version
85+
run: |
86+
VERSION=$(node -e "console.log(require('./packages/coder-studio/package.json').version)")
87+
test "v$VERSION" = "$GITHUB_REF_NAME"
88+
- run: pnpm install --frozen-lockfile
89+
- run: npm publish packages/coder-studio --access public
90+
env:
91+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
92+
93+
github-release:
94+
name: Create GitHub Release
95+
needs:
96+
- publish-platform
97+
- publish-main
98+
runs-on: ubuntu-latest
99+
steps:
100+
- uses: actions/download-artifact@v4
101+
with:
102+
path: .release-artifacts
103+
- uses: softprops/action-gh-release@v2
104+
with:
105+
files: .release-artifacts/**/*.tgz

.gitignore

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,4 +38,13 @@ Thumbs.db
3838
.tools/
3939
output
4040
.tmp
41-
.playwright-cli
41+
.playwright-cli
42+
.artifacts/
43+
packages/coder-studio-linux-x64/bin/coder-studio
44+
packages/coder-studio-linux-x64/dist/
45+
packages/coder-studio-darwin-arm64/bin/coder-studio
46+
packages/coder-studio-darwin-arm64/dist/
47+
packages/coder-studio-darwin-x64/bin/coder-studio
48+
packages/coder-studio-darwin-x64/dist/
49+
packages/coder-studio-win32-x64/bin/coder-studio.exe
50+
packages/coder-studio-win32-x64/dist/

docs/development/README.en.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,16 @@ pnpm tauri dev
2727
Split debugging mode:
2828

2929
```bash
30-
pnpm dev
30+
pnpm dev:frontend
3131
pnpm dev:backend
3232
```
3333

34+
Combined dev stack and development E2E:
35+
36+
```bash
37+
pnpm dev:stack
38+
```
39+
3440
Current development ports:
3541

3642
- frontend: `127.0.0.1:5174`
@@ -52,13 +58,15 @@ Current development ports:
5258
- Architecture: `docs/development/architecture.en.md`
5359
- Frontend state: `docs/development/frontend-state.en.md`
5460
- Tauri commands: `docs/development/tauri-commands.en.md`
61+
- npm packaging and release: `docs/development/npm-release.en.md`
5562

5663
Chinese versions:
5764

5865
- `docs/development/README.md`
5966
- `docs/development/architecture.md`
6067
- `docs/development/frontend-state.md`
6168
- `docs/development/tauri-commands.md`
69+
- `docs/development/npm-release.md`
6270

6371
## Related Docs
6472

docs/development/README.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,16 @@ pnpm tauri dev
2929
分离式调试:
3030

3131
```bash
32-
pnpm dev
32+
pnpm dev:frontend
3333
pnpm dev:backend
3434
```
3535

36+
联动调试与开发态 E2E:
37+
38+
```bash
39+
pnpm dev:stack
40+
```
41+
3642
当前开发端口:
3743

3844
- 前端:`127.0.0.1:5174`
@@ -54,13 +60,15 @@ pnpm dev:backend
5460
- 架构说明:`docs/development/architecture.md`
5561
- Frontend 状态:`docs/development/frontend-state.md`
5662
- Tauri 命令清单:`docs/development/tauri-commands.md`
63+
- npm 发布与 CLI:`docs/development/npm-release.md`
5764

5865
英文版:
5966

6067
- `docs/development/README.en.md`
6168
- `docs/development/architecture.en.md`
6269
- `docs/development/frontend-state.en.md`
6370
- `docs/development/tauri-commands.en.md`
71+
- `docs/development/npm-release.en.md`
6472

6573
## 关联文档
6674

0 commit comments

Comments
 (0)