DO NOT MERGE: workflow testing earlier runners #336
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: Pull Request | |
on: | |
workflow_dispatch: | |
pull_request: | |
paths: # Only run when changes are made to rust code or root Cargo | |
- "crates/**" | |
- "lib/**" | |
- "fuzz/**" | |
- "xtask/**" | |
- "Cargo.toml" | |
- "Cargo.lock" | |
- "rust-toolchain.toml" | |
- "rustfmt.toml" | |
# or in js packages | |
- "packages/**" | |
# or in workflows | |
- ".github/workflows/**" | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }} | |
cancel-in-progress: true | |
env: | |
RUST_LOG: info | |
RUST_BACKTRACE: 1 | |
RUSTUP_WINDOWS_PATH_ADD_BIN: 1 | |
jobs: | |
format: | |
name: Format | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout PR branch | |
uses: actions/checkout@v4 | |
- name: Free Disk Space | |
uses: ./.github/actions/free-disk-space | |
- name: Install toolchain | |
uses: moonrepo/setup-rust@v1 | |
with: | |
components: rustfmt | |
bins: taplo-cli | |
cache-base: main | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Setup Biome | |
uses: biomejs/setup-biome@v2 | |
with: | |
version: latest | |
- name: Run format | |
run: | | |
cargo fmt --all --check | |
taplo format --check | |
biome format | |
actionlint: | |
name: Lint GitHub Actions | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Download actionlint | |
id: get_actionlint | |
run: bash <(curl https://raw.githubusercontent.com/rhysd/actionlint/main/scripts/download-actionlint.bash) | |
shell: bash | |
- name: Check workflow files | |
run: ${{ steps.get_actionlint.outputs.executable }} -color | |
shell: bash | |
lint: | |
name: Lint Project | |
runs-on: ubuntu-latest | |
services: | |
postgres: | |
image: postgres:latest | |
env: | |
POSTGRES_USER: postgres | |
POSTGRES_PASSWORD: postgres | |
POSTGRES_DB: postgres | |
ports: | |
- 5432:5432 | |
steps: | |
- name: Checkout PR Branch | |
uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Free Disk Space | |
uses: ./.github/actions/free-disk-space | |
- name: Install toolchain | |
uses: moonrepo/setup-rust@v1 | |
with: | |
components: clippy | |
cache-base: main | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Setup sqlx-cli | |
run: cargo install sqlx-cli | |
- name: Setup Biome | |
uses: biomejs/setup-biome@v2 | |
with: | |
version: latest | |
- name: Run Lints | |
run: | | |
cargo clippy | |
cargo run -p rules_check | |
biome lint | |
cargo sqlx prepare --check --workspace | |
test: | |
name: Test | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
include: | |
# reactive once we upgrade to the latest version of pg_query that is windows-compatible | |
- os: windows-latest | |
- os: ubuntu-latest | |
steps: | |
- name: Checkout PR branch | |
uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Free Disk Space | |
uses: ./.github/actions/free-disk-space | |
- name: Install toolchain | |
uses: moonrepo/setup-rust@v1 | |
with: | |
cache-base: main | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
# running containers via `services` only works on linux | |
# https://github.com/actions/runner/issues/1866 | |
- name: Setup postgres | |
uses: ikalnytskyi/action-setup-postgres@v7 | |
- name: Run tests | |
run: cargo test --workspace | |
test-js-bindings: | |
name: Test JS Bindings | |
runs-on: ubuntu-latest | |
services: | |
postgres: | |
image: postgres:latest | |
env: | |
POSTGRES_USER: postgres | |
POSTGRES_PASSWORD: postgres | |
POSTGRES_DB: postgres | |
ports: | |
- 5432:5432 | |
steps: | |
- name: Checkout PR branch | |
uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Free Disk Space | |
uses: ./.github/actions/free-disk-space | |
- name: Install toolchain | |
uses: moonrepo/setup-rust@v1 | |
- name: Build main binary | |
run: cargo build -p pgt_cli --release | |
- name: Setup Bun | |
uses: oven-sh/setup-bun@v2 | |
- name: Install JS dependencies | |
run: bun install | |
- name: Build TypeScript code | |
working-directory: packages/@postgrestools/backend-jsonrpc | |
run: bun run build | |
- name: Run JS tests | |
working-directory: packages/@postgrestools/backend-jsonrpc | |
run: bun run test | |
codegen: | |
name: Check Codegen | |
runs-on: ubuntu-latest | |
services: | |
postgres: | |
image: postgres:latest | |
env: | |
POSTGRES_USER: postgres | |
POSTGRES_PASSWORD: postgres | |
POSTGRES_DB: postgres | |
ports: | |
- 5432:5432 | |
steps: | |
- name: Checkout PR branch | |
uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- name: Free Disk Space | |
uses: ./.github/actions/free-disk-space | |
- name: Install toolchain | |
uses: moonrepo/setup-rust@v1 | |
with: | |
cache-base: main | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Run the analyser codegen | |
run: cargo run -p xtask_codegen -- analyser | |
- name: Run the configuration codegen | |
run: cargo run -p xtask_codegen -- configuration | |
- name: Run the docs codegen | |
run: cargo run -p docs_codegen | |
- name: Check for git diff -- run "just ready" if you see an error | |
run: | | |
if [[ $(git status --porcelain) ]]; then | |
git status | |
git diff | |
exit 1 | |
fi |