tests #984
This file contains 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: 'tests' | |
on: | |
workflow_dispatch: | |
push: | |
branches: | |
- main | |
paths-ignore: | |
- '**/*.md' | |
- 'LICENSE' | |
- 'benchmarks/**' | |
- 'examples/**' | |
pull_request: | |
paths-ignore: | |
- '**/*.md' | |
- 'LICENSE' | |
- 'benchmarks/**' | |
- 'examples/**' | |
schedule: | |
- cron: '0 9 * * *' | |
jobs: | |
node-unit-tests: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: true | |
matrix: | |
node: [18, 20, 21] | |
steps: | |
- uses: actions/checkout@main | |
- name: Setup NodeJS ${{ matrix.node }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node }} | |
- name: Install dependencies | |
run: | | |
npm install | |
- name: Install dependencies (examples) | |
working-directory: examples | |
run: | | |
npm install | |
- name: Run linting | |
run: | | |
npm run lint | |
- name: Typecheck | |
run: | | |
npm run typecheck | |
- name: Run unit tests | |
run: | | |
npm run test:node:unit | |
web-all-tests-local-single-node: | |
runs-on: ubuntu-latest | |
needs: node-unit-tests | |
strategy: | |
fail-fast: true | |
matrix: | |
clickhouse: [head, latest] | |
steps: | |
- uses: actions/checkout@main | |
- name: Start ClickHouse (version - ${{ matrix.clickhouse }}) in Docker | |
uses: isbang/compose-action@v1.5.1 | |
env: | |
CLICKHOUSE_VERSION: ${{ matrix.clickhouse }} | |
with: | |
compose-file: 'docker-compose.yml' | |
down-flags: '--volumes' | |
- name: Setup NodeJS | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
- name: Install dependencies | |
run: | | |
npm install | |
- name: Run all web tests | |
run: | | |
npm run test:web | |
node-integration-tests-local-single-node: | |
needs: node-unit-tests | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: true | |
matrix: | |
node: [18, 20, 21] | |
clickhouse: [head, latest] | |
steps: | |
- uses: actions/checkout@main | |
- name: Start ClickHouse (version - ${{ matrix.clickhouse }}) in Docker | |
uses: isbang/compose-action@v1.5.1 | |
env: | |
CLICKHOUSE_VERSION: ${{ matrix.clickhouse }} | |
with: | |
compose-file: 'docker-compose.yml' | |
down-flags: '--volumes' | |
- name: Setup NodeJS ${{ matrix.node }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node }} | |
- name: Install dependencies | |
run: | | |
npm install | |
- name: Add ClickHouse TLS instance to /etc/hosts | |
run: | | |
sudo echo "127.0.0.1 server.clickhouseconnect.test" | sudo tee -a /etc/hosts | |
- name: Run integration tests | |
run: | | |
npm run test:node:integration | |
- name: Run TLS tests | |
run: | | |
npm run test:node:tls | |
node-integration-tests-local-cluster: | |
needs: node-unit-tests | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: true | |
matrix: | |
node: [18, 20, 21] | |
clickhouse: [head, latest] | |
steps: | |
- uses: actions/checkout@main | |
- name: Start ClickHouse cluster (version - ${{ matrix.clickhouse }}) in Docker | |
uses: isbang/compose-action@v1.5.1 | |
env: | |
CLICKHOUSE_VERSION: ${{ matrix.clickhouse }} | |
with: | |
compose-file: 'docker-compose.cluster.yml' | |
down-flags: '--volumes' | |
- name: Setup NodeJS ${{ matrix.node }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node }} | |
- name: Install dependencies | |
run: | | |
npm install | |
- name: Run integration tests | |
run: | | |
npm run test:node:integration:local_cluster | |
web-integration-tests-local-cluster: | |
runs-on: ubuntu-latest | |
needs: node-unit-tests | |
strategy: | |
fail-fast: true | |
matrix: | |
clickhouse: [head, latest] | |
steps: | |
- uses: actions/checkout@main | |
- name: Start ClickHouse cluster (version - ${{ matrix.clickhouse }}) in Docker | |
uses: isbang/compose-action@v1.5.1 | |
env: | |
CLICKHOUSE_VERSION: ${{ matrix.clickhouse }} | |
with: | |
compose-file: 'docker-compose.cluster.yml' | |
down-flags: '--volumes' | |
- name: Setup NodeJS | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
- name: Install dependencies | |
run: | | |
npm install | |
- name: Run all web tests | |
run: | | |
npm run test:web:integration:local_cluster | |
node-integration-tests-cloud: | |
needs: node-unit-tests | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: true | |
matrix: | |
node: [18, 20, 21] | |
steps: | |
- uses: actions/checkout@main | |
- name: Setup NodeJS ${{ matrix.node }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node }} | |
- name: Install dependencies | |
run: | | |
npm install | |
- name: Run integration tests | |
env: | |
CLICKHOUSE_CLOUD_HOST: ${{ secrets.INTEGRATIONS_TEAM_TESTS_CLOUD_HOST }} | |
CLICKHOUSE_CLOUD_PASSWORD: ${{ secrets.INTEGRATIONS_TEAM_TESTS_CLOUD_PASSWORD }} | |
run: | | |
npm run test:node:integration:cloud | |
node-integration-tests-cloud-smt: | |
needs: node-unit-tests | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: true | |
matrix: | |
node: [18, 20, 21] | |
steps: | |
- uses: actions/checkout@main | |
- name: Setup NodeJS ${{ matrix.node }} | |
uses: actions/setup-node@v4 | |
with: | |
node-version: ${{ matrix.node }} | |
- name: Install dependencies | |
run: | | |
npm install | |
- name: Run integration tests | |
env: | |
CLICKHOUSE_CLOUD_HOST: ${{ secrets.INTEGRATIONS_TEAM_TESTS_CLOUD_HOST_SMT }} | |
CLICKHOUSE_CLOUD_PASSWORD: ${{ secrets.INTEGRATIONS_TEAM_TESTS_CLOUD_PASSWORD_SMT }} | |
run: | | |
npm run test:node:integration:cloud_smt | |
web-integration-tests-cloud: | |
needs: node-unit-tests | |
runs-on: ubuntu-latest | |
permissions: write-all | |
steps: | |
- uses: actions/checkout@main | |
- name: Setup NodeJS | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
- name: Install dependencies | |
run: | | |
npm install | |
- name: Run integration tests | |
env: | |
CLICKHOUSE_CLOUD_HOST: ${{ secrets.INTEGRATIONS_TEAM_TESTS_CLOUD_HOST }} | |
CLICKHOUSE_CLOUD_PASSWORD: ${{ secrets.INTEGRATIONS_TEAM_TESTS_CLOUD_PASSWORD }} | |
run: | | |
npm run test:web:integration:cloud | |
web-integration-tests-cloud-smt: | |
needs: node-unit-tests | |
runs-on: ubuntu-latest | |
permissions: write-all | |
steps: | |
- uses: actions/checkout@main | |
- name: Setup NodeJS | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
- name: Install dependencies | |
run: | | |
npm install | |
- name: Run integration tests | |
env: | |
CLICKHOUSE_CLOUD_HOST: ${{ secrets.INTEGRATIONS_TEAM_TESTS_CLOUD_HOST_SMT }} | |
CLICKHOUSE_CLOUD_PASSWORD: ${{ secrets.INTEGRATIONS_TEAM_TESTS_CLOUD_PASSWORD_SMT }} | |
run: | | |
npm run test:web:integration:cloud_smt | |
# With unit + integration + TLS tests + coverage + SonarCloud report, after the rest of the tests. | |
# Needs all integration tests on all environments to pass. | |
# Should use only the current LTS version of Node.js. | |
node-all-tests-with-coverage-and-sonar: | |
needs: | |
[ | |
'node-integration-tests-local-single-node', | |
'node-integration-tests-local-cluster', | |
'node-integration-tests-cloud', | |
'node-integration-tests-cloud-smt', | |
'web-all-tests-local-single-node', | |
'web-integration-tests-local-cluster', | |
'web-integration-tests-cloud', | |
'web-integration-tests-cloud-smt', | |
] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@main | |
with: | |
fetch-depth: 0 | |
- name: Start ClickHouse (version - ${{ matrix.clickhouse }}) in Docker | |
uses: isbang/compose-action@v1.5.1 | |
with: | |
compose-file: 'docker-compose.yml' | |
down-flags: '--volumes' | |
- name: Setup NodeJS 20 | |
uses: actions/setup-node@v4 | |
with: | |
node-version: 20 | |
- name: Install dependencies | |
run: | | |
npm install | |
- name: Add ClickHouse TLS instance to /etc/hosts | |
run: | | |
sudo echo "127.0.0.1 server.clickhouseconnect.test" | sudo tee -a /etc/hosts | |
- name: Run unit + integration + TLS tests with coverage | |
run: | | |
npm run test:node:coverage | |
- name: SonarCloud Scan | |
uses: SonarSource/sonarcloud-github-action@master | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} |