Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 3 additions & 4 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@

## Verification

- [ ] `cargo fmt --all --check`
- [ ] `cargo clippy --all-targets -- -D warnings`
- [ ] `cargo test --doc`
- [ ] `cargo test --test runtime_smoke -- --nocapture`
- [ ] `scripts/validate.sh ci`
- [ ] `scripts/validate.sh release`
- [ ] `cargo deny check`
25 changes: 0 additions & 25 deletions .github/scripts/check-conventional-commit.sh

This file was deleted.

143 changes: 114 additions & 29 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,55 +15,140 @@ concurrency:
env:
CARGO_TERM_COLOR: always
RUST_BACKTRACE: 1
PREK_VERSION: 0.3.10

jobs:
workflow-lint:
name: Workflow lint
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
persist-credentials: false

- name: Lint GitHub Actions workflows
uses: raven-actions/actionlint@v2.1.2

checks:
name: Rust checks
name: Rust checks (MSRV)
runs-on: ubuntu-latest
timeout-minutes: 30
timeout-minutes: 90
steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@master
- name: Checkout repository
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ github.event.pull_request.head.sha || github.sha }}

- name: Install Tauri Linux dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
libayatana-appindicator3-dev \
libssl-dev \
libwebkit2gtk-4.1-dev \
librsvg2-dev \
patchelf \
pkg-config

- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: 1.92
components: rustfmt, clippy

- name: Install Node.js
uses: actions/setup-node@v6
with:
node-version: 22
cache: npm
cache-dependency-path: examples/tauri-sqlx-vanilla/package-lock.json

- uses: Swatinem/rust-cache@v2
- name: Format
run: cargo fmt --all --check
- name: Check default features
run: cargo check --all-targets --locked
- name: Check no default features
run: cargo check --no-default-features --all-targets --locked
- name: Clippy
run: cargo clippy --all-targets --locked -- -D warnings
- name: Unit and binary tests
run: cargo test --lib --bins --locked
- name: Doctests
run: cargo test --doc --locked
- name: Package
run: cargo package --locked

runtime-smoke:
name: Embedded Postgres smoke
with:
workspaces: |
. -> target
examples/tauri-sqlx-vanilla/src-tauri -> target

- name: Install prek
uses: taiki-e/install-action@v2
with:
tool: prek@${{ env.PREK_VERSION }}

- name: Validate package checks
run: scripts/validate.sh ci

- name: Validate publish dry run
run: scripts/validate.sh release

feature-powerset:
name: Feature powerset
runs-on: ubuntu-latest
timeout-minutes: 45
steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@master
- name: Checkout repository
uses: actions/checkout@v6
with:
persist-credentials: false

- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: 1.92

- uses: Swatinem/rust-cache@v2
- name: Runtime smoke
run: cargo test --test runtime_smoke --locked -- --nocapture
- name: Proxy smoke
run: cargo test --test proxy_smoke --locked -- --nocapture
- name: Client compatibility
run: cargo test --test client_compat --locked -- --nocapture

- name: Install cargo-hack
uses: taiki-e/install-action@v2
with:
tool: cargo-hack

- name: Check feature combinations
run: cargo hack check --feature-powerset --no-dev-deps

semver:
name: Public API compatibility
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
persist-credentials: false

- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable

- name: Check semver compatibility
uses: obi1kenobi/cargo-semver-checks-action@v2

supply-chain:
name: Supply chain
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v6
with:
persist-credentials: false
- uses: EmbarkStudios/cargo-deny-action@v2

required:
name: Required checks
if: always()
needs:
- workflow-lint
- checks
- feature-powerset
- semver
- supply-chain
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- name: Fail if any required job did not pass
if: contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') || contains(needs.*.result, 'skipped')
run: exit 1

- name: All required jobs passed
run: echo "All required CI jobs passed."
27 changes: 24 additions & 3 deletions .github/workflows/conventional-commits.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,21 +14,40 @@ concurrency:
group: conventional-commits-${{ github.ref }}
cancel-in-progress: true

env:
CARGO_TERM_COLOR: always
PREK_VERSION: 0.3.10

jobs:
conventional:
name: Validate commit and PR title
runs-on: ubuntu-latest
timeout-minutes: 5
timeout-minutes: 20
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ github.event.pull_request.head.sha || github.sha }}

- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: 1.92

- uses: Swatinem/rust-cache@v2

- name: Install prek
uses: taiki-e/install-action@v2
with:
tool: prek@${{ env.PREK_VERSION }}

