git action for test. #9
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: 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/ |