Skip to content

git action for test. #9

git action for test.

git action for test. #9

Workflow file for this run

name: Test Driver
on:
push:
branches: [n_api, master]
pull_request:
branches: [n_api, master]
workflow_dispatch:
jobs:
test-linux:
name: Test Linux - Node ${{ matrix.node }}
strategy:
fail-fast: false
matrix:
node: [20, 22]
runs-on: ubuntu-20.04
services:
sqlserver:
image: mcr.microsoft.com/mssql/server:2022-latest
env:
ACCEPT_EULA: Y
SA_PASSWORD: YourStrong!Passw0rd
MSSQL_PID: Developer
ports:
- 1433:1433
options: >-
--health-cmd "/opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P 'YourStrong!Passw0rd' -Q 'SELECT 1'"
--health-interval 10s
--health-timeout 5s
--health-retries 5
steps:
- name: Create directory structure
run: mkdir -p node_modules
- uses: actions/checkout@v4
with:
path: node_modules/msnodesqlv8
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
- name: Install Linux dependencies
run: |
curl https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc
curl https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install -y msodbcsql18 mssql-tools18 unixodbc-dev gcc-10 g++-10
echo "CC=gcc-10" >> $GITHUB_ENV
echo "CXX=g++-10" >> $GITHUB_ENV
- name: Install dependencies
working-directory: node_modules/msnodesqlv8
run: npm install
- name: Build TypeScript
working-directory: node_modules/msnodesqlv8
run: npm run build
- name: Build test TypeScript
working-directory: node_modules/msnodesqlv8
run: npm run build:test
- name: Create test databases
run: |
# Wait for SQL Server to be ready
sleep 10
# Create test databases
/opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P 'YourStrong!Passw0rd' -C -Q "CREATE DATABASE [node];"
/opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P 'YourStrong!Passw0rd' -C -Q "CREATE DATABASE [scratch];"
- name: Run tests
working-directory: node_modules/msnodesqlv8
run: ./node_modules/.bin/env-cmd -e github-linux npm test
timeout-minutes: 30
- name: Upload test results
if: always()
uses: actions/upload-artifact@v4
with:
name: test-results-linux-node${{ matrix.node }}
path: |
node_modules/msnodesqlv8/test-results/
node_modules/msnodesqlv8/mochawesome-report/
test-windows:
name: Test Windows - Node ${{ matrix.node }}
strategy:
fail-fast: false
matrix:
node: [20, 22]
runs-on: windows-2022
steps:
- name: Create directory structure
run: mkdir node_modules
- uses: actions/checkout@v4
with:
path: node_modules/msnodesqlv8
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
- name: Install SQL Server LocalDB
shell: powershell
run: |
Write-Host "Installing SQL Server 2022 LocalDB..."
$ProgressPreference = 'SilentlyContinue'
Invoke-WebRequest -Uri https://download.microsoft.com/download/3/8/d/38de7036-2433-4207-8eae-06e247e17b25/SqlLocalDB.msi -OutFile SqlLocalDB.msi
Start-Process msiexec.exe -Wait -ArgumentList '/i SqlLocalDB.msi /quiet /qn IACCEPTSQLLOCALDBLICENSETERMS=YES'
# Create and start LocalDB instance
& "C:\Program Files\Microsoft SQL Server\160\Tools\Binn\SqlLocalDB.exe" create "testinstance" -s
& "C:\Program Files\Microsoft SQL Server\160\Tools\Binn\SqlLocalDB.exe" info "testinstance"
# Create test databases
sqlcmd -S "(localdb)\testinstance" -Q "CREATE DATABASE [node];"
sqlcmd -S "(localdb)\testinstance" -Q "CREATE DATABASE [scratch];"
- name: Install dependencies
working-directory: node_modules/msnodesqlv8
run: npm install
- name: Build TypeScript
working-directory: node_modules/msnodesqlv8
run: npm run build
- name: Build test TypeScript
working-directory: node_modules/msnodesqlv8
run: npm run build:test
- name: Run tests
working-directory: node_modules/msnodesqlv8
run: ./node_modules/.bin/env-cmd -e github-windows npm test
timeout-minutes: 30
- name: Upload test results
if: always()
uses: actions/upload-artifact@v4
with:
name: test-results-windows-node${{ matrix.node }}
path: |
node_modules/msnodesqlv8/test-results/
node_modules/msnodesqlv8/mochawesome-report/