Skip to content

Bump undici from 7.12.0 to 7.28.0 in /Lql/LqlExtension #174

Bump undici from 7.12.0 to 7.28.0 in /Lql/LqlExtension

Bump undici from 7.12.0 to 7.28.0 in /Lql/LqlExtension #174

Workflow file for this run

name: CI
on:
pull_request:
branches: [main]
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
DOTNET_VERSION: '9.0.x'
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
DOTNET_CLI_TELEMETRY_OPTOUT: true
jobs:
# Track 1: Format Check All -> Lint All -> DataProvider Tests
lint-and-dataprovider:
name: Lint + DataProvider Tests
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- uses: actions/checkout@v4
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: ${{ env.DOTNET_VERSION }}
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt, clippy
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Cache NuGet packages
uses: actions/cache@v4
with:
path: ~/.nuget/packages
key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj', '**/*.fsproj') }}
restore-keys: |
${{ runner.os }}-nuget-
- name: Cache Cargo registry
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
Lql/lql-lsp-rust/target
key: ${{ runner.os }}-cargo-lint-${{ hashFiles('Lql/lql-lsp-rust/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-lint-
${{ runner.os }}-cargo-
- name: Restore .NET tools
run: dotnet tool restore
- name: Install Node dependencies (LQL Extension)
run: cd Lql/LqlExtension && npm install --no-audit --no-fund
- name: Format check
run: make fmt CHECK=1
- name: Lint
run: make lint
- name: Build CLI tools (needed by F# Type Provider MSBuild targets)
run: |
dotnet build Migration/DataProviderMigrate -c Debug
dotnet build DataProvider/DataProvider -c Debug
- name: Test DataProvider (with coverage enforcement)
run: >-
make _test_dotnet DOTNET_TEST_PROJECTS="DataProvider/Nimblesite.DataProvider.Tests
DataProvider/Nimblesite.DataProvider.Example.Tests"
- name: Upload test results
uses: actions/upload-artifact@v4
if: always()
with:
name: test-results-dataprovider
path: '**/TestResults/*.trx'
# Track 2: Build All -> LQL Tests -> Migration Tests -> Sync Tests
build-and-test:
name: Build + LQL / Migration / Sync Tests
runs-on: ubuntu-latest
# 15min was insufficient since the new ANTLR Postgres parser + vector
# support landed: pgvector image pull, cargo-tarpaulin install, full
# Sync test matrix, and the new Postgres E2E vector tests push the
# job past 15 min consistently. 30 min gives realistic headroom.
timeout-minutes: 30
services:
postgres:
image: postgres:16
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: changeme
POSTGRES_DB: postgres
ports:
- 5432:5432
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
env:
DOTNET_CLI_DO_NOT_USE_MSBUILD_SERVER: 1
steps:
- uses: actions/checkout@v4
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: ${{ env.DOTNET_VERSION }}
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Install cargo-tarpaulin
run: cargo install cargo-tarpaulin
- name: Cache NuGet packages
uses: actions/cache@v4
with:
path: ~/.nuget/packages
key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj', '**/*.fsproj') }}
restore-keys: |
${{ runner.os }}-nuget-
- name: Cache Cargo registry + build
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
Lql/lql-lsp-rust/target
key: ${{ runner.os }}-cargo-build-${{ hashFiles('Lql/lql-lsp-rust/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-build-
${{ runner.os }}-cargo-
- name: Restore .NET tools (h5, csharpier, ilspycmd)
run: dotnet tool restore
- name: Build .NET
run: dotnet build DataProvider.sln -c Debug
- name: Build Rust
run: cd Lql/lql-lsp-rust && cargo build
- name: Install Playwright browsers (Reporting.Integration.Tests)
run: |
dotnet build Reporting/Nimblesite.Reporting.Integration.Tests -c Debug
PWSCRIPT=$(find Reporting/Nimblesite.Reporting.Integration.Tests/bin -name 'playwright.ps1' | head -1)
if [ -z "$PWSCRIPT" ]; then
echo "playwright.ps1 not found under Reporting.Integration.Tests bin"; exit 1
fi
pwsh "$PWSCRIPT" install --with-deps chromium
- name: Test LQL + Migration + Sync + Reporting (with coverage enforcement)
run: >-
make _test_dotnet DOTNET_TEST_PROJECTS="Lql/Nimblesite.Lql.Tests
Lql/Nimblesite.Lql.TypeProvider.FSharp.Tests
Migration/Nimblesite.DataProvider.Migration.Tests
Sync/Nimblesite.Sync.Tests
Sync/Nimblesite.Sync.SQLite.Tests
Sync/Nimblesite.Sync.Postgres.Tests
Sync/Nimblesite.Sync.Integration.Tests
Sync/Nimblesite.Sync.Http.Tests
Reporting/Nimblesite.Reporting.Tests
Reporting/Nimblesite.Reporting.Integration.Tests"
env:
TESTCONTAINERS_RYUK_DISABLED: false
- name: Test LQL Rust (with coverage enforcement)
run: make _test_rust
- name: Upload test results
uses: actions/upload-artifact@v4
if: always()
with:
name: test-results-build
path: '**/TestResults/*.trx'
# Track 3: Build All -> LQL Extension Tests
extension-tests:
name: LQL Extension Tests
runs-on: ubuntu-latest
timeout-minutes: 20
services:
postgres:
image: postgres:16
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: changeme
POSTGRES_DB: postgres
ports:
- 5432:5432
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Cache Cargo registry + build
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
Lql/lql-lsp-rust/target
key: ${{ runner.os }}-cargo-extension-${{ hashFiles('Lql/lql-lsp-rust/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-extension-
${{ runner.os }}-cargo-
- name: Install VSCode runtime dependencies
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
xvfb \
libnss3 \
libgbm1 \
libdrm2 \
libxkbcommon-x11-0 \
libgtk-3-0 \
libasound2t64 \
libsecret-1-0 \
libsndio7.0 || \
sudo apt-get install -y --no-install-recommends \
xvfb \
libnss3 \
libgbm1 \
libdrm2 \
libxkbcommon-x11-0 \
libgtk-3-0
- name: Build lql-lsp binary (release)
run: cd Lql/lql-lsp-rust && cargo build --release -p lql-lsp
- name: Verify lql-lsp --version
run: |
./Lql/lql-lsp-rust/target/release/lql-lsp --version
# Confirm the printed version matches the VSIX package.json version
BIN_VERSION=$(./Lql/lql-lsp-rust/target/release/lql-lsp --version | grep -oE '[0-9]+\.[0-9]+\.[0-9]+')
VSIX_VERSION=$(jq -r '.version' Lql/LqlExtension/package.json)
echo "Binary version: $BIN_VERSION"
echo "VSIX version: $VSIX_VERSION"
if [ "$BIN_VERSION" != "$VSIX_VERSION" ]; then
echo "ERROR: lql-lsp --version ($BIN_VERSION) does not match VSIX version ($VSIX_VERSION)"
exit 1
fi
- name: Install dependencies
run: cd Lql/LqlExtension && npm install --no-audit --no-fund
- name: Test Extension (with coverage enforcement)
env:
POSTGRES_CONNECTION_STRING: "Host=localhost;Port=5432;Username=postgres;Password=changeme;Database=postgres"
run: |
export PATH="$PWD/Lql/lql-lsp-rust/target/release:$PATH"
make _test_ts
- name: Package VSIX (dry run)
run: cd Lql/LqlExtension && npm run compile && npx vsce package --no-git-tag-version --no-update-package-json