This repository has been archived on 2025-06-18. You can view files and clone it, but you cannot make any changes to its state, such as pushing and creating new issues, pull requests or comments.
casino/.gitea/workflows/ci.yml
jank e828efdfa7
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
chore: Add some tests
2025-06-05 13:16:53 +02:00

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