name: CI on: push: branches: ["main", "master"] paths: - "backend/**" - "ui/**" - "caddy/**" - "docker-compose.yml" - ".gitea/workflows/ci.yaml" pull_request: branches: ["main", "master"] paths: - "backend/**" - "ui/**" - "caddy/**" - "docker-compose.yml" - ".gitea/workflows/ci.yaml" concurrency: group: ${{ gitea.workflow }}-${{ gitea.ref }} cancel-in-progress: true jobs: # ── backend: vet & test ─────────────────────────────────────────────────────── test-backend: name: Test backend runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: go-version-file: backend/go.mod cache-dependency-path: backend/go.sum - name: go vet working-directory: backend run: go vet ./... - name: Run tests working-directory: backend run: go test -short -race -count=1 -timeout=60s ./... # ── ui: type-check & build ──────────────────────────────────────────────────── check-ui: name: Check ui runs-on: ubuntu-latest defaults: run: working-directory: ui steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: "22" cache: npm cache-dependency-path: ui/package-lock.json - name: Install dependencies run: npm ci - name: Type check run: npm run check - name: Build run: npm run build # ── docker: validate Dockerfiles build (no push) ────────────────────────────── docker-backend: name: Docker / backend runs-on: ubuntu-latest needs: [test-backend] steps: - uses: actions/checkout@v4 - uses: docker/setup-buildx-action@v3 - name: Build uses: docker/build-push-action@v6 with: context: backend target: backend push: false docker-runner: name: Docker / runner runs-on: ubuntu-latest needs: [test-backend] steps: - uses: actions/checkout@v4 - uses: docker/setup-buildx-action@v3 - name: Build uses: docker/build-push-action@v6 with: context: backend target: runner push: false docker-ui: name: Docker / ui runs-on: ubuntu-latest needs: [check-ui] steps: - uses: actions/checkout@v4 - uses: docker/setup-buildx-action@v3 - name: Build uses: docker/build-push-action@v6 with: context: ui push: false docker-caddy: name: Docker / caddy runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: docker/setup-buildx-action@v3 - name: Build uses: docker/build-push-action@v6 with: context: caddy push: false