name: Quality Gates on: pull_request: push: branches: - dev - main permissions: contents: read concurrency: group: quality-gates-${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true env: GO_VERSION: "1.26.x" NODE_VERSION: "24" GOLANGCI_LINT_VERSION: "v2.11.4" jobs: lint-and-refactor: name: Lint and Refactor Gate runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Go uses: actions/setup-go@v5 with: go-version: ${{ env.GO_VERSION }} cache-dependency-path: go.sum - name: Setup golangci-lint uses: golangci/golangci-lint-action@v8 with: version: ${{ env.GOLANGCI_LINT_VERSION }} install-mode: binary verify: true - name: Go Format & Lint Gates run: ./scripts/lint.sh - name: Refactor Line Gate run: ./tests/scripts/check-refactor-line-gate.sh go-unit: name: Go Unit (${{ matrix.os }}) runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: - macos-latest - windows-latest defaults: run: shell: bash steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Go uses: actions/setup-go@v5 with: go-version: ${{ env.GO_VERSION }} cache-dependency-path: go.sum - name: Go Unit Gate run: ./tests/scripts/run-unit-go.sh unit-all: name: Unit Gates (Go + Node) runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Go uses: actions/setup-go@v5 with: go-version: ${{ env.GO_VERSION }} cache-dependency-path: go.sum - name: Setup Node uses: actions/setup-node@v4 with: node-version: ${{ env.NODE_VERSION }} cache: npm cache-dependency-path: webui/package-lock.json - name: Unit Gates (Go + Node) run: ./tests/scripts/run-unit-all.sh webui-build: name: WebUI Build runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Node uses: actions/setup-node@v4 with: node-version: ${{ env.NODE_VERSION }} cache: npm cache-dependency-path: webui/package-lock.json - name: WebUI Build Gate run: | npm ci --prefix webui --prefer-offline --no-audit npm run build --prefix webui cross-build: name: Release Target Cross-Build if: ${{ github.event_name == 'push' && (github.ref == 'refs/heads/dev' || github.ref == 'refs/heads/main') }} runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Go uses: actions/setup-go@v5 with: go-version: ${{ env.GO_VERSION }} cache-dependency-path: go.sum - name: Cross-Build Release Targets env: CROSS_BUILD_JOBS: "3" run: ./tests/scripts/check-cross-build.sh