Skip to content

feat: add cooperative Java park lifecycle #93

feat: add cooperative Java park lifecycle

feat: add cooperative Java park lifecycle #93

Workflow file for this run

name: CI
on:
pull_request:
push:
branches:
- main
workflow_dispatch:
permissions:
contents: read
jobs:
rust:
name: Rust
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.2.2
- name: Install Linux keyring dependencies
run: sudo apt-get update && sudo apt-get install -y libdbus-1-dev pkg-config
- uses: dtolnay/rust-toolchain@4cda84d5c5c54efe2404f9d843567869ab1699d4
with:
toolchain: stable
components: clippy,rustfmt
- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2.8.1
- name: Format
run: cargo fmt --all --check
- name: Clippy
run: cargo clippy --workspace --exclude chat2db-desktop --all-targets --all-features --locked -- -D warnings
- name: Test
run: cargo test --workspace --exclude chat2db-desktop --locked
- name: Process supervisor tests
run: cargo test -p chat2db-java-bridge --features test-fixture --test supervisor --locked
rust-msrv:
name: Rust 1.88
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.2.2
- name: Install Linux keyring dependencies
run: sudo apt-get update && sudo apt-get install -y libdbus-1-dev pkg-config
- uses: dtolnay/rust-toolchain@4cda84d5c5c54efe2404f9d843567869ab1699d4
with:
toolchain: 1.88.0
- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2.8.1
with:
shared-key: msrv
- name: Check minimum supported Rust version
run: cargo check --workspace --exclude chat2db-desktop --all-targets --all-features --locked
java:
name: Java
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.2.2
- uses: actions/setup-java@c1e323688fd81a25caa38c78aa6df2d33d3e20d9 # v4.7.1
with:
distribution: temurin
java-version: "17"
cache: maven
cache-dependency-path: |
java/pom.xml
java/compat-runtime/pom.xml
- name: Verify tests and driver isolation
working-directory: java
run: ./mvnw -B clean verify
ipc-integration:
name: Rust-Java IPC
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.2.2
with:
fetch-depth: 0
submodules: recursive
- name: Install Linux keyring dependencies
run: sudo apt-get update && sudo apt-get install -y libdbus-1-dev pkg-config
- uses: dtolnay/rust-toolchain@4cda84d5c5c54efe2404f9d843567869ab1699d4
with:
toolchain: stable
- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2.8.1
- uses: actions/setup-java@c1e323688fd81a25caa38c78aa6df2d33d3e20d9 # v4.7.1
with:
distribution: temurin
java-version: "17"
cache: maven
cache-dependency-path: |
java/pom.xml
java/compat-runtime/pom.xml
third_party/chat2db-community/chat2db-community-server/chat2db-community-bom/pom.xml
third_party/chat2db-community/chat2db-community-server/chat2db-community-spi/pom.xml
third_party/chat2db-community/chat2db-community-server/chat2db-community-domain/chat2db-community-domain-api/pom.xml
third_party/chat2db-community/chat2db-community-server/chat2db-community-domain/chat2db-community-domain-core/pom.xml
third_party/chat2db-community/chat2db-community-server/chat2db-community-plugins/chat2db-community-mysql/pom.xml
third_party/chat2db-community/chat2db-community-server/chat2db-community-plugins/chat2db-community-h2/pom.xml
- name: Package Java engine
working-directory: java
run: ./mvnw -B -DskipTests package
- name: Prepare verified DM JDBC driver pack
run: ./scripts/prepare-dm-driver-pack.sh
- name: Verify managed DM driver loading
env:
CHAT2DB_JAVA_ENGINE_JAR: "${{ github.workspace }}/java/compat-runtime/target/chat2db-compat-runtime-0.1.0-SNAPSHOT.jar"
DM_TEST_DRIVER_PACK_DIR: "${{ github.workspace }}/target/driver-packs"
run: >-
cargo test -p chat2db-core --features java-integration
--test java_dm_driver_pack --locked
- name: Verify Rust-owned DM SPI without Community
env:
CHAT2DB_JAVA_ENGINE_JAR: "${{ github.workspace }}/java/compat-runtime/target/chat2db-compat-runtime-0.1.0-SNAPSHOT.jar"
DM_TEST_DRIVER_PACK_DIR: "${{ github.workspace }}/target/driver-packs"
run: >-
cargo test -p chat2db-core --features java-integration
--test java_dm_product --locked
- name: Verify Rust-Java process protocol
env:
CHAT2DB_JAVA_ENGINE_JAR: "${{ github.workspace }}/java/compat-runtime/target/chat2db-compat-runtime-0.1.0-SNAPSHOT.jar"
CHAT2DB_H2_DRIVER_JAR: "${{ github.workspace }}/java/compat-runtime/target/test-drivers/h2-2.3.232.jar"
run: cargo test -p chat2db-java-bridge --features java-integration --test java_engine --locked
- name: Verify H2 JDBC vertical slice
env:
CHAT2DB_JAVA_ENGINE_JAR: "${{ github.workspace }}/java/compat-runtime/target/chat2db-compat-runtime-0.1.0-SNAPSHOT.jar"
CHAT2DB_H2_DRIVER_JAR: "${{ github.workspace }}/java/compat-runtime/target/test-drivers/h2-2.3.232.jar"
run: cargo test -p chat2db-java-bridge --features java-integration --test java_jdbc_h2 --locked
- name: Verify fixed Community H2 classpath reproducibility
run: ./scripts/verify-community-h2-reproducibility.sh
- name: Verify configured Community Java SQL builders
working-directory: java
env:
CHAT2DB_COMMUNITY_CLASSPATH_DIR: "${{ github.workspace }}/target/community-h2-classpath"
CHAT2DB_COMMUNITY_SOURCE_COMMIT: "3cb8af54cad5bd5caa20bb25f10d9b0e4f01931c"
run: >-
./mvnw -B -pl compat-runtime
-Dtest='CommunityPluginRegistryTest#realCommunityH2BuildsAndExecutesBoundedDml,CommunityPluginRegistryTest#realCommunityMysqlRejectsBackslashCrossColumnInjection,CommunityPluginRegistryTest#realCommunityMysqlNormalizesBooleanAliasesAndBits,CommunityPluginRegistryTest#realCommunityH2BuildsNamespaceSqlWithoutOpeningJdbc,CommunityPluginRegistryTest#realCommunityMysqlBuildsDatabaseNamespaceSql,CommunityPluginRegistryTest#realCommunityMysqlBuildsBoundedTablePreviewSqlWithoutOpeningJdbc,CommunityPluginRegistryTest#realCommunityNamespaceMapsUnsupportedAndRejectsOversizedInput,JdbcProtocolLoopTest#communityDmlDispatchDoesNotRequireAJdbcSession,JdbcProtocolLoopTest#communityNamespaceDispatchDoesNotRequireAJdbcSession'
test
- name: Verify real Community H2 SPI vertical slice
env:
CHAT2DB_JAVA_ENGINE_JAR: "${{ github.workspace }}/java/compat-runtime/target/chat2db-compat-runtime-0.1.0-SNAPSHOT.jar"
CHAT2DB_H2_DRIVER_JAR: "${{ github.workspace }}/java/compat-runtime/target/test-drivers/h2-2.3.232.jar"
CHAT2DB_COMMUNITY_CLASSPATH_DIR: "${{ github.workspace }}/target/community-h2-classpath"
run: cargo test -p chat2db-java-bridge --features java-integration --test java_community_h2 --locked
- name: Verify Community H2 product service boundary
env:
CHAT2DB_JAVA_ENGINE_JAR: "${{ github.workspace }}/java/compat-runtime/target/chat2db-compat-runtime-0.1.0-SNAPSHOT.jar"
CHAT2DB_H2_DRIVER_JAR: "${{ github.workspace }}/java/compat-runtime/target/test-drivers/h2-2.3.232.jar"
CHAT2DB_COMMUNITY_CLASSPATH_DIR: "${{ github.workspace }}/target/community-h2-classpath"
run: cargo test -p chat2db-core --features java-integration --test java_community_product --locked
- name: Verify product H2 vertical slice
env:
CHAT2DB_JAVA_ENGINE_JAR: "${{ github.workspace }}/java/compat-runtime/target/chat2db-compat-runtime-0.1.0-SNAPSHOT.jar"
CHAT2DB_H2_DRIVER_JAR: "${{ github.workspace }}/java/compat-runtime/target/test-drivers/h2-2.3.232.jar"
run: cargo test -p chat2db-core --features java-integration --test java_h2_product --locked
contracts:
name: Generated contracts
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.2.2
- name: Install Linux keyring dependencies
run: sudo apt-get update && sudo apt-get install -y libdbus-1-dev pkg-config
- uses: dtolnay/rust-toolchain@4cda84d5c5c54efe2404f9d843567869ab1699d4
with:
toolchain: stable
- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2.8.1
with:
shared-key: contracts
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: "22.22.2"
cache: npm
cache-dependency-path: apps/frontend/package-lock.json
- name: Install frontend generator
working-directory: apps/frontend
run: npm ci
- name: Verify generated OpenAPI and TypeScript
run: ./scripts/check-contracts.sh
mysql-integration:
name: MySQL
runs-on: ubuntu-latest
services:
mysql:
image: mysql:8.4.6@sha256:869218921e61d6c3c89820955d63cca42971f0e3e6c1e2792247bbd944ebc6e9
env:
MYSQL_ROOT_HOST: "%"
MYSQL_ROOT_PASSWORD: chat2db-ci-root
ports:
- 3306:3306
options: >-
--health-cmd "mysqladmin ping --silent -h 127.0.0.1 -uroot -pchat2db-ci-root"
--health-interval 5s
--health-timeout 5s
--health-retries 30
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.2.2
with:
fetch-depth: 0
submodules: recursive
- name: Install Linux keyring and SSH dependencies
run: >-
sudo apt-get update && sudo apt-get install -y
libdbus-1-dev pkg-config openssh-server
- uses: dtolnay/rust-toolchain@4cda84d5c5c54efe2404f9d843567869ab1699d4
with:
toolchain: stable
- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2.8.1
with:
shared-key: mysql-integration
- name: Verify native MySQL driver kernel without Java
env:
MYSQL_TEST_HOST: 127.0.0.1
MYSQL_TEST_PORT: "3306"
MYSQL_TEST_USER: root
MYSQL_TEST_PASSWORD: chat2db-ci-root
MYSQL_TEST_REQUIRED: "1"
run: >-
cargo test -p chat2db-core --lib --locked
live_mysql_console_kernel_preserves_session_results_and_cancellation
-- --ignored
- name: Verify native MySQL product vertical without Java
env:
MYSQL_TEST_HOST: 127.0.0.1
MYSQL_TEST_PORT: "3306"
MYSQL_TEST_USER: root
MYSQL_TEST_PASSWORD: chat2db-ci-root
MYSQL_TEST_REQUIRED: "1"
run: cargo test -p chat2db-core --test native_mysql_product --locked
- name: Verify confirmed MySQL writes through the local runtime
env:
MYSQL_TEST_HOST: 127.0.0.1
MYSQL_TEST_PORT: "3306"
MYSQL_TEST_USER: root
MYSQL_TEST_PASSWORD: chat2db-ci-root
MYSQL_TEST_REQUIRED: "1"
run: >-
cargo test -p chat2db-local --test native_mysql_write_docker
--locked
- name: Verify native MySQL Console without Java
env:
MYSQL_TEST_HOST: 127.0.0.1
MYSQL_TEST_PORT: "3306"
MYSQL_TEST_USER: root
MYSQL_TEST_PASSWORD: chat2db-ci-root
MYSQL_TEST_REQUIRED: "1"
run: >-
cargo test -p chat2db-core --test native_mysql_console_docker --locked
-- --ignored
- name: Verify native MySQL account lifecycle without Java
env:
MYSQL_TEST_HOST: 127.0.0.1
MYSQL_TEST_PORT: "3306"
MYSQL_TEST_USER: root
MYSQL_TEST_PASSWORD: chat2db-ci-root
MYSQL_TEST_REQUIRED: "1"
run: cargo test -p chat2db-core --test native_mysql_account_docker --locked
- name: Verify native MySQL schema diff without Java
env:
MYSQL_TEST_HOST: 127.0.0.1
MYSQL_TEST_PORT: "3306"
MYSQL_TEST_USER: root
MYSQL_TEST_PASSWORD: chat2db-ci-root
MYSQL_TEST_REQUIRED: "1"
run: >-
cargo test -p chat2db-core --test native_mysql_schema_diff_docker
--locked
- name: Verify native MySQL transfer without Java
env:
MYSQL_TEST_HOST: 127.0.0.1
MYSQL_TEST_PORT: "3306"
MYSQL_TEST_USER: root
MYSQL_TEST_PASSWORD: chat2db-ci-root
MYSQL_TEST_REQUIRED: "1"
run: cargo test -p chat2db-core --test native_mysql_transfer_docker --locked
- name: Verify native MySQL Dashboard refresh without Java
env:
MYSQL_TEST_HOST: 127.0.0.1
MYSQL_TEST_PORT: "3306"
MYSQL_TEST_USER: root
MYSQL_TEST_PASSWORD: chat2db-ci-root
MYSQL_TEST_REQUIRED: "1"
run: cargo test -p chat2db-core --test native_mysql_dashboard_docker --locked
- name: Start isolated SSH forwarding fixture
run: |
install -d -m 700 "$HOME/.ssh" "$RUNNER_TEMP/chat2db-sshd"
ssh-keygen -q -t ed25519 -N '' -f "$RUNNER_TEMP/chat2db-sshd/client-key"
ssh-keygen -q -t ed25519 -N '' -f "$RUNNER_TEMP/chat2db-sshd/host-key"
install -m 600 "$RUNNER_TEMP/chat2db-sshd/client-key.pub" "$RUNNER_TEMP/chat2db-sshd/authorized_keys"
{
echo 'Port 2222'
echo 'ListenAddress 127.0.0.1'
echo "HostKey $RUNNER_TEMP/chat2db-sshd/host-key"
echo "PidFile $RUNNER_TEMP/chat2db-sshd/sshd.pid"
echo "AuthorizedKeysFile $RUNNER_TEMP/chat2db-sshd/authorized_keys"
echo "AllowUsers $(id -un)"
echo 'AuthenticationMethods publickey'
echo 'PasswordAuthentication no'
echo 'PubkeyAuthentication yes'
echo 'PermitRootLogin no'
echo 'AllowTcpForwarding yes'
echo 'PermitOpen 127.0.0.1:3306'
echo 'StrictModes no'
echo 'UsePAM yes'
} > "$RUNNER_TEMP/chat2db-sshd/sshd_config"
sudo install -d -m 755 /run/sshd
sudo /usr/sbin/sshd -f "$RUNNER_TEMP/chat2db-sshd/sshd_config" -E "$RUNNER_TEMP/chat2db-sshd/sshd.log"
for attempt in {1..20}; do
if ssh-keyscan -p 2222 127.0.0.1 > "$RUNNER_TEMP/chat2db-sshd/known_hosts" 2>/dev/null; then
break
fi
if (( attempt == 20 )); then
cat "$RUNNER_TEMP/chat2db-sshd/sshd.log" >&2
exit 1
fi
sleep 1
done
test -s "$RUNNER_TEMP/chat2db-sshd/known_hosts"
install -m 600 "$RUNNER_TEMP/chat2db-sshd/known_hosts" "$HOME/.ssh/known_hosts"
ssh -i "$RUNNER_TEMP/chat2db-sshd/client-key" -p 2222 \
-o BatchMode=yes -o StrictHostKeyChecking=yes \
"$(id -un)@127.0.0.1" true
- name: Verify native MySQL SSH tunnel without Java
env:
CHAT2DB_TEST_MYSQL_HOST: 127.0.0.1
CHAT2DB_TEST_MYSQL_PORT: "3306"
CHAT2DB_TEST_MYSQL_USER: root
CHAT2DB_TEST_MYSQL_PASSWORD: chat2db-ci-root
CHAT2DB_TEST_SSH_HOST: 127.0.0.1
CHAT2DB_TEST_SSH_PORT: "2222"
CHAT2DB_TEST_SSH_USER: runner
CHAT2DB_TEST_SSH_PRIVATE_KEY: "${{ runner.temp }}/chat2db-sshd/client-key"
CHAT2DB_TEST_SSH_LOCAL_PORT: "23306"
run: >-
cargo test -p chat2db-core --test native_mysql_ssh_tunnel_docker
--locked -- --ignored
- name: Verify native MySQL editable grid and DDL without Java
env:
MYSQL_TEST_HOST: 127.0.0.1
MYSQL_TEST_PORT: "3306"
MYSQL_TEST_USER: root
MYSQL_TEST_PASSWORD: chat2db-ci-root
MYSQL_TEST_REQUIRED: "1"
run: >-
cargo test -p chat2db-web --test native_mysql_editable_ddl_docker --locked
-- --ignored
- uses: actions/setup-java@c1e323688fd81a25caa38c78aa6df2d33d3e20d9 # v4.7.1
with:
distribution: temurin
java-version: "17"
cache: maven
cache-dependency-path: |
java/pom.xml
java/compat-runtime/pom.xml
third_party/chat2db-community/chat2db-community-server/chat2db-community-bom/pom.xml
third_party/chat2db-community/chat2db-community-server/chat2db-community-spi/pom.xml
third_party/chat2db-community/chat2db-community-server/chat2db-community-domain/chat2db-community-domain-api/pom.xml
third_party/chat2db-community/chat2db-community-server/chat2db-community-domain/chat2db-community-domain-core/pom.xml
third_party/chat2db-community/chat2db-community-server/chat2db-community-plugins/chat2db-community-mysql/pom.xml
third_party/chat2db-community/chat2db-community-server/chat2db-community-plugins/chat2db-community-h2/pom.xml
- name: Package Java engine
working-directory: java
run: ./mvnw -B -DskipTests package
- name: Build fixed Community compatibility classpath
run: ./scripts/build-community-h2-classpath.sh
- name: Prepare verified Connector/J pack
run: ./scripts/prepare-mysql-driver-pack.sh
- name: Verify real MySQL product vertical
env:
CHAT2DB_JAVA_ENGINE_JAR: "${{ github.workspace }}/java/compat-runtime/target/chat2db-compat-runtime-0.1.0-SNAPSHOT.jar"
CHAT2DB_COMMUNITY_CLASSPATH_DIR: "${{ github.workspace }}/target/community-h2-classpath"
MYSQL_TEST_DRIVER_PACK_DIR: "${{ github.workspace }}/target/driver-packs"
MYSQL_TEST_HOST: 127.0.0.1
MYSQL_TEST_PORT: "3306"
MYSQL_TEST_USER: root
MYSQL_TEST_PASSWORD: chat2db-ci-root
MYSQL_TEST_REQUIRED: "1"
MYSQL_TEST_JDBC_PARAMETERS: "sslMode=DISABLED&allowPublicKeyRetrieval=true&serverTimezone=UTC&zeroDateTimeBehavior=CONVERT_TO_NULL&tinyInt1isBit=false"
run: >-
cargo test -p chat2db-core --features java-integration
--test java_community_mysql_product --locked
frontend:
name: Frontend
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.2.2
with:
submodules: recursive
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: "22.22.2"
cache: npm
cache-dependency-path: apps/frontend/package-lock.json
- name: Install
working-directory: apps/frontend
run: npm ci
- name: Verify pinned Community source
working-directory: apps/frontend
run: npm run verify-upstream
- name: Typecheck
working-directory: apps/frontend
run: npm run typecheck
- name: Test
working-directory: apps/frontend
run: npm test
- name: Build
working-directory: apps/frontend
run: npm run build
desktop:
name: Desktop (${{ matrix.os }})
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.2.2
- name: Install Linux desktop dependencies
if: runner.os == 'Linux'
run: >-
sudo apt-get update && sudo apt-get install -y
libwebkit2gtk-4.1-dev build-essential curl wget file libxdo-dev
libssl-dev libayatana-appindicator3-dev librsvg2-dev libdbus-1-dev
pkg-config
- uses: dtolnay/rust-toolchain@4cda84d5c5c54efe2404f9d843567869ab1699d4
with:
toolchain: 1.88.0
components: clippy
- uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2.8.1
with:
shared-key: desktop-${{ matrix.os }}
- name: Test local storage
run: cargo test -p chat2db-storage --locked
- name: Test local attachment
run: cargo test -p chat2db-local --locked
- name: Test Windows Java bridge path contracts
if: runner.os == 'Windows'
run: cargo test -p chat2db-java-bridge --lib --locked
- name: Initialize fixed Community source on Windows
if: runner.os == 'Windows'
run: |
git config --global core.longpaths true
git config --global core.autocrlf false
git submodule update --init --recursive third_party/chat2db-community
- name: Initialize fixed Community source on Unix
if: runner.os != 'Windows'
run: git submodule update --init --recursive third_party/chat2db-community
- uses: actions/setup-java@c1e323688fd81a25caa38c78aa6df2d33d3e20d9 # v4.7.1
if: runner.os == 'Windows'
with:
distribution: temurin
java-version: "17"
cache: maven
cache-dependency-path: |
java/pom.xml
java/compat-runtime/pom.xml
third_party/chat2db-community/chat2db-community-server/chat2db-community-bom/pom.xml
third_party/chat2db-community/chat2db-community-server/chat2db-community-spi/pom.xml
third_party/chat2db-community/chat2db-community-server/chat2db-community-domain/chat2db-community-domain-api/pom.xml
third_party/chat2db-community/chat2db-community-server/chat2db-community-domain/chat2db-community-domain-core/pom.xml
third_party/chat2db-community/chat2db-community-server/chat2db-community-plugins/chat2db-community-mysql/pom.xml
third_party/chat2db-community/chat2db-community-server/chat2db-community-plugins/chat2db-community-h2/pom.xml
- name: Package Java engine for Windows managed-driver test
if: runner.os == 'Windows'
working-directory: java
shell: pwsh
run: .\mvnw.cmd -B -DskipTests package
- name: Verify Windows managed H2 driver lifecycle
if: runner.os == 'Windows'
env:
CHAT2DB_JAVA_ENGINE_JAR: "${{ github.workspace }}/java/compat-runtime/target/chat2db-compat-runtime-0.1.0-SNAPSHOT.jar"
CHAT2DB_H2_DRIVER_JAR: "${{ github.workspace }}/java/compat-runtime/target/test-drivers/h2-2.3.232.jar"
run: >-
cargo test -p chat2db-core --features java-integration
--test java_h2_product --locked -- --test-threads=1
- name: Build fixed Community H2 compatibility classpath on Windows
if: runner.os == 'Windows'
shell: bash
run: ./scripts/build-community-h2-classpath.sh
- name: Verify Windows real Community H2 SPI vertical slice
if: runner.os == 'Windows'
shell: pwsh
env:
CHAT2DB_JAVA_ENGINE_JAR: "${{ github.workspace }}/java/compat-runtime/target/chat2db-compat-runtime-0.1.0-SNAPSHOT.jar"
CHAT2DB_H2_DRIVER_JAR: "${{ github.workspace }}/java/compat-runtime/target/test-drivers/h2-2.3.232.jar"
CHAT2DB_COMMUNITY_CLASSPATH_DIR: "${{ github.workspace }}/target/community-h2-classpath"
run: >-
cargo test -p chat2db-java-bridge --features java-integration
--test java_community_h2 --locked
- name: Verify Windows Community H2 product service boundary
if: runner.os == 'Windows'
shell: pwsh
env:
CHAT2DB_JAVA_ENGINE_JAR: "${{ github.workspace }}/java/compat-runtime/target/chat2db-compat-runtime-0.1.0-SNAPSHOT.jar"
CHAT2DB_H2_DRIVER_JAR: "${{ github.workspace }}/java/compat-runtime/target/test-drivers/h2-2.3.232.jar"
CHAT2DB_COMMUNITY_CLASSPATH_DIR: "${{ github.workspace }}/target/community-h2-classpath"
run: >-
cargo test -p chat2db-core --features java-integration
--test java_community_product --locked
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
with:
node-version: "22.22.2"
cache: npm
cache-dependency-path: apps/frontend/package-lock.json
- name: Build shared frontend
working-directory: apps/frontend
run: npm ci && npm run build
- name: Test desktop adapter
run: cargo test -p chat2db-desktop --locked
- name: Lint desktop adapter
run: cargo clippy -p chat2db-desktop --all-targets --features custom-protocol --locked -- -D warnings
- name: Compile Tauri custom protocol
run: cargo check -p chat2db-desktop --all-targets --features custom-protocol --locked