name: ci on: push: paths: - "back001/**" - "front001/**" - ".forgejo/workflows/**" - "ci/**" pull_request: jobs: changes: runs-on: docker steps: - uses: actions/checkout@v4 with: fetch-depth: 2 - id: filter name: Detect changes run: | set -euo pipefail git fetch --quiet --depth=1 origin "${GITHUB_BASE_REF:-}" || true files="" if [ "${GITHUB_EVENT_NAME:-}" = "pull_request" ] && [ -n "${GITHUB_BASE_REF:-}" ]; then base_ref="origin/${GITHUB_BASE_REF}" if git rev-parse --verify "$base_ref" >/dev/null 2>&1; then files="$(git diff --name-only "$base_ref"...HEAD)" else files="$(git diff --name-only HEAD^..HEAD || true)" fi else if git rev-parse --verify "${GITHUB_SHA}^" >/dev/null 2>&1; then files="$(git diff --name-only "${GITHUB_SHA}^" "${GITHUB_SHA}")" else files="$(git diff --name-only HEAD^..HEAD || true)" fi fi if [ -z "$files" ]; then files="$(git ls-files)" fi backend=false frontend=false while IFS= read -r path; do case "$path" in back001/*|.forgejo/workflows/*|ci/*) backend=true ;; esac case "$path" in front001/*|.forgejo/workflows/*|ci/*) frontend=true ;; esac done <> "$GITHUB_OUTPUT" outputs: backend: ${{ steps.filter.outputs.backend }} frontend: ${{ steps.filter.outputs.frontend }} backend: needs: changes if: needs.changes.outputs.backend == 'true' runs-on: docker container: image: forgejo.okit.pl/oskar/ci-gradle-node:8.7-jdk17 steps: - uses: actions/checkout@v4 - uses: actions/cache@v4 with: path: | /home/gradle/.gradle/caches /home/gradle/.gradle/wrapper key: gradle-${{ runner.os }}-${{ hashFiles('back001/**/*.gradle*', 'back001/**/gradle-wrapper.properties') }} restore-keys: | gradle-${{ runner.os }}- - name: Test + build (backend) working-directory: back001 run: ./gradlew test build --no-daemon flutter: needs: changes if: needs.changes.outputs.frontend == 'true' runs-on: docker container: image: forgejo.okit.pl/oskar/ci-flutter-node:stable steps: - uses: actions/checkout@v4 - uses: actions/cache@v4 with: path: | /root/.pub-cache key: pub-${{ runner.os }}-${{ hashFiles('front001/mosenioring/pubspec.lock') }} restore-keys: | pub-${{ runner.os }}- - name: Pub get working-directory: front001/mosenioring run: flutter pub get - name: Analyze (non-blocking for now) working-directory: front001/mosenioring run: flutter analyze || true - name: Test working-directory: front001/mosenioring run: flutter test