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