mnemo_cards/.forgejo/workflows/ci-backend.yml
2025-11-16 15:15:21 +03:00

127 lines
3.1 KiB
YAML

name: Backend CI
on:
push:
branches: [ main, master ]
paths:
- 'mnemo_cards_backend/**'
- 'mnemo_cards_common/**'
- 'mnemo_cards_common_backend/**'
pull_request:
branches: [ main, master ]
paths:
- 'mnemo_cards_backend/**'
- 'mnemo_cards_common/**'
- 'mnemo_cards_common_backend/**'
jobs:
test:
runs-on: ubuntu-latest
container: dart:stable
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Dart SDK
uses: dart-lang/setup-dart@v1
with:
sdk: stable
- name: Cache pub dependencies
uses: actions/cache@v4
with:
path: |
~/.pub-cache
mnemo_cards_backend/.dart_tool
mnemo_cards_common/.dart_tool
mnemo_cards_common_backend/.dart_tool
key: ${{ runner.os }}-pub-${{ hashFiles('**/pubspec.lock') }}
restore-keys: |
${{ runner.os }}-pub-
- name: Install common dependencies
run: |
cd mnemo_cards_common
dart pub get
- name: Install common backend dependencies
run: |
cd mnemo_cards_common_backend
dart pub get
- name: Install backend dependencies
run: |
cd mnemo_cards_backend
dart pub get
- name: Run code generation
run: |
cd mnemo_cards_backend
dart run build_runner build --delete-conflicting-outputs
- name: Run linting
run: |
cd mnemo_cards_backend
dart analyze lib/
dart format --set-exit-if-changed lib/
- name: Run tests
run: |
cd mnemo_cards_backend
dart test --coverage=coverage
dart pub global activate coverage
dart pub global run coverage:format_coverage --lcov --in=coverage --out=coverage/lcov.info --packages=.dart_tool/package_config.json
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
with:
file: ./mnemo_cards_backend/coverage/lcov.info
flags: backend
name: backend-coverage
build:
needs: test
runs-on: ubuntu-latest
container: dart:stable
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Dart SDK
uses: dart-lang/setup-dart@v1
with:
sdk: stable
- name: Cache pub dependencies
uses: actions/cache@v4
with:
path: |
~/.pub-cache
mnemo_cards_backend/.dart_tool
mnemo_cards_common/.dart_tool
mnemo_cards_common_backend/.dart_tool
key: ${{ runner.os }}-pub-${{ hashFiles('**/pubspec.lock') }}
restore-keys: |
${{ runner.os }}-pub-
- name: Install dependencies
run: |
cd mnemo_cards_common
dart pub get
cd ../mnemo_cards_common_backend
dart pub get
cd ../mnemo_cards_backend
dart pub get
- name: Build backend executable
run: |
cd mnemo_cards_backend
dart compile exe lib/main.dart -o server.exe
- name: Upload build artifacts
uses: actions/upload-artifact@v4
with:
name: backend-binary
path: mnemo_cards_backend/server.exe