diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6c806b6..2e164a4 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -83,9 +83,58 @@ jobs: name: server-release path: server-release/ + build-binaries: + if: startsWith(github.ref, 'refs/tags/') + strategy: + matrix: + include: + - os: macos-latest + arch: arm64 + artifact_name: modelica-language-server-macos-arm64 + - os: macos-13 + arch: x64 + artifact_name: modelica-language-server-macos-x64 + - os: windows-latest + arch: x64 + artifact_name: modelica-language-server-windows-x64.exe + runs-on: ${{ matrix.os }} + steps: + - name: Checkout repository + uses: actions/checkout@v6 + + - name: Setup Node.js + uses: actions/setup-node@v6 + with: + node-version: 24 + + - name: Install server dependencies + working-directory: server + run: npm ci + + - name: Build standalone binary + working-directory: server + run: npm run build:standalone + + - name: Stage binary + working-directory: server + shell: bash + run: | + mkdir -p ../server-release + if [ "${{ runner.os }}" = "Windows" ]; then + cp out/modelica-language-server.exe ../server-release/${{ matrix.artifact_name }} + else + cp out/modelica-language-server ../server-release/${{ matrix.artifact_name }} + fi + + - name: Archive binary + uses: actions/upload-artifact@v7 + with: + name: ${{ matrix.artifact_name }} + path: server-release/${{ matrix.artifact_name }} + release: if: startsWith(github.ref, 'refs/tags/') - needs: build + needs: [build, build-binaries] runs-on: ubuntu-latest permissions: contents: write @@ -106,6 +155,21 @@ jobs: name: server-release path: server-release/ + - uses: actions/download-artifact@v8 + with: + name: modelica-language-server-macos-arm64 + path: server-release/ + + - uses: actions/download-artifact@v8 + with: + name: modelica-language-server-macos-x64 + path: server-release/ + + - uses: actions/download-artifact@v8 + with: + name: modelica-language-server-windows-x64.exe + path: server-release/ + - name: Release uses: softprops/action-gh-release@v3 with: @@ -115,6 +179,9 @@ jobs: server-release/tree-sitter-modelica.wasm server-release/web-tree-sitter.wasm server-release/modelica-language-server-linux-x64 + server-release/modelica-language-server-macos-arm64 + server-release/modelica-language-server-macos-x64 + server-release/modelica-language-server-windows-x64.exe fail_on_unmatched_files: true generate_release_notes: true append_body: true