Skip to content

Refactor DSL to use nested JSON graph construction #16

Refactor DSL to use nested JSON graph construction

Refactor DSL to use nested JSON graph construction #16

Workflow file for this run

name: CI
on:
pull_request:
push:
branches: [main] # Runs on main after merge
env:
CARGO_TERM_COLOR: always
GITHUB_TOKEN: ${{ secrets.GH_PAT }}
jobs:
format:
name: Format Check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Rust nightly
run: |
rustup toolchain install nightly --profile minimal --component rustfmt
rustup default nightly
- name: Check formatting
run: cargo fmt --all -- --check
test:
name: Clippy & Tests
runs-on: ubuntu-latest
needs: format
steps:
- uses: actions/checkout@v4
- name: Install Rust nightly
run: |
rustup toolchain install nightly --profile minimal --component clippy
rustup default nightly
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
pkg-config \
libssl-dev \
libclang-dev \
clang \
bison \
flex \
libreadline-dev \
zlib1g-dev \
libxml2-dev \
libxslt1-dev \
libicu-dev
- name: Cache cargo registry
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/git
~/.pgrx
target
key: ${{ runner.os }}-cargo-pgrx-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-pgrx-
- name: Install cargo-pgrx
run: cargo install cargo-pgrx --version 0.16.1 --locked
- name: Initialize pgrx
run: cargo pgrx init --pg17 download
- name: Configure git credentials for private repos
run: |
git config --global url."https://${{ secrets.GH_PAT }}@github.com/".insteadOf "https://github.com/"
- name: Run clippy
run: cargo clippy --features pg17 -- -D warnings
- name: Run unit tests
run: cargo pgrx test pg17
- name: Run E2E tests
id: e2e_tests
run: ./scripts/test-e2e-local.sh
- name: Upload PostgreSQL logs on E2E failure
if: failure()
uses: actions/upload-artifact@v4
with:
name: postgresql-logs
path: |
~/.pgrx/17.log
~/.pgrx/data-17/log/*.log
if-no-files-found: warn
# TODO: Re-enable once pg_regress tests are stabilized
# - name: Run pg_regress tests
# id: pg_regress
# env:
# PGDATABASE: contrib_regression
# run: |
# ./scripts/pg-start.sh
# cd test/regress
# make installcheck
# - name: Upload pg_regress results on failure
# if: steps.pg_regress.outcome == 'failure'
# uses: actions/upload-artifact@v4
# with:
# name: pg_regress-results
# path: |
# test/regress/regression.out
# test/regress/regression.diffs
# if-no-files-found: ignore
# - name: Stop PostgreSQL after pg_regress
# if: steps.pg_regress.outcome != 'skipped'
# run: ./scripts/pg-stop.sh