1+ name : JetBrains Integration Build
2+
3+ on :
4+ push :
5+ paths :
6+ - ' jetbrains/**'
7+ - ' deps/patches/vscode/jetbrains.patch'
8+ - ' .github/workflows/jetbrains-build.yml'
9+ pull_request :
10+ paths :
11+ - ' jetbrains/**'
12+ - ' deps/patches/vscode/jetbrains.patch'
13+ - ' .github/workflows/jetbrains-build.yml'
14+ workflow_dispatch :
15+
16+ jobs :
17+ check-dependencies :
18+ runs-on : ubuntu-latest
19+ steps :
20+ - name : Checkout repository
21+ uses : actions/checkout@v4
22+ with :
23+ submodules : recursive
24+
25+ - name : Setup Node.js
26+ uses : actions/setup-node@v4
27+ with :
28+ node-version : ' 20.19.2'
29+
30+ - name : Setup Java
31+ uses : actions/setup-java@v4
32+ with :
33+ distribution : ' temurin'
34+ java-version : ' 17'
35+
36+ - name : Check JetBrains dependencies
37+ run : node jetbrains/scripts/check-dependencies.js
38+
39+ build-host :
40+ runs-on : ubuntu-latest
41+ needs : check-dependencies
42+ steps :
43+ - name : Checkout repository
44+ uses : actions/checkout@v4
45+ with :
46+ submodules : recursive
47+
48+ - name : Setup Node.js
49+ uses : actions/setup-node@v4
50+ with :
51+ node-version : ' 20.19.2'
52+
53+ - name : Setup pnpm
54+ uses : pnpm/action-setup@v4
55+ with :
56+ version : 10.8.1
57+ run_install : false
58+
59+ - name : Get pnpm store directory
60+ shell : bash
61+ run : |
62+ echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
63+
64+ - name : Setup pnpm cache
65+ uses : actions/cache@v4
66+ with :
67+ path : ${{ env.STORE_PATH }}
68+ key : ${{ runner.os }}-pnpm-store-jetbrains-${{ hashFiles('**/pnpm-lock.yaml') }}
69+ restore-keys : |
70+ ${{ runner.os }}-pnpm-store-jetbrains-
71+
72+ - name : Install host dependencies
73+ working-directory : jetbrains/host
74+ run : npm install
75+
76+ - name : Apply VSCode patches
77+ working-directory : jetbrains/host
78+ run : npm run deps:patch
79+ continue-on-error : true
80+
81+ - name : Build host
82+ working-directory : jetbrains/host
83+ run : npm run build
84+
85+ - name : Upload host artifacts
86+ uses : actions/upload-artifact@v4
87+ with :
88+ name : jetbrains-host-build
89+ path : jetbrains/host/dist/
90+
91+ build-plugin :
92+ runs-on : ubuntu-latest
93+ needs : check-dependencies
94+ steps :
95+ - name : Checkout repository
96+ uses : actions/checkout@v4
97+
98+ - name : Setup Java
99+ uses : actions/setup-java@v4
100+ with :
101+ distribution : ' temurin'
102+ java-version : ' 17'
103+
104+ - name : Setup Gradle
105+ uses : gradle/actions/setup-gradle@v3
106+
107+ - name : Cache Gradle packages
108+ uses : actions/cache@v4
109+ with :
110+ path : |
111+ ~/.gradle/caches
112+ ~/.gradle/wrapper
113+ key : ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
114+ restore-keys : |
115+ ${{ runner.os }}-gradle-
116+
117+ - name : Build plugin
118+ working-directory : jetbrains/plugin
119+ run : ./gradlew buildPlugin
120+
121+ - name : Run plugin tests
122+ working-directory : jetbrains/plugin
123+ run : ./gradlew test
124+
125+ - name : Upload plugin artifacts
126+ uses : actions/upload-artifact@v4
127+ with :
128+ name : jetbrains-plugin-build
129+ path : jetbrains/plugin/build/distributions/*.zip
130+
131+ test-integration :
132+ runs-on : ubuntu-latest
133+ needs : [build-host, build-plugin]
134+ if : github.event_name == 'pull_request'
135+ steps :
136+ - name : Checkout repository
137+ uses : actions/checkout@v4
138+
139+ - name : Download host artifacts
140+ uses : actions/download-artifact@v4
141+ with :
142+ name : jetbrains-host-build
143+ path : jetbrains/host/dist/
144+
145+ - name : Download plugin artifacts
146+ uses : actions/download-artifact@v4
147+ with :
148+ name : jetbrains-plugin-build
149+ path : jetbrains/plugin/build/distributions/
150+
151+ - name : Setup Node.js
152+ uses : actions/setup-node@v4
153+ with :
154+ node-version : ' 20.19.2'
155+
156+ - name : Run integration tests
157+ run : |
158+ echo "Integration tests would run here"
159+ # Add actual integration test commands when available
160+
161+ create-release :
162+ runs-on : ubuntu-latest
163+ needs : [build-host, build-plugin]
164+ if : github.event_name == 'push' && github.ref == 'refs/heads/main'
165+ steps :
166+ - name : Checkout repository
167+ uses : actions/checkout@v4
168+
169+ - name : Download host artifacts
170+ uses : actions/download-artifact@v4
171+ with :
172+ name : jetbrains-host-build
173+ path : jetbrains/host/dist/
174+
175+ - name : Download plugin artifacts
176+ uses : actions/download-artifact@v4
177+ with :
178+ name : jetbrains-plugin-build
179+ path : jetbrains/plugin/build/distributions/
180+
181+ - name : Create platform.zip
182+ run : |
183+ cd jetbrains
184+ zip -r platform.zip host/dist plugin/build/distributions
185+ echo "Platform package created"
186+
187+ - name : Upload platform package
188+ uses : actions/upload-artifact@v4
189+ with :
190+ name : jetbrains-platform-package
191+ path : jetbrains/platform.zip
192+ retention-days : 30
0 commit comments