Files
YANPM/.github/workflows/test.yml
GW_MC c79ef265db
All checks were successful
Test / verify-generated-code (pull_request) Successful in 54s
Test / test-frontend (pull_request) Successful in 23s
Test / frontend-build (pull_request) Successful in 25s
Test / test (pull_request) Successful in 1m13s
Test / lint (pull_request) Successful in 1m12s
use workflow specific cache instead of artifact
2025-12-02 20:44:18 +08:00

164 lines
4.3 KiB
YAML

# this workflow runs tests on pull request and push events targeting master branch
# it also verify the generated code is up to date and valid
name: Test
on:
pull_request:
branches:
- master
push:
branches:
- master
jobs:
# setup is now handled by a composite action used by downstream jobs to keep
# the workflow DRY. The composite action performs checkout, cache restore and
# toolchain setup.
verify-generated-code:
# no need to depend on a separate setup job; the composite action runs in
# this job and restores caches/toolchain here.
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Setup Rust, checkout and restore caches
uses: ./.github/actions/setup-rust
- name: generate entities from migration files
run: |
cd apps/cli
cargo run -- db:migrate_and_generate --output-path ../../public/database/src/generated/entities
- name: Check for uncommitted changes in /generated/
run: |
if [[ -n $(git status --porcelain | grep '^ M .*\/generated\/') ]]; then
echo "Generated code is not up to date. Please run the code generation locally and commit the changes."
git status --porcelain | grep '^ M .*\/generated\/'
exit 1
else
echo "Generated code is up to date."
fi
test:
needs: frontend-build
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Setup Rust, checkout and restore caches
uses: ./.github/actions/setup-rust
- name: Restore frontend build cache
uses: actions/cache@v4
with:
path: apps/frontend/build
key: frontend-build-${{ runner.os }}-run-${{ github.run_id }}
restore-keys: |
frontend-build-${{ runner.os }}-
- name: Run tests
run: cargo test --all-features
lint:
needs: frontend-build
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Setup Rust, checkout and restore caches
uses: ./.github/actions/setup-rust
with:
components: clippy, rustfmt
- name: Restore frontend build cache
uses: actions/cache@v4
with:
path: apps/frontend/build
key: frontend-build-${{ runner.os }}-run-${{ github.run_id }}
restore-keys: |
frontend-build-${{ runner.os }}-
- name: Run clippy
run: cargo clippy --all-features -- -D warnings
- name: Check code formatting
run: cargo fmt --all -- --check
test-frontend:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: pnpm/action-setup@v4
name: Install pnpm
with:
version: 10
run_install: false
- name: Install Node.js
uses: actions/setup-node@v4
with:
node-version: 22
cache: 'pnpm'
cache-dependency-path: apps/frontend/pnpm-lock.yaml
- name: Install frontend dependencies
run: |
cd apps/frontend
pnpm install
- name: Run frontend tests
run: |
cd apps/frontend
pnpm test
frontend-build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- uses: pnpm/action-setup@v4
with:
version: 10
run_install: false
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 22
cache: 'pnpm'
cache-dependency-path: apps/frontend/pnpm-lock.yaml
- name: Install frontend dependencies
run: |
cd apps/frontend
pnpm install
- name: Build frontend
run: |
cd apps/frontend
pnpm build
- name: Cache frontend build
uses: actions/cache@v4
with:
path: apps/frontend/build
key: frontend-build-${{ runner.os }}-run-${{ github.run_id }}
restore-keys: |
frontend-build-${{ runner.os }}-