Skip to content

Prepare 0 7 1

Prepare 0 7 1 #672

Workflow file for this run

# Github workflow files do not support YAML anchors.
name: CI
on:
push:
branches:
- main
pull_request:
env:
CARGO_TERM_COLOR: always
jobs:
check:
name: Check / Linux
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@v1
id: toolchain
with:
toolchain: stable
- name: Chown cargo registry because of caching
run: sudo chown -R runner ~/.cargo/registry
- name: Cache cargo registry and target
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
target
key: linux-check-${{ steps.toolchain.outputs.cachekey }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: Check
run: cargo check
- name: Cleanup for caching
run: cargo clean --package pg_datanymizer
if: steps.cache-target.outputs.cache-hit != 'true'
fmt:
name: Rustfmt / Linux
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@v1
with:
toolchain: stable
components: rustfmt
- run: cargo fmt --all -- --check
clippy:
name: Clippy / Linux
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@v1
id: toolchain
with:
toolchain: stable
components: clippy
- name: Chown cargo registry because of caching
run: sudo chown -R runner ~/.cargo/registry
- name: Cache cargo registry and target
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
target
key: clippy-linux-${{ steps.toolchain.outputs.cachekey }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: Check with Clippy
run: cargo clippy -- -D warnings
- name: Cleanup for caching
run: cargo clean --package pg_datanymizer
if: steps.cache-target.outputs.cache-hit != 'true'
test:
name: Test and coverage / Linux
runs-on: ubuntu-latest
env:
postgres_password: 'pgpass'
postgres_port: 5432
postgres_version: 14
steps:
- name: Run Postgres (with Docker)
# requires the `server.crt` file for TLS support
run: |
docker run -d -p 127.0.0.1:${{ env.postgres_port }}:5432 -e POSTGRES_PASSWORD=${{ env.postgres_password }} \
postgres:${{ env.postgres_version }}
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@v1
id: toolchain
with:
toolchain: nightly
- name: Chown cargo registry because of caching
run: sudo chown -R runner ~/.cargo/registry
- name: Set grcov version
run: echo "GRCOV_VERSION=$(cargo search --limit 1 grcov | head -n1 | cut -d '"' -f2)" >> $GITHUB_ENV
- name: Cache cargo registry, target, and grcov binary
id: test-grcov
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
~/.cargo/bin/grcov
target
key: grcov-${{ steps.toolchain.outputs.cachekey }}-cargo-${{ hashFiles('**/Cargo.lock') }}-${{ env.GRCOV_VERSION }}
- name: Install grcov
run: |
cargo install --version $GRCOV_VERSION grcov
if: steps.test-grcov.outputs.cache-hit != 'true'
- name: Clean coverage
run: |
rm -f target/debug/deps/*.gcda
rm -f target/debug/deps/*.gcno
- name: Run tests
run: cargo test --all-features
env:
CARGO_INCREMENTAL: '0'
DATANYMIZER_TEST_PG_DB: |
postgres://postgres:${{ env.postgres_password }}@localhost:${{ env.postgres_port }}/datanymizer_test
RUSTFLAGS: |
-Zprofile -Zpanic_abort_tests -Ccodegen-units=1 -Clink-dead-code -Coverflow-checks=off
- name: Prepare coverage info for Codecov
run: |
cd target/debug/deps
find . -name "pg_datanymizer-*.gcda" -o -name "pg_datanymizer-*.gcno" -o \
-name "datanymizer_dumper-*.gcda" -o -name "datanymizer_dumper-*.gcno" -o \
-name "datanymizer_engine-*.gcda" -o -name "datanymizer_engine-*.gcno" | zip ../../../coverage -@
cd ../../..
grcov --llvm --output-type=lcov --output-file=lcov.info coverage.zip
- uses: codecov/codecov-action@v4
with:
file: ./lcov.info
token: ${{ secrets.CODECOV_TOKEN }}
- name: Cleanup for caching
run: cargo clean --package pg_datanymizer
if: steps.cache-target.outputs.cache-hit != 'true'
test_demo:
name: Test demo
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Bootstrap demo, make a dump file, ensure that it is not empty
run: |
cd demo
make bootstrap
make dump
([[ -s /tmp/fake_dump.sql ]] && echo "The dump file exists and is not empty") || (echo "No dump file or it is empty" && exit 1)
- name: Restore the dump and check the data
run: |
cd demo
make restore_dump
make check_data
linux_build:
name: Build / Linux
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@v1
id: toolchain
with:
toolchain: stable
- name: Chown cargo registry because of caching
run: sudo chown -R runner ~/.cargo/registry
- name: Cache cargo registry and target
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
target
key: build-linux-${{ steps.toolchain.outputs.cachekey }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: Build
run: cargo build
- name: Cleanup for caching
run: cargo clean --package pg_datanymizer
if: steps.cache-target.outputs.cache-hit != 'true'
windows_build:
name: Build / Windows
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@v1
id: toolchain
with:
toolchain: stable
- name: Cache cargo registry and target
uses: actions/cache@v4
with:
path: |
~/.cargo/registry
target
key: build-windows-${{ steps.toolchain.outputs.cachekey }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: Build
run: cargo build
- name: Cleanup for caching
run: cargo clean --package pg_datanymizer
if: steps.cache-target.outputs.cache-hit != 'true'
docker_build:
name: Build / Docker
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build
run: docker build --target builder .