Skip to content

tests

tests #1041

Workflow file for this run

name: 'tests'
permissions: write-all
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/[email protected]
# 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/[email protected]
# 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/[email protected]
# 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/[email protected]
# 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
setup-cloud:
runs-on: ubuntu-latest
steps:
- name: Check Out Code
uses: actions/checkout@v3
- name: Resolve runner IP
run: echo "TF_VAR_allowed_cidr=$(curl -s ifconfig.me)/32" >> $GITHUB_ENV
- name: Setup Terraform
uses: hashicorp/[email protected]
with:
terraform_version: 1.3.4
terraform_wrapper: false
- name: Terraform Init
id: init
working-directory: .github/cloud/
run: terraform init
- name: Terraform Validate
id: validate
working-directory: .github/cloud/
run: terraform validate -no-color
- name: Set service name for pull request
if: github.event_name == 'pull_request'
working-directory: .github/cloud/
run: echo "TF_VAR_service_name=clickhouse-js PR${{ github.event.pull_request.number }} $(date +'%Y%m%d%H%M%S')" >> $GITHUB_ENV
- name: Set service name for push
if: github.event_name == 'push'
working-directory: .github/cloud/
run: echo "TF_VAR_service_name=clickhouse-js (push) $(git rev-parse --short HEAD) $(date +'%Y%m%d%H%M%S')" >> $GITHUB_ENV
- name: Set service name for workflow dispatch
if: github.event_name == 'workflow_dispatch'
working-directory: .github/cloud/
run: echo "TF_VAR_service_name=clickhouse-js (dispatch) $(git rev-parse --short HEAD) $(date +'%Y%m%d%H%M%S')" >> $GITHUB_ENV
- name: Terraform Apply
working-directory: .github/cloud/
id: apply
run: terraform apply -no-color -auto-approve -input=false -lock=false
env:
TF_VAR_organization_id: ${{ secrets.INTEGRATIONS_TEAM_TESTS_ORGANIZATION_ID }}
TF_VAR_token_key: ${{ secrets.INTEGRATIONS_TEAM_TESTS_TOKEN_KEY }}
TF_VAR_token_secret: ${{ secrets.INTEGRATIONS_TEAM_TESTS_TOKEN_SECRET }}
TF_VAR_service_password: ${{ secrets.INTEGRATIONS_TEAM_TESTS_CLOUD_PASSWORD }}
TF_VAR_api_url: ${{ secrets.INTEGRATIONS_TEAM_TESTS_CLOUD_API_URL }}
- name: Output Host and Service Name
working-directory: .github/cloud/
run: |
echo "clickhouse_host=https://$(terraform output -raw CLICKHOUSE_HOST):8443" >> $GITHUB_OUTPUT
echo "clickhouse_service_name=$TF_VAR_service_name" >> $GITHUB_OUTPUT
node-integration-tests-cloud:
# needs: node-unit-tests
needs: [setup-cloud]
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: ${{ needs.setup-cloud.outputs.clickhouse-host }}
CLICKHOUSE_CLOUD_PASSWORD: ${{ secrets.INTEGRATIONS_TEAM_TESTS_CLOUD_PASSWORD_SMT }}
run: |
npm run test:node:integration:cloud_smt
cleanup-cloud:
runs-on: ubuntu-latest
if: always()
needs: [setup-cloud, node-integration-tests-cloud]
steps:
- name: Check Out Code
uses: actions/checkout@v3
- name: Resolve runner IP
run: echo "TF_VAR_allowed_cidr=$(curl -s ifconfig.me)/32" >> $GITHUB_ENV
- name: Setup Terraform
uses: hashicorp/[email protected]
with:
terraform_version: 1.3.4
terraform_wrapper: false
- name: Terraform Init
id: init
working-directory: .github/cloud/
run: terraform init
- name: Terraform Validate
id: validate
working-directory: .github/cloud/
run: terraform validate -no-color
- name: Cleanup
if: always()
working-directory: .github/cloud/
run: terraform destroy -no-color -auto-approve -input=false -lock=false
env:
TF_VAR_organization_id: ${{ secrets.INTEGRATIONS_TEAM_TESTS_ORGANIZATION_ID }}
TF_VAR_token_key: ${{ secrets.INTEGRATIONS_TEAM_TESTS_TOKEN_KEY }}
TF_VAR_token_secret: ${{ secrets.INTEGRATIONS_TEAM_TESTS_TOKEN_SECRET }}
TF_VAR_service_password: ${{ secrets.INTEGRATIONS_TEAM_TESTS_CLOUD_PASSWORD }}
TF_VAR_api_url: ${{ secrets.INTEGRATIONS_TEAM_TESTS_CLOUD_API_URL }}
TF_VAR_service_name: ${{ needs.setup-cloud.outputs.clickhouse-service-name }}
# 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-smt',
# 'web-all-tests-local-single-node',
# 'web-integration-tests-local-cluster',
# '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/[email protected]
# 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 }}