Files
Nexus-Guard-Suite/.gitea/workflows/ci.yml
T
datadunia fc9afd1720
CI / build-server-core (push) Successful in 3m13s
CI / release (push) Successful in 28s
CI / server-core-test (push) Has been skipped
CI / device-agent-test (push) Has been skipped
CI / dashboard-test (push) Has been skipped
CI / build-device-agent (push) Successful in 1m47s
CI / build-dashboard (push) Successful in 57s
CI / build-docs (push) Successful in 51s
fix(ci): use always()!failure() so builds run when test jobs are skipped
Gitea Actions skips dependent jobs when ALL needed jobs are skipped,
unlike GitHub Actions. Adding always()!failure() ensures builds run
for dev/beta tags (tests skipped) while still blocking if tests fail.
2026-06-17 11:48:23 +07:00

116 lines
4.1 KiB
YAML

name: CI
on:
push:
tags:
- 'dev-*'
- 'v*-dev*'
- 'v*-beta*'
- 'v*-test*'
- 'v[0-9]*.[0-9]*.[0-9]'
jobs:
# --- TESTS (test tags + stable release tags) ---
server-core-test:
if: contains(gitea.ref_name, 'test') || (!contains(gitea.ref_name, 'dev') && !contains(gitea.ref_name, 'beta'))
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: true
fetch-depth: 0
token: ${{ secrets.BUILD_TOKEN }}
persist-credentials: true
- name: Configure git auth for submodules
run: git config --global url."https://x-access-token:${{ secrets.BUILD_TOKEN }}@git.datadunia.com/".insteadOf "https://git.datadunia.com/"
- uses: actions/setup-go@v5
with:
go-version: '1.26'
- 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: Test (skip nftables - needs root)
working-directory: apps/server-core
run: go test $(go list ./... | grep -v internal/firewall) -tags dev -cover -count=1
device-agent-test:
if: contains(gitea.ref_name, 'test') || (!contains(gitea.ref_name, 'dev') && !contains(gitea.ref_name, 'beta'))
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: true
fetch-depth: 0
token: ${{ secrets.BUILD_TOKEN }}
persist-credentials: true
- name: Configure git auth for submodules
run: git config --global url."https://x-access-token:${{ secrets.BUILD_TOKEN }}@git.datadunia.com/".insteadOf "https://git.datadunia.com/"
- uses: actions/setup-go@v5
with:
go-version: '1.26'
- name: Test
working-directory: apps/device-agent
run: go test ./... -cover
dashboard-test:
if: contains(gitea.ref_name, 'test') || (!contains(gitea.ref_name, 'dev') && !contains(gitea.ref_name, 'beta'))
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: true
fetch-depth: 0
token: ${{ secrets.BUILD_TOKEN }}
persist-credentials: true
- name: Configure git auth for submodules
run: git config --global url."https://x-access-token:${{ secrets.BUILD_TOKEN }}@git.datadunia.com/".insteadOf "https://git.datadunia.com/"
- uses: actions/setup-node@v4
with:
node-version: '24'
- name: Install
working-directory: apps/dashboard-ui
run: npm ci || npm install
- name: Build
working-directory: apps/dashboard-ui
run: npm run build
# --- BUILD + RELEASE (dev/beta/release tags) ---
build-server-core:
if: always() && !contains(gitea.ref_name, 'test') && !failure()
needs: [server-core-test, device-agent-test, dashboard-test]
runs-on: ubuntu-latest
uses: ./.gitea/workflows/build_server_core.yaml
secrets: inherit
build-device-agent:
if: always() && !contains(gitea.ref_name, 'test') && !failure()
needs: [server-core-test, device-agent-test, dashboard-test]
runs-on: ubuntu-latest
uses: ./.gitea/workflows/build_device_agent.yaml
secrets: inherit
build-dashboard:
if: always() && !contains(gitea.ref_name, 'test') && !failure()
needs: [server-core-test, device-agent-test, dashboard-test]
runs-on: ubuntu-latest
uses: ./.gitea/workflows/build_dashboard.yaml
secrets: inherit
build-docs:
if: always() && !contains(gitea.ref_name, 'test') && !failure()
needs: [server-core-test, device-agent-test, dashboard-test]
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
with:
prerelease: ${{ contains(gitea.ref_name, 'dev') }}
draft: ${{ contains(gitea.ref_name, 'beta') }}
secrets: inherit