From 9779e0beef4f2aab7cef3e63655783fee3133560 Mon Sep 17 00:00:00 2001 From: Alphonse Paix Date: Sun, 28 Sep 2025 15:35:16 +0200 Subject: [PATCH] update github workflow --- .github/workflows/general.yml | 68 +++++++++++------------------------ 1 file changed, 21 insertions(+), 47 deletions(-) diff --git a/.github/workflows/general.yml b/.github/workflows/general.yml index ea6ea7a..3ec427e 100644 --- a/.github/workflows/general.yml +++ b/.github/workflows/general.yml @@ -1,14 +1,10 @@ -# The name of your workflow. GitHub displays the names of your workflows on your repository's "Actions" tab name: Rust -# To automatically trigger the workflow on: - # NB: this differs from the book's project! - # These settings allow us to run this specific CI pipeline for PRs against - # this specific branch (a.k.a. book chapter). push: branches: - main + - workflow pull_request: types: [opened, synchronize, reopened] branches: @@ -21,46 +17,33 @@ env: APP_USER: app APP_USER_PWD: secret APP_DB_NAME: newsletter + APP_DATABASE__PORT: 15432 + APP_REDIS_URI: redis://127.0.0.1:16379 -# A workflow run is made up of one or more jobs, which run in parallel by default -# Each job runs in a runner environment specified by runs-on jobs: - # Unique identifier of our job (`job_id`) test: - # Sets the name `Test` for the job, which is displayed in the GitHub UI name: Test - # Containers must run in Linux based operating systems runs-on: ubuntu-latest - # Service containers to run alongside the `test` container job services: - # Label used to access the service container postgres: - # Docker Hub image image: postgres - # Environment variables scoped only for the `postgres` element env: POSTGRES_USER: postgres POSTGRES_PASSWORD: password POSTGRES_DB: postgres - # When you map ports using the ports keyword, GitHub uses the --publish command to publish the container’s ports to the Docker host - # Opens tcp port 5432 on the host and service container ports: - - 5432:5432 + - 15432:5432 redis: - image: redis:7 + image: redis ports: - - 6379:6379 + - 16379:6379 steps: - # Downloads a copy of the code in your repository before running CI tests - name: Check out repository code - # The uses keyword specifies that this step will run v4 of the actions/checkout action. - # This is an action that checks out your repository onto the runner, allowing you to run scripts or other actions against your code (such as build and test tools). - # You should use the checkout action any time your workflow will run against the repository's code. uses: actions/checkout@v4 - # This GitHub Action installs a Rust toolchain using rustup. It is designed for one-line concise usage and good defaults. - # It also takes care of caching intermediate build artifacts. - name: Install the Rust toolchain uses: actions-rust-lang/setup-rust-toolchain@v1 + with: + cache: false - name: Install sqlx-cli run: cargo install sqlx-cli --version=${{ env.SQLX_VERSION }} @@ -69,15 +52,13 @@ jobs: --locked - name: Create app user in Postgres run: | - sudo apt-get install postgresql-client + sudo apt-get update && sudo apt-get install postgresql-client - # Create the application user CREATE_QUERY="CREATE USER ${APP_USER} WITH PASSWORD '${APP_USER_PWD}';" - PGPASSWORD="password" psql -U "postgres" -h "localhost" -c "${CREATE_QUERY}" + PGPASSWORD="password" psql -U postgres -h localhost -p 15432 -c "${CREATE_QUERY}" - # Grant create db privileges to the app user GRANT_QUERY="ALTER USER ${APP_USER} CREATEDB;" - PGPASSWORD="password" psql -U "postgres" -h "localhost" -c "${GRANT_QUERY}" + PGPASSWORD="password" psql -U postgres -h localhost -p 15432 -c "${GRANT_QUERY}" - name: Migrate database run: SKIP_DOCKER=true ./scripts/init_db.sh - name: Run tests @@ -85,7 +66,6 @@ jobs: - name: Check that queries are fresh run: cargo sqlx prepare --check --workspace - # `fmt` container job fmt: name: Rustfmt runs-on: ubuntu-latest @@ -95,31 +75,26 @@ jobs: uses: actions-rust-lang/setup-rust-toolchain@v1 with: components: rustfmt + cache: false - name: Enforce formatting run: cargo fmt --check - # `clippy` container job clippy: name: Clippy runs-on: ubuntu-latest env: - # This environment variable forces sqlx to use its offline mode, - # which means that it will not attempt to connect to a database - # when running the tests. It'll instead use the cached query results. - # We check that the cached query results are up-to-date in another job, - # to speed up the overall CI pipeline. - # This will all be covered in detail in chapter 5. SQLX_OFFLINE: true steps: - uses: actions/checkout@v4 - name: Install the Rust toolchain uses: actions-rust-lang/setup-rust-toolchain@v1 + with: + cache: false with: components: clippy - name: Linting run: cargo clippy -- -D warnings - # `coverage` container job coverage: name: Code coverage runs-on: ubuntu-latest @@ -131,17 +106,18 @@ jobs: POSTGRES_PASSWORD: password POSTGRES_DB: postgres ports: - - 5432:5432 + - 15432:5432 redis: - image: redis:7 + image: redis ports: - - 6379:6379 + - 16379:6379 steps: - uses: actions/checkout@v4 - name: Install the Rust toolchain uses: actions-rust-lang/setup-rust-toolchain@v1 with: components: llvm-tools-preview + cache: false - name: Install sqlx-cli run: cargo install sqlx-cli --version=${{ env.SQLX_VERSION }} @@ -150,15 +126,13 @@ jobs: --locked - name: Create app user in Postgres run: | - sudo apt-get install postgresql-client + sudo apt-get update && sudo apt-get install postgresql-client - # Create the application user CREATE_QUERY="CREATE USER ${APP_USER} WITH PASSWORD '${APP_USER_PWD}';" - PGPASSWORD="password" psql -U "postgres" -h "localhost" -c "${CREATE_QUERY}" + PGPASSWORD="password" psql -U postgres -h localhost -p 15432 -c "${CREATE_QUERY}" - # Grant create db privileges to the app user GRANT_QUERY="ALTER USER ${APP_USER} CREATEDB;" - PGPASSWORD="password" psql -U "postgres" -h "localhost" -c "${GRANT_QUERY}" + PGPASSWORD="password" psql -U postgres -h localhost -p 15432 -c "${GRANT_QUERY}" - name: Migrate database run: SKIP_DOCKER=true ./scripts/init_db.sh - name: Install cargo-llvm-cov