ci: restructure pipeline - test only for test tags, build only for dev/beta, build+docs for release

This commit is contained in:
datadunia
2026-06-18 09:01:36 +07:00
parent d21863ce8f
commit 6f22aad1ad
4 changed files with 73 additions and 35 deletions
+6
View File
@@ -24,6 +24,12 @@ jobs:
go-version: '1.26' go-version: '1.26'
cache: true cache: true
- name: Generate Windows resources (UAC manifest + icon)
working-directory: apps/device-agent
run: |
go install github.com/tc-hib/go-winres@latest
go-winres make
- name: Build all platforms - name: Build all platforms
working-directory: apps/device-agent working-directory: apps/device-agent
shell: bash shell: bash
-6
View File
@@ -24,12 +24,6 @@ jobs:
go-version: '1.26' go-version: '1.26'
cache: true cache: true
- name: Generate Swagger docs
working-directory: apps/server-core
run: |
go install github.com/swaggo/swag/cmd/swag@v1.16.6
swag init -g main.go --parseDependency --parseInternal
- name: Build - name: Build
working-directory: apps/server-core working-directory: apps/server-core
run: go build -o bin/server-core . run: go build -o bin/server-core .
+56 -29
View File
@@ -10,9 +10,11 @@ on:
- 'v[0-9]*.[0-9]*.[0-9]' - 'v[0-9]*.[0-9]*.[0-9]'
jobs: jobs:
# --- TESTS (test tags + stable release tags) --- # ====================================================================
# TEST TAGS — test only, no build, no docs
# ====================================================================
server-core-test: server-core-test:
if: contains(gitea.ref_name, 'test') || (!contains(gitea.ref_name, 'dev') && !contains(gitea.ref_name, 'beta')) if: contains(gitea.ref_name, 'test')
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
@@ -26,17 +28,13 @@ jobs:
- uses: actions/setup-go@v5 - uses: actions/setup-go@v5
with: with:
go-version: '1.26' go-version: '1.26'
- name: Generate swagger docs cache: true
working-directory: apps/server-core
run: |
go install github.com/swaggo/swag/cmd/swag@v1.16.6
swag init -g main.go --parseDependency --parseInternal
- name: Test (skip nftables - needs root) - name: Test (skip nftables - needs root)
working-directory: apps/server-core working-directory: apps/server-core
run: go test $(go list ./... | grep -v internal/firewall) -tags dev -cover -count=1 run: go test $(go list ./... | grep -v internal/firewall) -tags dev -cover -count=1
device-agent-test: device-agent-test:
if: contains(gitea.ref_name, 'test') || (!contains(gitea.ref_name, 'dev') && !contains(gitea.ref_name, 'beta')) if: contains(gitea.ref_name, 'test')
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
@@ -50,12 +48,13 @@ jobs:
- uses: actions/setup-go@v5 - uses: actions/setup-go@v5
with: with:
go-version: '1.26' go-version: '1.26'
cache: true
- name: Test - name: Test
working-directory: apps/device-agent working-directory: apps/device-agent
run: go test ./... -cover run: go test ./... -cover
dashboard-test: dashboard-test:
if: contains(gitea.ref_name, 'test') || (!contains(gitea.ref_name, 'dev') && !contains(gitea.ref_name, 'beta')) if: contains(gitea.ref_name, 'test')
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
@@ -76,40 +75,68 @@ jobs:
working-directory: apps/dashboard-ui working-directory: apps/dashboard-ui
run: npm run build run: npm run build
# --- BUILD + RELEASE (dev/beta/release tags) --- # ====================================================================
build-server-core: # DEV/BETA TAGS — build only, no docs, no test
if: always() && !contains(gitea.ref_name, 'test') && !failure() # ====================================================================
needs: [server-core-test, device-agent-test, dashboard-test] build-server-core-dev:
if: contains(gitea.ref_name, 'dev') || contains(gitea.ref_name, 'beta')
runs-on: ubuntu-latest runs-on: ubuntu-latest
uses: ./.gitea/workflows/build_server_core.yaml uses: ./.gitea/workflows/build_server_core.yaml
secrets: inherit secrets: inherit
build-device-agent: build-device-agent-dev:
if: always() && !contains(gitea.ref_name, 'test') && !failure() if: contains(gitea.ref_name, 'dev') || contains(gitea.ref_name, 'beta')
needs: [server-core-test, device-agent-test, dashboard-test]
runs-on: ubuntu-latest runs-on: ubuntu-latest
uses: ./.gitea/workflows/build_device_agent.yaml uses: ./.gitea/workflows/build_device_agent.yaml
secrets: inherit secrets: inherit
build-dashboard: build-dashboard-dev:
if: always() && !contains(gitea.ref_name, 'test') && !failure() if: contains(gitea.ref_name, 'dev') || contains(gitea.ref_name, 'beta')
needs: [server-core-test, device-agent-test, dashboard-test]
runs-on: ubuntu-latest runs-on: ubuntu-latest
uses: ./.gitea/workflows/build_dashboard.yaml uses: ./.gitea/workflows/build_dashboard.yaml
secrets: inherit secrets: inherit
build-docs: release-dev:
if: always() && !contains(gitea.ref_name, 'test') && !failure() if: (contains(gitea.ref_name, 'dev') || contains(gitea.ref_name, 'beta')) && !failure()
needs: [server-core-test, device-agent-test, dashboard-test] needs: [build-server-core-dev, build-device-agent-dev, build-dashboard-dev]
runs-on: ubuntu-latest
uses: ./.gitea/workflows/docs_call.yaml
secrets: inherit
release:
if: always() && !contains(gitea.ref_name, 'test') && !failure()
needs: [build-server-core, build-device-agent, build-dashboard, build-docs]
uses: ./.gitea/workflows/release_call.yaml uses: ./.gitea/workflows/release_call.yaml
with: with:
prerelease: ${{ contains(gitea.ref_name, 'dev') }} prerelease: ${{ contains(gitea.ref_name, 'dev') }}
draft: ${{ contains(gitea.ref_name, 'beta') }} draft: ${{ contains(gitea.ref_name, 'beta') }}
secrets: inherit secrets: inherit
# ====================================================================
# RELEASE TAGS — build all + docs + release
# ====================================================================
build-server-core-release:
if: "!contains(gitea.ref_name, 'dev') && !contains(gitea.ref_name, 'beta') && !contains(gitea.ref_name, 'test')"
runs-on: ubuntu-latest
uses: ./.gitea/workflows/build_server_core.yaml
secrets: inherit
build-device-agent-release:
if: "!contains(gitea.ref_name, 'dev') && !contains(gitea.ref_name, 'beta') && !contains(gitea.ref_name, 'test')"
runs-on: ubuntu-latest
uses: ./.gitea/workflows/build_device_agent.yaml
secrets: inherit
build-dashboard-release:
if: "!contains(gitea.ref_name, 'dev') && !contains(gitea.ref_name, 'beta') && !contains(gitea.ref_name, 'test')"
runs-on: ubuntu-latest
uses: ./.gitea/workflows/build_dashboard.yaml
secrets: inherit
build-docs-release:
if: "!contains(gitea.ref_name, 'dev') && !contains(gitea.ref_name, 'beta') && !contains(gitea.ref_name, 'test')"
runs-on: ubuntu-latest
uses: ./.gitea/workflows/docs_call.yaml
secrets: inherit
release-stable:
if: "!contains(gitea.ref_name, 'dev') && !contains(gitea.ref_name, 'beta') && !contains(gitea.ref_name, 'test') && !failure()
needs: [build-server-core-release, build-device-agent-release, build-dashboard-release, build-docs-release]
uses: ./.gitea/workflows/release_call.yaml
with:
prerelease: false
draft: false
secrets: inherit
+11
View File
@@ -21,6 +21,17 @@ jobs:
with: with:
node-version: '24' node-version: '24'
- name: Hash package-lock
id: hash-npm
run: echo "hash=$(sha256sum apps/docs/package-lock.json 2>/dev/null || echo 'none') | cut -d' ' -f1)" >> "$GITHUB_OUTPUT"
- uses: actions/cache@v3
with:
path: |
~/.npm
key: npm-docs-${{ steps.hash-npm.outputs.hash }}
restore-keys: npm-docs-
- name: Install - name: Install
working-directory: apps/docs working-directory: apps/docs
run: npm ci || npm install run: npm ci || npm install