name: CI on: push: tags: - 'dev-*' - 'v*-beta*' - 'v*-test*' - 'v[0-9]*.[0-9]*.[0-9]' jobs: # ────────────────────────────────────────────── # TEST — all 3 components in parallel (always) # ────────────────────────────────────────────── server-core-test: runs-on: ubuntu-latest defaults: run: working-directory: apps/server-core steps: - uses: actions/checkout@v4 with: submodules: true fetch-depth: 0 - uses: actions/setup-go@v5 with: go-version: '1.26' - name: Test run: go test ./... -tags dev -cover device-agent-test: runs-on: ubuntu-latest defaults: run: working-directory: apps/device-agent steps: - uses: actions/checkout@v4 with: submodules: true fetch-depth: 0 - uses: actions/setup-go@v5 with: go-version: '1.26' - name: Test run: go test ./... -cover dashboard-test: runs-on: ubuntu-latest defaults: run: working-directory: apps/dashboard-ui steps: - uses: actions/checkout@v4 with: submodules: true fetch-depth: 0 - uses: actions/setup-node@v4 with: node-version: '24' - name: Install run: npm ci || npm install - name: Build run: npm run build # ────────────────────────────────────────────── # BUILD — only on tag push, parallel per component # ────────────────────────────────────────────── build-server-core: if: startsWith(gitea.ref, 'refs/tags/') needs: [server-core-test] uses: ./.gitea/workflows/build_server_core.yaml build-device-agent: if: startsWith(gitea.ref, 'refs/tags/') needs: [device-agent-test] uses: ./.gitea/workflows/build_device_agent.yaml build-dashboard: if: startsWith(gitea.ref, 'refs/tags/') needs: [dashboard-test] uses: ./.gitea/workflows/build_dashboard.yaml build-docs: if: startsWith(gitea.ref, 'refs/tags/') uses: ./.gitea/workflows/docs_call.yaml # ────────────────────────────────────────────── # RELEASE — after all builds complete # ────────────────────────────────────────────── release: if: startsWith(gitea.ref, 'refs/tags/') needs: [build-server-core, build-device-agent, build-dashboard, build-docs] uses: ./.gitea/workflows/release_call.yaml with: prerelease: ${{ contains(gitea.ref_name, 'dev-') || contains(gitea.ref_name, 'beta') || contains(gitea.ref_name, 'test') }} secrets: inherit