# Nightly CI: runs tests every night for our second tier plaforms (Windows)

on:
  schedule:
    - cron: '0 23 * * 1-5'
  workflow_dispatch:

name: Nightly CI

concurrency:
  group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
  cancel-in-progress: true

env:
  RUST_TOOLCHAIN: nightly-2023-10-21

jobs:
  sqlness:
    name: Sqlness Test
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ windows-latest-8-cores ]
    timeout-minutes: 60
    steps:
      - uses: actions/checkout@v4.1.0
      - uses: arduino/setup-protoc@v1
        with:
          repo-token: ${{ secrets.GITHUB_TOKEN }}
      - uses: dtolnay/rust-toolchain@master
        with:
          toolchain: ${{ env.RUST_TOOLCHAIN }}
      - name: Rust Cache
        uses: Swatinem/rust-cache@v2
      - name: Run sqlness
        run: cargo sqlness
      - name: Notify slack if failed
        if: failure()
        uses: slackapi/slack-github-action@v1.23.0
        env:
          SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL_DEVELOP_CHANNEL }}
        with:
          payload: |
            {"text": "Nightly CI failed for sqlness tests"}
      - name: Upload sqlness logs
        if: always()
        uses: actions/upload-artifact@v3
        with:
          name: sqlness-logs
          path: ${{ runner.temp }}/greptime-*.log
          retention-days: 3

  test-on-windows:
    runs-on: windows-latest-8-cores
    timeout-minutes: 60
    steps:
      - run: git config --global core.autocrlf false
      - uses: actions/checkout@v4.1.0
      - uses: arduino/setup-protoc@v1
        with:
          repo-token: ${{ secrets.GITHUB_TOKEN }}
      - name: Install Rust toolchain
        uses: dtolnay/rust-toolchain@master
        with:
          toolchain: ${{ env.RUST_TOOLCHAIN }}
          components: llvm-tools-preview
      - name: Rust Cache
        uses: Swatinem/rust-cache@v2
      - name: Install Cargo Nextest
        uses: taiki-e/install-action@nextest
      - name: Install Python
        uses: actions/setup-python@v4
        with:
          python-version: '3.10'
      - name: Install PyArrow Package
        run: pip install pyarrow
      - name: Install WSL distribution
        uses: Vampire/setup-wsl@v2
        with:
          distribution: Ubuntu-22.04
      - name: Running tests
        run: cargo nextest run -F pyo3_backend,dashboard
        env:
          RUST_BACKTRACE: 1
          CARGO_INCREMENTAL: 0
          GT_S3_BUCKET: ${{ secrets.S3_BUCKET }}
          GT_S3_ACCESS_KEY_ID: ${{ secrets.S3_ACCESS_KEY_ID }}
          GT_S3_ACCESS_KEY: ${{ secrets.S3_ACCESS_KEY }}
          GT_S3_REGION: ${{ secrets.S3_REGION }}
          UNITTEST_LOG_DIR: "__unittest_logs"
      - name: Notify slack if failed
        if: failure()
        uses: slackapi/slack-github-action@v1.23.0
        env:
          SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL_DEVELOP_CHANNEL }}
        with:
          payload: |
            {"text": "Nightly CI failed for cargo test"}
