Repository navigation
Bump the npm-root group across 1 directory with 8 updates #251
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: | |
| msl-sanity: | |
| name: MSL sanity | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 15 | |
| permissions: | |
| contents: read | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v7 | |
| - name: Checkout MSL 4.1.0 | |
| uses: actions/checkout@v7 | |
| with: | |
| repository: modelica/ModelicaStandardLibrary | |
| ref: 8ae3d35c24e519cb2996cab20f3b13daf2b0c50a # v4.1.0 | |
| path: .msl-sanity | |
| persist-credentials: false | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v7 | |
| with: | |
| node-version: 24 | |
| - name: Install server dependencies | |
| working-directory: server | |
| run: npm ci | |
| - name: Check all MSL sources including example models | |
| working-directory: server | |
| run: npm run test:msl -- ../.msl-sanity/Modelica | |
| qt-client-smoke: | |
| name: OMEdit Qt client compatibility | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 15 | |
| permissions: | |
| contents: read | |
| steps: | |
| - name: Checkout server under test | |
| uses: actions/checkout@v7 | |
| - name: Checkout pinned OMEdit client sources | |
| uses: actions/checkout@v7 | |
| with: | |
| repository: OpenModelica/OpenModelica | |
| ref: 8e77d72e0f5ed79a9c6fc404191f7988f168432d | |
| path: .qt-smoke-openmodelica | |
| persist-credentials: false | |
| sparse-checkout: | | |
| OMEdit/OMEditLIB/LSP | |
| OMEdit/OMEditLIB/Util | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v7 | |
| with: | |
| node-version: 24 | |
| - name: Install Qt Test and build tools | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y --no-install-recommends cmake g++ qt6-base-dev | |
| - name: Build standalone server under test | |
| working-directory: server | |
| run: | | |
| npm ci | |
| npm run build:standalone | |
| - name: Build production OMEdit client with the Qt test harness | |
| run: | | |
| cmake -S tests/qt-smoke -B "$RUNNER_TEMP/qt-client-smoke" \ | |
| -DOPENMODELICA_SOURCE="$GITHUB_WORKSPACE/.qt-smoke-openmodelica" \ | |
| -DMODELICA_LSP_EXECUTABLE="$GITHUB_WORKSPACE/server/out/modelica-language-server" | |
| cmake --build "$RUNNER_TEMP/qt-client-smoke" --parallel 2 | |
| git -C .qt-smoke-openmodelica rev-parse HEAD > "$RUNNER_TEMP/qt-client-smoke/omedit-revision.txt" | |
| server/out/modelica-language-server --version > "$RUNNER_TEMP/qt-client-smoke/server-version.txt" | |
| - name: Test OMEdit client against the server | |
| run: ctest --test-dir "$RUNNER_TEMP/qt-client-smoke" --output-on-failure | |
| - name: Upload Qt compatibility test results | |
| if: always() | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: omedit-qt-client-smoke | |
| path: | | |
| ${{ runner.temp }}/qt-client-smoke/qt-smoke.xml | |
| ${{ runner.temp }}/qt-client-smoke/Temporary/LastTest.log | |
| ${{ runner.temp }}/qt-client-smoke/*-revision.txt | |
| ${{ runner.temp }}/qt-client-smoke/*-version.txt | |
| if-no-files-found: warn | |
| 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 | |
| # Reporting-only step: an outage or a broken download in Coveralls' | |
| # own release infrastructure (observed 2026-09-21, run 35618359654 - | |
| # coverage-reporter's installer fetched an HTML error page instead of | |
| # its checksums file) must not fail the whole build and skip every | |
| # step after it, including the e2e tests and release packaging. | |
| continue-on-error: true | |
| 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, msl-sanity, qt-client-smoke] | |
| 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 |