on master help sign in
Build and release VS Code extension alongside binaries
8a87d90iko
.github/workflows/release.yml+28−8
@@ -59,9 +59,32 @@ jobs:
59 name: ${{ matrix.lsp_name }}
59 name: ${{ matrix.lsp_name }}
60 path: target/${{ matrix.target }}/release/htmlang-lsp${{ runner.os == 'Windows' && '.exe' || '' }}
60 path: target/${{ matrix.target }}/release/htmlang-lsp${{ runner.os == 'Windows' && '.exe' || '' }}
61
61
62+ vscode:
63+ name: Build VS Code extension
64+ runs-on: ubuntu-latest
65+ steps:
66+ - uses: actions/checkout@v4
67+
68+ - uses: actions/setup-node@v4
69+ with:
70+ node-version: 20
71+
72+ - name: Build extension
73+ working-directory: editors/vscode
74+ run: |
75+ npm ci
76+ npm run build
77+ npx @vscode/vsce package -o htmlang.vsix
78+
79+ - name: Upload extension
80+ uses: actions/upload-artifact@v4
81+ with:
82+ name: htmlang.vsix
83+ path: editors/vscode/htmlang.vsix
84+
62 release:
85 release:
63 name: Create Release
86 name: Create Release
64− needs: build
87+ needs: [build, vscode]
65 runs-on: ubuntu-latest
88 runs-on: ubuntu-latest
66 permissions:
89 permissions:
67 contents: write
90 contents: write
@@ -85,15 +108,12 @@ jobs:
85 mkdir -p release
108 mkdir -p release
86 for dir in artifacts/*/; do
109 for dir in artifacts/*/; do
87 filename=$(basename "$dir")
110 filename=$(basename "$dir")
88− binary=$(find "$dir" -type f -executable | head -1)
89− if [ -z "$binary" ]; then
90− binary=$(find "$dir" -type f -name "*.exe" | head -1)
111+ file=$(find "$dir" -type f | head -1)
91− fi
92− if [ -n "$binary" ]; then
112+ if [ -n "$file" ]; then
93− cp "$binary" "release/$filename"
94− chmod +x "release/$filename"
113+ cp "$file" "release/$filename"
95 fi
114 fi
96 done
115 done
116+ chmod +x release/htmlang-* 2>/dev/null || true
97 ls -la release/
117 ls -la release/
98
118
99 - name: Create Release
119 - name: Create Release