- name: Check PR title
if: github.event_name == 'pull_request'
env:
PR_TITLE: ${{ github.event.pull_request.title }}
run: ./.github/scripts/check-conventional-commit.sh "$PR_TITLE"
run: |
printf '%s\n' "${PR_TITLE}" > "${RUNNER_TEMP}/pr-title.txt"
scripts/validate.sh commit-msg "${RUNNER_TEMP}/pr-title.txt"
- name: Check release intent for package changes
if: github.event_name == 'pull_request'
env:
Expand All @@ -38,4 +57,6 @@ jobs:
PR_TITLE: ${{ github.event.pull_request.title }}
run: ./.github/scripts/check-release-intent.sh "$PR_TITLE" "$BASE_SHA" "$HEAD_SHA" "$HEAD_BRANCH"
- name: Check HEAD commit subject
run: ./.github/scripts/check-conventional-commit.sh "$(git log -1 --pretty=%s)"
run: |
git log -1 --pretty=%s > "${RUNNER_TEMP}/head-commit.txt"
scripts/validate.sh commit-msg "${RUNNER_TEMP}/head-commit.txt"
64 changes: 34 additions & 30 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,11 @@ concurrency:
env:
CARGO_TERM_COLOR: always
RUST_BACKTRACE: 1
PREK_VERSION: 0.3.10

jobs:
prepare-release-pr:
name: Prepare release PR
name: Prepare Release PR
runs-on: ubuntu-latest
timeout-minutes: 20
if: ${{ github.repository == 'f0rr0/pglite-oxide' && inputs.operation == 'prepare-release-pr' }}
Expand Down Expand Up @@ -59,9 +60,9 @@ jobs:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

publish:
name: Publish release
name: Publish Release
runs-on: ubuntu-latest
timeout-minutes: 90
timeout-minutes: 120
if: ${{ github.repository == 'f0rr0/pglite-oxide' && inputs.operation != 'prepare-release-pr' }}
environment: ${{ inputs.operation == 'publish' && 'crates-io' || 'release-dry-run' }}
steps:
Expand All @@ -78,47 +79,50 @@ jobs:
fetch-depth: 0
persist-credentials: false

- name: Install Tauri Linux dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
libayatana-appindicator3-dev \
libssl-dev \
libwebkit2gtk-4.1-dev \
librsvg2-dev \
patchelf \
pkg-config

- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: 1.92
components: rustfmt, clippy

- uses: Swatinem/rust-cache@v2

- name: Format
run: cargo fmt --all --check

- name: Check default features
run: cargo check --all-targets --locked

- name: Check no default features
run: cargo check --no-default-features --all-targets --locked

- name: Clippy
run: cargo clippy --all-targets --locked -- -D warnings

- name: Unit and binary tests
run: cargo test --lib --bins --locked
- name: Install Node.js
uses: actions/setup-node@v6
with:
node-version: 22
cache: npm
cache-dependency-path: examples/tauri-sqlx-vanilla/package-lock.json

- name: Doctests
run: cargo test --doc --locked
- uses: Swatinem/rust-cache@v2
with:
workspaces: |
. -> target
examples/tauri-sqlx-vanilla/src-tauri -> target

- name: Runtime smoke
run: cargo test --test runtime_smoke --locked -- --nocapture
- name: Install prek
uses: taiki-e/install-action@v2
with:
tool: prek@${{ env.PREK_VERSION }}

- name: Proxy smoke
run: cargo test --test proxy_smoke --locked -- --nocapture
- name: Validate package checks
run: scripts/validate.sh ci

- name: Client compatibility
run: cargo test --test client_compat --locked -- --nocapture
- name: Validate publish dry run
run: scripts/validate.sh release

- name: Supply-chain policy
uses: EmbarkStudios/cargo-deny-action@v2

- name: Inspect package contents
run: cargo package --locked --list

- name: Run release-plz dry run
if: ${{ inputs.operation == 'publish-dry-run' }}
uses: release-plz/action@v0.5
Expand Down
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,3 @@
**/.DS_Store
# Build artifacts from cargo package
pglite_oxide-*.crates.tar.gz

5 changes: 3 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ and [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [0.2.0](https://github.com/f0rr0/pglite-oxide/compare/0.1.0...0.2.0) - 2026-04-24
## [0.2.0] - 2026-04-24

### Added

Expand All @@ -27,5 +27,6 @@ and [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

- Initial repository release.

[Unreleased]: https://github.com/f0rr0/pglite-oxide/compare/0.1.0...HEAD
[Unreleased]: https://github.com/f0rr0/pglite-oxide/compare/0.2.0...HEAD
[0.2.0]: https://github.com/f0rr0/pglite-oxide/compare/0.1.0...0.2.0
[0.1.0]: https://github.com/f0rr0/pglite-oxide/releases/tag/0.1.0
Loading