on: schedule: - cron: "0 15 * * 1-5" merge_group: pull_request: types: [ opened, synchronize, reopened, ready_for_review ] paths-ignore: - 'docs/**' - 'config/**' - '**.md' - '.dockerignore' - 'docker/**' - '.gitignore' - 'grafana/**' - 'Makefile' workflow_dispatch: inputs: ci_command: description: Internal comment-command marker required: false default: false type: boolean name: Checks env: TAPLO_VERSION: "0.9.3" concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} cancel-in-progress: true jobs: check-typos-and-docs: if: ${{ github.repository == 'GreptimeTeam/greptimedb' && (github.event_name != 'pull_request' || github.event.pull_request.draft == false || github.run_attempt > 1) }} name: Check typos and docs runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: persist-credentials: false - uses: crate-ci/typos@v1.50.2 - name: Check the config docs run: | make config-docs && \ git diff --name-only --exit-code ./config/config.md \ || (echo "'config/config.md' is not up-to-date, please run 'make config-docs'." && exit 1) license-header-check: if: ${{ github.repository == 'GreptimeTeam/greptimedb' && (github.event_name != 'pull_request' || github.event.pull_request.draft == false || github.run_attempt > 1) }} runs-on: ubuntu-latest name: Check License Header steps: - uses: actions/checkout@v4 with: persist-credentials: false - name: Check enterprise license lists run: make check-enterprise-license - uses: korandoru/hawkeye@v5 - name: Check enterprise license header uses: korandoru/hawkeye@v5 with: config: licenserc-enterprise.toml github-script-tests: if: ${{ github.repository == 'GreptimeTeam/greptimedb' && (github.event_name != 'pull_request' || github.event.pull_request.draft == false || github.run_attempt > 1) }} name: GitHub Script Tests runs-on: ubuntu-latest timeout-minutes: 5 steps: - uses: actions/checkout@v4 with: persist-credentials: false - uses: ./.github/actions/github-script-tests scope-rules: if: ${{ github.repository == 'GreptimeTeam/greptimedb' && (github.event_name != 'pull_request' || github.event.pull_request.draft == false || github.run_attempt > 1) }} name: CI Scope Rules # Same runner image as the `scope` job in integration.yml: if the rules file # stops parsing there, the gate silently runs every job, so this check exists # to fail the pull request instead. runs-on: ubuntu-slim timeout-minutes: 5 steps: - uses: actions/checkout@v4 with: persist-credentials: false - name: Show the interpreter run: python3 -VV - name: Validate .github/ci/scope-rules.toml run: python3 .github/ci/ci_scope_rules.py --check-paths check: if: ${{ needs['github-script-tests'].result == 'success' && github.repository == 'GreptimeTeam/greptimedb' && (github.event_name != 'pull_request' || github.event.pull_request.draft == false || github.run_attempt > 1) }} needs: [github-script-tests] name: Check runs-on: ${{ matrix.os }} strategy: matrix: os: [ ubuntu-latest ] timeout-minutes: 60 steps: - uses: actions/checkout@v4 with: persist-credentials: false - uses: taiki-e/install-action@v2 with: tool: protoc@3.23.4 - uses: actions-rust-lang/setup-rust-toolchain@v1 - name: Rust Cache uses: Swatinem/rust-cache@v2 with: # Shares across multiple jobs # Shares with `Clippy` job shared-key: "check-lint" cache-all-crates: "true" save-if: ${{ github.ref == 'refs/heads/main' }} - name: Run cargo check run: cargo check --locked --workspace --all-targets - name: Run cargo check (all features) run: cargo check --locked --workspace --all-targets --all-features toml: if: ${{ github.repository == 'GreptimeTeam/greptimedb' && (github.event_name != 'pull_request' || github.event.pull_request.draft == false || github.run_attempt > 1) }} name: Toml Check runs-on: ubuntu-latest timeout-minutes: 60 steps: - uses: actions/checkout@v4 with: persist-credentials: false - uses: actions-rust-lang/setup-rust-toolchain@v1 - name: Install taplo uses: taiki-e/install-action@v2 with: tool: taplo@${{ env.TAPLO_VERSION }} fallback: none - name: Run taplo run: taplo format --check