💥 Reboot project #9
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| push: | |
| branches: [ main, develop ] | |
| pull_request: | |
| branches: [ main, develop ] | |
| env: | |
| CARGO_TERM_COLOR: always | |
| RUST_BACKTRACE: 1 | |
| jobs: | |
| frontend: | |
| name: Frontend Tests | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20' | |
| cache: 'npm' | |
| cache-dependency-path: frontend/package-lock.json | |
| - name: Install dependencies | |
| run: | | |
| cd frontend | |
| npm ci | |
| - name: Run linter | |
| run: | | |
| cd frontend | |
| npm run lint | |
| - name: Run tests | |
| run: | | |
| cd frontend | |
| npm run test:run | |
| - name: Build frontend | |
| run: | | |
| cd frontend | |
| npm run build | |
| backend: | |
| name: Backend Tests | |
| runs-on: ubuntu-latest | |
| services: | |
| postgres: | |
| image: postgres:15 | |
| env: | |
| POSTGRES_PASSWORD: postgres | |
| POSTGRES_USER: postgres | |
| POSTGRES_DB: guild_genesis_test | |
| options: >- | |
| --health-cmd pg_isready | |
| --health-interval 10s | |
| --health-timeout 5s | |
| --health-retries 5 | |
| ports: | |
| - 5432:5432 | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Install Rust | |
| uses: actions-rs/toolchain@v1 | |
| with: | |
| toolchain: stable | |
| components: rustfmt, clippy | |
| override: true | |
| - name: Cache cargo registry | |
| uses: actions/cache@v3 | |
| with: | |
| path: | | |
| ~/.cargo/registry | |
| ~/.cargo/git | |
| backend/target | |
| key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
| restore-keys: | | |
| ${{ runner.os }}-cargo- | |
| - name: Install dependencies | |
| run: | | |
| cd backend | |
| cargo build --verbose | |
| - name: Run clippy | |
| run: | | |
| cd backend | |
| cargo clippy --all-targets --all-features -- -D warnings | |
| - name: Run rustfmt | |
| run: | | |
| cd backend | |
| cargo fmt --all -- --check | |
| - name: Run tests | |
| run: | | |
| cd backend | |
| cargo test --verbose | |
| env: | |
| DATABASE_URL: postgres://postgres:postgres@localhost:5432/guild_genesis_test | |
| TEST_DATABASE_URL: postgres://postgres:postgres@localhost:5432/guild_genesis_test | |
| integration: | |
| name: Integration Tests | |
| runs-on: ubuntu-latest | |
| needs: [frontend, backend] | |
| services: | |
| postgres: | |
| image: postgres:15 | |
| env: | |
| POSTGRES_PASSWORD: postgres | |
| POSTGRES_USER: postgres | |
| POSTGRES_DB: guild_genesis_test | |
| options: >- | |
| --health-cmd pg_isready | |
| --health-interval 10s | |
| --health-timeout 5s | |
| --health-retries 5 | |
| ports: | |
| - 5432:5432 | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20' | |
| cache: 'npm' | |
| cache-dependency-path: frontend/package-lock.json | |
| - name: Install Rust | |
| uses: actions-rs/toolchain@v1 | |
| with: | |
| toolchain: stable | |
| override: true | |
| - name: Install dependencies | |
| run: | | |
| cd frontend && npm ci | |
| cd ../backend && cargo build | |
| - name: Run integration tests | |
| run: | | |
| cd backend | |
| cargo test --test integration_tests --verbose | |
| env: | |
| DATABASE_URL: postgres://postgres:postgres@localhost:5432/guild_genesis_test | |
| TEST_DATABASE_URL: postgres://postgres:postgres@localhost:5432/guild_genesis_test | |
| docker: | |
| name: Docker Build Test | |
| runs-on: ubuntu-latest | |
| needs: [frontend, backend] | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| - name: Build and test Docker images | |
| run: | | |
| docker-compose build | |
| docker-compose up -d postgres | |
| sleep 10 | |
| docker-compose up --build --abort-on-container-exit backend frontend | |