name: Build and Test on: push: paths: - 'api/**' - 'web/**' - 'android/**' - '.github/workflows/build-and-test.yaml' workflow_dispatch: inputs: branch: description: 'Branch to run workflow on' required: true default: 'main' type: string jobs: build-and-test-web-and-api: name: Build and Test web and api runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 with: ref: ${{ github.event_name == 'workflow_dispatch' && inputs.branch || github.ref }} - name: Set up Node.js uses: actions/setup-node@v3 with: node-version: '18' - name: Install pnpm uses: pnpm/action-setup@v2 with: version: 8 run_install: false - name: Get pnpm store directory shell: bash run: | echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV - name: Setup pnpm cache uses: actions/cache@v3 with: path: ${{ env.STORE_PATH }} key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} restore-keys: | ${{ runner.os }}-pnpm-store- - name: Build and test API run: | cd api pnpm install pnpm run build pnpm test - name: Build web run: | cd web pnpm install pnpm run prisma:generate pnpm run build build-and-test-android: name: Build and Test Android runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 with: ref: ${{ github.event_name == 'workflow_dispatch' && inputs.branch || github.ref }} - name: Set up JDK 17 uses: actions/setup-java@v3 with: java-version: '17' distribution: 'temurin' cache: gradle - name: Setup Gradle uses: gradle/gradle-build-action@v2 with: gradle-version: '7.2' - name: Grant execute permission for gradlew run: chmod +x android/gradlew - name: Build Android app run: | cd android ./gradlew assembleDebug # - name: Run Android tests # run: | # cd android # ./gradlew testDebugUnitTest - name: Upload build artifacts uses: actions/upload-artifact@v4 with: name: android-apk path: android/app/build/outputs/apk/debug/app-debug.apk retention-days: 7