Skip to content

Bump the npm-root group across 1 directory with 8 updates #251

Bump the npm-root group across 1 directory with 8 updates

Bump the npm-root group across 1 directory with 8 updates #251

Workflow file for this run

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