From 899ec0cfdcf591d2a3a3817883d154f22b4a0a08 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 | 58 ++++++++--------------------------- 1 file changed, 13 insertions(+), 45 deletions(-) diff --git a/.github/workflows/general.yml b/.github/workflows/general.yml index ea6ea7a..0c396e4 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,44 +17,29 @@ 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 - name: Install sqlx-cli @@ -71,13 +52,11 @@ jobs: run: | 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 +64,6 @@ jobs: - name: Check that queries are fresh run: cargo sqlx prepare --check --workspace - # `fmt` container job fmt: name: Rustfmt runs-on: ubuntu-latest @@ -98,17 +76,10 @@ jobs: - 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 @@ -119,7 +90,6 @@ jobs: - name: Linting run: cargo clippy -- -D warnings - # `coverage` container job coverage: name: Code coverage runs-on: ubuntu-latest @@ -131,11 +101,11 @@ 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 @@ -152,13 +122,11 @@ jobs: run: | 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