From 0a68ef53d015df97fe12559ece9a99950a418db1 Mon Sep 17 00:00:00 2001 From: phoenix Date: Sun, 20 Apr 2025 20:38:06 -0400 Subject: [PATCH] Updated workflow to setup database --- .github/workflows/workflow.yml | 51 +++++++++++++++++++++++++++++++--- 1 file changed, 47 insertions(+), 4 deletions(-) diff --git a/.github/workflows/workflow.yml b/.github/workflows/workflow.yml index d08548c..bb9dc41 100644 --- a/.github/workflows/workflow.yml +++ b/.github/workflows/workflow.yml @@ -2,25 +2,63 @@ name: Rust CI on: push: - branches: [ "v0.2" ] # Changed from main to master + branches: [ "v0.2" ] pull_request: - branches: [ "v0.2" ] # Changed from main to master + branches: [ "v0.2" ] + +env: + POSTGRES_VERSION: "17.4" + POSTGRES_USER: "postgres" + POSTGRES_DB: "icarus_db" jobs: build: - runs-on: ubuntu-24.04 + services: + postgres: + image: postgres:${{ env.POSTGRES_VERSION }} + env: + POSTGRES_PASSWORD: ${{ secrets.POSTGRES_PASSWORD }} + POSTGRES_USER: ${{ env.POSTGRES_USER }} + POSTGRES_DB: ${{ env.POSTGRES_DB }} + ports: + - 5432:5432 + options: >- + --health-cmd pg_isready + --health-interval 10s + --health-timeout 5s + --health-retries 5 steps: - uses: actions/checkout@v4 + - name: Install Rust 1.86.0 uses: actions-rs/toolchain@v1 with: toolchain: 1.86.0 components: clippy, rustfmt override: true + - name: Cache dependencies uses: Swatinem/rust-cache@v2 + + - name: Install libpq + run: sudo apt-get install -y libpq-dev + + - name: Setup test database + env: + DATABASE_URL: "postgres://${{ env.POSTGRES_USER }}:${{ secrets.POSTGRES_PASSWORD }}@localhost:5432/${{ env.POSTGRES_DB }}" + run: | + # Wait for PostgreSQL to be ready + for i in {1..10}; do + pg_isready -U $POSTGRES_USER -d $POSTGRES_DB && break + sleep 2 + done + + # Run database migrations (if you use sqlx migrations) + cargo install sqlx-cli --no-default-features --features native-tls,postgres + sqlx migrate run --database-url $DATABASE_URL + - name: Build run: | mkdir -p ~/.ssh @@ -30,9 +68,14 @@ jobs: eval $(ssh-agent -s) ssh-add -v ~/.ssh/gitea_deploy_key cargo build --verbose --release + - name: Run tests + env: + DATABASE_URL: "postgres://${{ env.POSTGRES_USER }}:${{ secrets.POSTGRES_PASSWORD }}@localhost:5432/${{ env.POSTGRES_DB }}" run: cargo test --verbose + - name: Run clippy run: cargo clippy -- -D warnings + - name: Run rustfmt - run: cargo fmt --all -- --check + run: cargo fmt --all -- --check \ No newline at end of file