name: CI on: push: branches: ["**"] pull_request: branches: ["**"] # Cancel superseded runs on the same ref. concurrency: group: ci-${{ github.ref }} cancel-in-progress: true jobs: build: name: Build & test (Java 21) runs-on: ubuntu-latest timeout-minutes: 30 steps: - name: Checkout uses: actions/checkout@v4 - name: Set up JDK 21 uses: actions/setup-java@v4 with: distribution: temurin java-version: "21" cache: maven # Several integration tests shell out to ffmpeg/ffprobe; the local AI models are NOT needed for tests # (asset workers are mocked), so no Python venv or model download is required in CI. - name: Install ffmpeg run: | sudo apt-get update sudo apt-get install -y ffmpeg ffmpeg -version | head -n 1 ffprobe -version | head -n 1 # ubuntu-latest ships a recent Maven. (A pinned Maven Wrapper is a future hardening step; the wrapper # plugin couldn't be provisioned offline in this environment.) - name: Build and test run: mvn -B -ntp verify - name: Upload test reports if: always() uses: actions/upload-artifact@v4 with: name: surefire-reports path: target/surefire-reports/ if-no-files-found: ignore retention-days: 7