All checks were successful
Pull Request Labeler / labeler (pull_request_target) Successful in 5s
CI / Get Changed Files (pull_request) Successful in 11s
Label PRs based on size / Check PR size (pull_request) Successful in 11s
Claude PR Review / claude-code (pull_request) Successful in 33s
CI / eslint (pull_request) Successful in 40s
CI / oxlint (pull_request) Successful in 46s
CI / prettier (pull_request) Successful in 50s
CI / Docker backend validation (pull_request) Successful in 34s
CI / Docker frontend validation (pull_request) Successful in 1m27s
CI / test-build (pull_request) Successful in 1m32s
CI / Checkstyle Main (pull_request) Successful in 1m43s
CI / Backend Tests (pull_request) Successful in 2m31s
CI / Playwright (pull_request) Successful in 2m18s
295 lines
8.5 KiB
YAML
295 lines
8.5 KiB
YAML
name: CI
|
|
|
|
on:
|
|
pull_request:
|
|
|
|
concurrency:
|
|
group: ci-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
changed_files:
|
|
name: Get Changed Files
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
backend: ${{ steps.filter.outputs.backend }}
|
|
frontend: ${{ steps.filter.outputs.frontend }}
|
|
workflow: ${{ steps.filter.outputs.workflow }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Check for file changes
|
|
uses: dorny/paths-filter@v3
|
|
id: filter
|
|
with:
|
|
filters: |
|
|
backend:
|
|
- 'backend/**'
|
|
frontend:
|
|
- 'frontend/**'
|
|
workflow:
|
|
- '.gitea/workflows/**'
|
|
|
|
test-backend:
|
|
runs-on: ubuntu-latest
|
|
name: "Backend Tests"
|
|
needs: changed_files
|
|
if: ${{ needs.changed_files.outputs.backend == 'true' || needs.changed_files.outputs.workflow == 'true' }}
|
|
container:
|
|
image: "cimg/openjdk:23.0-node"
|
|
steps:
|
|
- name: "Checkout"
|
|
uses: actions/checkout@v4
|
|
|
|
- name: "Run tests"
|
|
working-directory: ./backend
|
|
run: |
|
|
./gradlew test
|
|
|
|
- name: "Cache checkstyle results"
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: checkstyle-results
|
|
path: backend/build/reports/checkstyle
|
|
|
|
- name: "Stop Gradle"
|
|
working-directory: ./backend
|
|
run: ./gradlew --stop
|
|
|
|
checkstyle:
|
|
runs-on: ubuntu-latest
|
|
name: "Checkstyle Main"
|
|
needs: changed_files
|
|
if: ${{ needs.changed_files.outputs.backend == 'true' || needs.changed_files.outputs.workflow == 'true' }}
|
|
container:
|
|
image: "cimg/openjdk:23.0-node"
|
|
steps:
|
|
- name: "Checkout"
|
|
uses: actions/checkout@v4
|
|
- name: "Cache Gradle dependencies"
|
|
uses: https://github.com/actions/cache@v4
|
|
with:
|
|
path: |
|
|
~/.gradle/caches
|
|
~/.gradle/wrapper
|
|
backend/build/reports/checkstyle
|
|
key: gradle-${{ runner.os }}-${{ hashFiles('backend/**/*.java', 'backend/config/checkstyle/checkstyle.xml') }}
|
|
restore-keys: |
|
|
gradle-${{ runner.os }}-
|
|
- name: "Check cache for checkstyle reports"
|
|
id: check-cache
|
|
run: |
|
|
if [ -d "backend/build/reports/checkstyle" ] && [ -f "backend/build/reports/checkstyle/main.xml" ]; then
|
|
echo "Cache hit! Using cached checkstyle results"
|
|
echo "cache-hit=true" >> $GITHUB_OUTPUT
|
|
else
|
|
echo "Cache miss! Running checkstyle check"
|
|
echo "cache-hit=false" >> $GITHUB_OUTPUT
|
|
fi
|
|
|
|
- name: "Run checkstyle"
|
|
if: steps.check-cache.outputs.cache-hit != 'true'
|
|
working-directory: ./backend
|
|
run: |
|
|
gradle checkstyleMain
|
|
|
|
- name: "Cache checkstyle results"
|
|
if: steps.check-cache.outputs.cache-hit != 'true'
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: checkstyle-results
|
|
path: backend/build/reports/checkstyle
|
|
|
|
- name: "Stop Gradle"
|
|
if: steps.check-cache.outputs.cache-hit != 'true'
|
|
working-directory: ./backend
|
|
run: gradle --stop
|
|
|
|
validate-docker-frontend:
|
|
runs-on: ubuntu-latest
|
|
name: Docker frontend validation
|
|
needs: changed_files
|
|
if: ${{ needs.changed_files.outputs.frontend == 'true' || needs.changed_files.outputs.workflow == 'true' }}
|
|
container:
|
|
image: catthehacker/ubuntu:act-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
- name: Build
|
|
uses: docker/build-push-action@v6
|
|
with:
|
|
context: frontend/
|
|
file: frontend/.docker/Dockerfile
|
|
push: false
|
|
|
|
validate-docker-backend:
|
|
runs-on: ubuntu-latest
|
|
name: Docker backend validation
|
|
needs: changed_files
|
|
if: ${{ needs.changed_files.outputs.backend == 'true' || needs.changed_files.outputs.workflow == 'true' }}
|
|
container:
|
|
image: catthehacker/ubuntu:act-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
- name: Build
|
|
uses: docker/build-push-action@v6
|
|
with:
|
|
context: backend/
|
|
file: backend/.docker/Dockerfile
|
|
push: false
|
|
|
|
eslint:
|
|
runs-on: docker
|
|
container:
|
|
image: git.kjan.de/actions/runner-bun:latest
|
|
name: eslint
|
|
needs: changed_files
|
|
if: ${{ needs.changed_files.outputs.frontend == 'true' || needs.changed_files.outputs.workflow == 'true' }}
|
|
steps:
|
|
- name: Checkout Code
|
|
uses: actions/checkout@v4
|
|
- uses: actions/cache@v4
|
|
working-directory: ./frontend
|
|
with:
|
|
path: |
|
|
frontend/node_modules/
|
|
key: ${{ runner.os }}-bun-
|
|
restore-keys: |
|
|
${{ runner.os }}-bun-
|
|
- name: Install dependencies
|
|
run: |
|
|
cd frontend
|
|
bun install
|
|
- name: Run Eslint
|
|
run: |
|
|
cd frontend
|
|
bun run lint
|
|
|
|
playwright:
|
|
runs-on: ubuntu-latest
|
|
name: Playwright
|
|
needs: changed_files
|
|
container:
|
|
image: git.kjan.de/actions/runner-casino-playwright:latest
|
|
if: ${{ needs.changed_files.outputs.frontend == 'true' || needs.changed_files.outputs.workflow == 'true' }}
|
|
steps:
|
|
- name: Checkout Code
|
|
uses: actions/checkout@v4
|
|
- uses: actions/setup-java@v4
|
|
with:
|
|
distribution: "temurin" # See 'Supported distributions' for available options
|
|
java-version: "23"
|
|
- name: Install bun
|
|
uses: oven-sh/setup-bun@v2
|
|
- uses: actions/cache@v4
|
|
working-directory: ./frontend
|
|
with:
|
|
path: |
|
|
frontend/node_modules/
|
|
key: ${{ runner.os }}-bun-
|
|
restore-keys: |
|
|
${{ runner.os }}-bun-
|
|
- run: bun add -g concurrently
|
|
- name: Install dependencies
|
|
run: |
|
|
cd frontend
|
|
bun install
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 22.12
|
|
working-directory: ./frontend
|
|
- name: Run Playwright tests
|
|
env:
|
|
CI: true
|
|
SPRING_PROFILES_ACTIVE: inmemory
|
|
working-directory: ./frontend
|
|
run: bash -c "source $HOME/.cargo/env && bunx playwright test"
|
|
|
|
oxlint:
|
|
runs-on: docker
|
|
name: oxlint
|
|
needs: changed_files
|
|
if: ${{ needs.changed_files.outputs.frontend == 'true' || needs.changed_files.outputs.workflow == 'true' }}
|
|
container:
|
|
image: git.kjan.de/actions/runner-bun:latest
|
|
steps:
|
|
- name: Checkout Code
|
|
uses: actions/checkout@v4
|
|
- uses: actions/cache@v4
|
|
working-directory: ./frontend
|
|
with:
|
|
path: |
|
|
frontend/node_modules/
|
|
key: ${{ runner.os }}-bun-
|
|
restore-keys: |
|
|
${{ runner.os }}-bun-
|
|
- name: Install dependencies
|
|
run: |
|
|
cd frontend
|
|
bun install
|
|
- name: Run oxlint
|
|
run: |
|
|
cd frontend
|
|
bun run oxlint
|
|
|
|
prettier:
|
|
runs-on: docker
|
|
name: prettier
|
|
needs: changed_files
|
|
if: ${{ needs.changed_files.outputs.frontend == 'true' || needs.changed_files.outputs.workflow == 'true' }}
|
|
container:
|
|
image: git.kjan.de/actions/runner-bun:latest
|
|
steps:
|
|
- name: Checkout Code
|
|
uses: actions/checkout@v4
|
|
- uses: actions/cache@v4
|
|
working-directory: ./frontend
|
|
with:
|
|
path: |
|
|
frontend/node_modules/
|
|
key: ${{ runner.os }}-bun-
|
|
restore-keys: |
|
|
${{ runner.os }}-bun-
|
|
- name: Install dependencies
|
|
run: |
|
|
cd frontend
|
|
bun install
|
|
- name: Run prettier
|
|
run: |
|
|
cd frontend
|
|
bun run format:check
|
|
|
|
test-build:
|
|
runs-on: docker
|
|
name: test-build
|
|
needs: changed_files
|
|
if: ${{ needs.changed_files.outputs.frontend == 'true' || needs.changed_files.outputs.workflow == 'true' }}
|
|
container:
|
|
image: git.kjan.de/actions/runner-bun:latest
|
|
steps:
|
|
- name: Checkout Code
|
|
uses: actions/checkout@v4
|
|
- uses: actions/cache@v4
|
|
working-directory: ./frontend
|
|
with:
|
|
path: |
|
|
frontend/node_modules/
|
|
key: ${{ runner.os }}-bun-
|
|
restore-keys: |
|
|
${{ runner.os }}-bun-
|
|
- uses: actions/cache@v4
|
|
working-directory: ./frontend
|
|
with:
|
|
path: |
|
|
frontend/dist/
|
|
key: ${{ runner.os }}-dist-
|
|
restore-keys: |
|
|
${{ runner.os }}-dist-
|
|
- name: Install dependencies
|
|
run: |
|
|
cd frontend
|
|
bun install
|
|
- name: Test build
|
|
run: |
|
|
cd frontend
|
|
bun run build
|