Add CLI smoke test CI #120
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: Rust CI | |
on: | |
push: | |
branches: [ main ] | |
pull_request: | |
branches: [ main ] | |
jobs: | |
build: | |
name: test ${{ matrix.rust }} | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
rust: ["stable", "beta", "nightly"] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@stable | |
- name: Set up Rust | |
run: | | |
rustup update ${{ matrix.rust }} | |
rustup default ${{ matrix.rust }} | |
rustup component add rustfmt | |
rustup component add clippy | |
- uses: Swatinem/rust-cache@v2 | |
- name: Run PostgreSQL 12 | |
run: | | |
docker run --env POSTGRES_USER=postgres \ | |
--env POSTGRES_DB=pg-extras-rs-test \ | |
--env POSTGRES_PASSWORD=secret \ | |
-d -p 5432:5432 postgres:12.20-alpine \ | |
postgres -c shared_preload_libraries=pg_stat_statements | |
- name: Run PostgreSQL 13 | |
run: | | |
docker run --env POSTGRES_USER=postgres \ | |
--env POSTGRES_DB=pg-extras-rs-test \ | |
--env POSTGRES_PASSWORD=secret \ | |
-d -p 5433:5432 postgres:13.16-alpine \ | |
postgres -c shared_preload_libraries=pg_stat_statements | |
- name: Run PostgreSQL 14 | |
run: | | |
docker run --env POSTGRES_USER=postgres \ | |
--env POSTGRES_DB=pg-extras-rs-test \ | |
--env POSTGRES_PASSWORD=secret \ | |
-d -p 5434:5432 postgres:14.13-alpine \ | |
postgres -c shared_preload_libraries=pg_stat_statements | |
- name: Run PostgreSQL 15 | |
run: | | |
docker run --env POSTGRES_USER=postgres \ | |
--env POSTGRES_DB=pg-extras-rs-test \ | |
--env POSTGRES_PASSWORD=secret \ | |
-d -p 5435:5432 postgres:15.8-alpine \ | |
postgres -c shared_preload_libraries=pg_stat_statements | |
- name: Run PostgreSQL 16 | |
run: | | |
docker run --env POSTGRES_USER=postgres \ | |
--env POSTGRES_DB=pg-extras-rs-test \ | |
--env POSTGRES_PASSWORD=secret \ | |
-d -p 5436:5432 postgres:16.4-alpine \ | |
postgres -c shared_preload_libraries=pg_stat_statements | |
- name: Run PostgreSQL 17 | |
run: | | |
docker run --env POSTGRES_USER=postgres \ | |
--env POSTGRES_DB=pg-extras-rs-test \ | |
--env POSTGRES_PASSWORD=secret \ | |
-d -p 5437:5432 postgres:17.0-alpine \ | |
postgres -c shared_preload_libraries=pg_stat_statements | |
sleep 5 | |
- name: Check | |
run: cargo check | |
- name: Fmt | |
run: cargo fmt --all --check | |
- name: Lint | |
run: cargo clippy --all --all-features -- -D warnings | |
- name: Smoke test CLI | |
env: | |
DATABASE_URL: postgres://postgres:secret@localhost:5432/pg-extras-rs-test | |
run: | | |
cargo run --bin pgextras | |
exit_code=$? | |
if [ $exit_code -eq 2 ]; then | |
echo "Command completed successfully." | |
else | |
echo "Command failed." | |
exit 1 | |
fi | |
cargo run --bin pgextras cache-hit | |
- name: Run tests for PG 12 | |
env: | |
PG_VERSION: 12 | |
run: cargo test | |
- name: Run tests for PG 13 | |
env: | |
PG_VERSION: 13 | |
run: cargo test | |
- name: Run tests for PG 14 | |
env: | |
PG_VERSION: 14 | |
run: cargo test | |
- name: Run tests for PG 15 | |
env: | |
PG_VERSION: 15 | |
run: cargo test | |
- name: Run tests for PG 16 | |
env: | |
PG_VERSION: 16 | |
run: cargo test | |
- name: Run tests for PG 17 | |
env: | |
PG_VERSION: 17 | |
run: cargo test |