-
Notifications
You must be signed in to change notification settings - Fork 56
133 lines (120 loc) · 4.1 KB
/
build-vscode-release.reusable.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
name: Release vscode_ext
on:
workflow_call: {}
push:
branches: [vscode-release]
concurrency:
# suffix is important to prevent a concurrency deadlock with the calling workflow
group: ${{ github.workflow }}-${{ github.ref }}-build-vscode
cancel-in-progress: true
jobs:
build:
name: Build VSCode
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: jdx/mise-action@v2
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
targets: wasm32-unknown-unknown
- uses: Swatinem/rust-cache@v2
with:
workspaces: engine
- name: Bindgen
run: cargo install -f [email protected]
working-directory: engine/baml-schema-wasm
# Set up Node.js
- name: Setup Node.js
uses: actions/setup-node@v4
with:
cache: "pnpm"
node-version: 20
cache-dependency-path: |
typescript/**/pnpm-lock.yaml
- name: Install Dependencies
run: pnpm install --frozen-lockfile
working-directory: typescript/
- name: Build Typescript Project
run: pnpm turbo vscode:package
working-directory: typescript/
# Build the VSCode Extension
- name: Build VSCode Extension
id: build
run: |
VERSION=$(cat package.json| grep version | cut -d ' ' -f 4 | sed 's/[",]//g')
echo "version=$VERSION" >> $GITHUB_OUTPUT
working-directory: typescript/vscode-ext/packages
# Upload the artifact (helpful for debugging and manual downloads)
- name: Upload VSCode Extension Artifact
uses: actions/upload-artifact@v4
with:
name: baml-vscode.vsix
path: typescript/vscode-ext/packages/gloo-${{ steps.build.outputs.version }}.vsix
if-no-files-found: error
# Upload the artifact (helpful for debugging and manual downloads)
- name: Upload VSCode Extension Artifact
uses: actions/upload-artifact@v4
with:
name: baml-out
path: typescript/vscode-ext/packages/vscode/out
if-no-files-found: error
# upload the lang server artifact
- name: Upload VSCode Lang Server Extension Artifact
uses: actions/upload-artifact@v4
with:
name: language-server
path: typescript/vscode-ext/packages/language-server/out
if-no-files-found: error
- name: VSCode Playground Artifact
uses: actions/upload-artifact@v4
with:
name: vscode-playground
path: typescript/vscode-ext/packages/web-panel/dist
if-no-files-found: error
publish-vscode:
needs: [build]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
# Get all the artifacts
- name: Get artifact
uses: actions/download-artifact@v4
with:
name: baml-vscode.vsix
path: typescript/vscode-ext/packages
- name: Get artifact
uses: actions/download-artifact@v4
with:
name: baml-out
path: typescript/vscode-ext/packages/vscode/out
- name: Get artifact
uses: actions/download-artifact@v4
with:
name: language-server
path: typescript/vscode-ext/packages/language-server/out
- name: Get artifact
uses: actions/download-artifact@v4
with:
pattern: vscode-playground
path: typescript/vscode-ext/packages/web-panel/dist
- name: setup pnpm
uses: pnpm/action-setup@v3
with:
version: 9.0.6
package_json_file: typescript/package.json
run_install: false
# Set up Node.js
- name: Setup Node.js
uses: actions/setup-node@v4
with:
cache: "pnpm"
node-version: 20
cache-dependency-path: typescript/pnpm-lock.yaml
- name: Install Dependencies
run: pnpm install --frozen-lockfile
working-directory: typescript/
- name: Publish
run: |
pnpm run vscode:publish --no-git-tag-version -p ${{ secrets.VSCODE_PAT }}
working-directory: typescript/vscode-ext/packages