on: merge_group: pull_request: types: [opened, synchronize, reopened, ready_for_review] paths-ignore: - 'docs/**' - 'config/**' - '**.md' - '.dockerignore' - 'docker/**' - '.gitignore' push: branches: - develop - main paths-ignore: - 'docs/**' - 'config/**' - '**.md' - '.dockerignore' - 'docker/**' - '.gitignore' workflow_dispatch: name: CI concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} cancel-in-progress: true env: RUST_TOOLCHAIN: nightly-2023-08-07 jobs: typos: name: Spell Check with Typos runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: crate-ci/typos@v1.13.10 check: name: Check if: github.event.pull_request.draft == false runs-on: ubuntu-latest timeout-minutes: 60 steps: - uses: actions/checkout@v3 - 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 cargo check run: cargo check --locked --workspace --all-targets toml: name: Toml Check if: github.event.pull_request.draft == false runs-on: ubuntu-latest timeout-minutes: 60 steps: - uses: actions/checkout@v3 - uses: dtolnay/rust-toolchain@master with: toolchain: stable - name: Rust Cache uses: Swatinem/rust-cache@v2 - name: Install taplo run: cargo +stable install taplo-cli --version ^0.8 --locked - name: Run taplo run: taplo format --check sqlness: name: Sqlness Test if: github.event.pull_request.draft == false runs-on: ${{ matrix.os }} strategy: matrix: os: [ ubuntu-latest-8-cores, windows-latest-8-cores ] timeout-minutes: 60 steps: - uses: actions/checkout@v3 - 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: Upload sqlness logs if: always() uses: actions/upload-artifact@v3 with: name: sqlness-logs path: ${{ runner.temp }}/greptime-*.log retention-days: 3 fmt: name: Rustfmt if: github.event.pull_request.draft == false runs-on: ubuntu-latest timeout-minutes: 60 steps: - uses: actions/checkout@v3 - uses: arduino/setup-protoc@v1 with: repo-token: ${{ secrets.GITHUB_TOKEN }} - uses: dtolnay/rust-toolchain@master with: toolchain: ${{ env.RUST_TOOLCHAIN }} components: rustfmt - name: Rust Cache uses: Swatinem/rust-cache@v2 - name: Run cargo fmt run: cargo fmt --all -- --check clippy: name: Clippy if: github.event.pull_request.draft == false runs-on: ubuntu-latest timeout-minutes: 60 steps: - uses: actions/checkout@v3 - uses: arduino/setup-protoc@v1 with: repo-token: ${{ secrets.GITHUB_TOKEN }} - uses: dtolnay/rust-toolchain@master with: toolchain: ${{ env.RUST_TOOLCHAIN }} components: clippy - name: Rust Cache uses: Swatinem/rust-cache@v2 - name: Run cargo clippy run: cargo clippy --workspace --all-targets -- -D warnings coverage: if: github.event.pull_request.draft == false runs-on: ubuntu-latest-8-cores timeout-minutes: 60 steps: - uses: actions/checkout@v3 - uses: arduino/setup-protoc@v1 with: repo-token: ${{ secrets.GITHUB_TOKEN }} - uses: KyleMayes/install-llvm-action@v1 with: version: "14.0" - name: Install 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 latest nextest release 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 cargo-llvm-cov uses: taiki-e/install-action@cargo-llvm-cov - name: Collect coverage data run: cargo llvm-cov nextest --workspace --lcov --output-path lcov.info -F pyo3_backend -F dashboard env: CARGO_BUILD_RUSTFLAGS: "-C link-arg=-fuse-ld=lld" 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: Codecov upload uses: codecov/codecov-action@v2 with: token: ${{ secrets.CODECOV_TOKEN }} files: ./lcov.info flags: rust fail_ci_if_error: false verbose: true test-on-windows: if: github.event.pull_request.draft == false runs-on: windows-latest-8-cores timeout-minutes: 60 steps: - run: git config --global core.autocrlf false - uses: actions/checkout@v3 - 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"