1
+ name : Build VSCode Extensions
2
+
3
+ on :
4
+ push :
5
+ branches : [main, develop]
6
+ pull_request :
7
+ branches : [main, develop]
8
+ workflow_dispatch :
9
+ inputs :
10
+ force_rebuild :
11
+ description : ' Force rebuild even if no changes detected'
12
+ required : false
13
+ default : false
14
+ type : boolean
15
+
16
+ jobs :
17
+ build-extensions :
18
+ runs-on : ubuntu-latest
19
+
20
+ steps :
21
+ - name : Checkout repository
22
+ uses : actions/checkout@v4
23
+
24
+ - name : Set up Node.js
25
+ uses : actions/setup-node@v4
26
+ with :
27
+ node-version : ' 22'
28
+ cache : ' npm'
29
+
30
+ - name : Install dependencies
31
+ run : npm ci
32
+
33
+ - name : Install vsce globally
34
+ run : npm install -g @vscode/vsce
35
+
36
+ - name : Build tutorial extension
37
+ run : |
38
+ echo "Building tutorial extension..."
39
+ npm run buildExtension
40
+
41
+ - name : Build theme extension
42
+ run : |
43
+ echo "Building theme extension..."
44
+ cd themes && npx @vscode/vsce package --out ../zenml-color-theme.vsix
45
+
46
+ - name : Verify extensions were built
47
+ run : |
48
+ echo "Checking built extensions..."
49
+ if [ -d ".devcontainer/extensions" ]; then
50
+ echo "Tutorial extension files:"
51
+ ls -la .devcontainer/extensions/
52
+ else
53
+ echo "ERROR: .devcontainer/extensions directory not found"
54
+ exit 1
55
+ fi
56
+
57
+ if [ -f "zenml-color-theme.vsix" ]; then
58
+ echo "Theme extension built successfully:"
59
+ ls -la zenml-color-theme.vsix
60
+ else
61
+ echo "ERROR: zenml-color-theme.vsix not found"
62
+ exit 1
63
+ fi
64
+
65
+ - name : Upload tutorial extension artifact
66
+ uses : actions/upload-artifact@v4
67
+ with :
68
+ name : tutorial-extension
69
+ path : .devcontainer/extensions/zenml-codespace-tutorial-*.vsix
70
+
71
+ - name : Upload theme extension artifact
72
+ uses : actions/upload-artifact@v4
73
+ with :
74
+ name : theme-extension
75
+ path : zenml-color-theme.vsix
76
+
77
+ - name : Commit and push built extensions
78
+ # Only commit on push to main/develop branches, not on PRs
79
+ if : github.event_name == 'push' || github.event.inputs.force_rebuild
80
+ run : |
81
+ git config --local user.email "[email protected] "
82
+ git config --local user.name "GitHub Action"
83
+
84
+ # Add the built extensions to git
85
+ git add .devcontainer/extensions/zenml-codespace-tutorial-*.vsix
86
+ git add zenml-color-theme.vsix
87
+
88
+ # Check if there are any changes to commit
89
+ if git diff --staged --quiet; then
90
+ echo "No changes to commit"
91
+ else
92
+ git commit -m "Auto-build extensions [skip ci]"
93
+ git push
94
+ fi
0 commit comments