name: CI on: pull_request: branches: - main push: branches: - main concurrency: group: ci-${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: web: runs-on: ubuntu-latest timeout-minutes: 30 steps: - name: Checkout repository uses: actions/checkout@v4 - name: Set up Node.js uses: actions/setup-node@v4 with: node-version: '22' cache: 'npm' - name: Install dependencies run: npm ci - name: Lint run: npm run lint - name: Unit tests run: npm test - name: Install Playwright browser run: npx playwright install --with-deps chromium - name: Playwright smoke tests run: npm run test:e2e - name: Production build run: npm run build - name: Workers build run: npm run cf:build - name: Audit production dependencies (high severity+) run: npm audit --omit=dev --audit-level=high - name: Validate docker compose run: docker compose config - name: Build Docker image run: docker build -t kvideo-ci . android-tv: runs-on: ubuntu-latest timeout-minutes: 45 defaults: run: working-directory: android-tv steps: - name: Checkout repository uses: actions/checkout@v4 - name: Set up Java uses: actions/setup-java@v4 with: distribution: temurin java-version: '17' cache: gradle - name: Set up Android SDK uses: android-actions/setup-android@v3 - name: Install Android packages run: sdkmanager "platforms;android-34" "build-tools;34.0.0" - name: Make Gradle wrapper executable run: chmod +x ./gradlew - name: Android lint, test, and builds run: ./gradlew --no-daemon lint test assembleDebug assembleRelease