52 lines
1.4 KiB
YAML
52 lines
1.4 KiB
YAML
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
|