Repository navigation
Load library documents lazily instead of eagerly parsing every file #202
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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@v7 | |
| 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 with coverage | |
| run: npm run test:server:coverage | |
| - name: Upload server coverage to Coveralls | |
| uses: coverallsapp/github-action@v2.3.8 | |
| with: | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| file: server/coverage/lcov.info | |
| - 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@v7 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v7 | |
| 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@v7 | |
| 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 |