diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index eb69bee..808f999 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -2,14 +2,33 @@ name: Rust on: [push, pull_request] env: CARGO_TERM_COLOR: always + SQLX_VERSION: 0.7 + SQLX_FEATURES: "rustls,postgres" jobs: test: name: Test runs-on: ubuntu-latest + services: + postgres: + image: postgres:14 + env: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres + POSTGRES_DB: postgres + ports: + - 5432:5432 steps: - uses: actions/checkout@v3 - uses: dtolnay/rust-toolchain@stable - uses: Swatinem/rust-cache@v2 + with: + key: sqlx-${{ env.SQLX_VERSION }} + - name: Install sqlx-cli + run: cargo install sqlx-cli --version ${{ env.SQLX_VERSION }} --features ${{ env.SQLX_FEATURES }} --no-default-features --locked + - name: Install postgresql-client + run: sudo apt-get update && sudo apt-get install -y postgresql-client + - name: Migrate database + run: SKIP_DOCKER=true ./scripts/init_db - name: Run tests run: cargo test fmt: @@ -25,23 +44,59 @@ jobs: clippy: name: Clippy runs-on: ubuntu-latest + services: + postgres: + image: postgres:14 + env: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: password + POSTGRES_DB: postgres + ports: + - 5432:5432 steps: - uses: actions/checkout@v3 - uses: dtolnay/rust-toolchain@stable with: components: clippy - uses: Swatinem/rust-cache@v2 + with: + key: sqlx-${{ env.SQLX_VERSION }} + - name: Install sqlx-cli + run: cargo install sqlx-cli --version=${{ env.SQLX_VERSION }} --features ${{ env.SQLX_FEATURES }} --no-default-features --locked + - name: Install postgresql-client + run: sudo apt-get update && sudo apt-get install postgresql-client -y + - name: Migrate database + run: SKIP_DOCKER=true ./scripts/init_db - name: Linting - run: cargo clippy -- -D warnings - coverage: + coverage: name: Code coverage runs-on: ubuntu-latest - container: - image: xd009642/tarpaulin - options: --security-opt seccomp=unconfined + services: + postgres: + image: postgres:14 + env: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: password + POSTGRES_DB: postgres + ports: + - 5432:5432 steps: - name: Checkout repository uses: actions/checkout@v3 + - uses: dtolnay/rust-toolchain@stable + - name: Install postgresql-client + run: sudo apt-get update && sudo apt-get install postgresql-client -y + - uses: Swatinem/rust-cache@v2 + with: + key: sqlx-${{ env.SQLX_VERSION }} + - name: Install sqlx-cli + run: + cargo install sqlx-cli + --version=${{ env.SQLX_VERSION }} + --features ${{ env.SQLX_FEATURES }} + --no-default-features + --locked + - name: Migrate database + run: SKIP_DOCKER=true ./scripts/init_db - name: Generate code coverage - run: | - cargo tarpaulin --verbose --workspace + run: cargo install cargo-tarpaulin && cargo tarpaulin --verbose --workspace run: cargo clippy -- -D warnings diff --git a/scripts/init_db b/scripts/init_db index e1b23d3..234a274 100755 --- a/scripts/init_db +++ b/scripts/init_db @@ -21,7 +21,7 @@ DB_PORT="${POSTGRES_PORT:=5432}" DB_HOST="${POSTGRES_HOST:=localhost}" if [[ -z "${SKIP_DOCKER}" ]]; then - doas docker run\ + docker run\ -e POSTGRES_USER=${DB_USER}\ -e POSTGRES_PASSWORD=${DB_PASSWORD}\ -e POSTGRES_DB=${DB_NAME}\