Skip to content

Unload libraries removed from configuration (#71) #170

Unload libraries removed from configuration (#71)

Unload libraries removed from configuration (#71) #170

Workflow file for this run

name: Build
on:
push:
branches:
- main
tags:
- "v*.*.*"
pull_request:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v7
- name: Setup npm
uses: actions/setup-node@v6
with:
node-version: 24
registry-url: https://registry.npmjs.org/
- name: Cache VS Code test downloads
uses: actions/cache@v6
with:
path: .vscode-test
key: vscode-test-${{ runner.os }}-stable
- name: Install X server
run: |
sudo apt-get update
sudo apt-get install -y xvfb
- name: Install the dependencies
run: npm clean-install && npm run postinstall
- name: Build package
run: npm run esbuild
- name: ESLint
run: npm run lint
- name: Test language server
run: npm run test:server
- name: Test language server client
run: |
Xvfb -ac :99 -screen 0 1280x1024x16 &
export DISPLAY=:99
npm run test:e2e
- name: Package Extension
run: npx vsce package
- name: Archive vsix package
uses: actions/upload-artifact@v7
with:
name: modelica-language-server.vsix
path: modelica-language-server-*.vsix
- name: Pack server npm package
working-directory: server
run: npm pack
- name: Build standalone binary
working-directory: server
run: npm run build:standalone
- name: Stage server release files
run: |
mkdir server-release
cp server/openmodelica-modelica-language-server-*.tgz server-release/
cp server/src/tree-sitter-modelica.wasm server-release/
cp server/out/modelica-language-server server-release/modelica-language-server-linux-x64
cp server/out/web-tree-sitter.wasm server-release/
- name: Archive server release files
uses: actions/upload-artifact@v7
with:
name: server-release
path: server-release/
build-binaries:
strategy:
matrix:
include:
- os: macos-latest
arch: arm64
artifact_name: modelica-language-server-macos-arm64
# Intel macOS. macos-13 was retired, so a job asking for it never gets
# a runner: it queues until the 24 h limit and is cancelled.
- os: macos-15-intel
arch: x64
artifact_name: modelica-language-server-macos-x64
- os: windows-latest
arch: x64
artifact_name: modelica-language-server-windows-x64.exe
# arm64 Linux. The x64 Linux binary comes from the `build` job above.
- os: ubuntu-24.04-arm
arch: arm64
artifact_name: modelica-language-server-linux-arm64
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, build-binaries]
runs-on: ubuntu-latest
permissions:
contents: write
id-token: write
steps:
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: 24
registry-url: https://registry.npmjs.org/
- uses: actions/download-artifact@v8
with:
name: modelica-language-server.vsix
- uses: actions/download-artifact@v8
with:
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/
- uses: actions/download-artifact@v8
with:
name: modelica-language-server-linux-arm64
path: server-release/
- name: Release
uses: softprops/action-gh-release@v3
with:
files: |
modelica-language-server-*.vsix
server-release/openmodelica-modelica-language-server-*.tgz
server-release/tree-sitter-modelica.wasm
server-release/web-tree-sitter.wasm
server-release/modelica-language-server-linux-x64
server-release/modelica-language-server-linux-arm64
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
- name: Publish to Visual Studio Marketplace
if: always()
run: |
npx vsce publish -i $(ls modelica-language-server-*.vsix) -p ${{ secrets.VSCE_PAT }}
- name: Publish to Open VSX
if: always()
run: |
npx ovsx publish $(ls modelica-language-server-*.vsix) -p ${{ secrets.OPEN_VSX_TOKEN }}
- name: Publish to npm
if: always()
run: |
npm publish ./server-release/openmodelica-modelica-language-server-*.tgz --access public --provenance