name: PR Checks on: pull_request: branches: - main - release/* env: GOPROXY: https://proxy.golang.org,direct GO_VERSION: "1.25" NODE_VERSION: "22" jobs: # Quick checks for PRs checks: name: Code Quality Checks runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Go uses: actions/setup-go@v5 with: go-version: ${{ env.GO_VERSION }} cache: true - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: ${{ env.NODE_VERSION }} - name: Install pnpm run: npm install -g pnpm - name: Install Go dependencies run: go mod download - name: Check Go formatting run: | if [ -n "$(gofmt -l .)" ]; then echo "Go code is not formatted. Please run 'gofmt -w .'" gofmt -l . exit 1 fi - name: Go vet run: go vet ./... - name: Check for build errors run: go build -v ./... # Unit tests unit-tests: name: Unit Tests runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Go uses: actions/setup-go@v5 with: go-version: ${{ env.GO_VERSION }} cache: true - name: Run unit tests run: | go test -v -race -coverprofile=coverage.out ./... continue-on-error: true - name: Upload coverage uses: actions/upload-artifact@v4 with: name: coverage path: coverage.out retention-days: 7 # Frontend checks frontend: name: Frontend Checks runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: ${{ env.NODE_VERSION }} - name: Install pnpm run: npm install -g pnpm - name: Install dependencies run: pnpm install --frozen-lockfile continue-on-error: true - name: TypeScript check run: pnpm run tsc continue-on-error: true - name: ESLint run: pnpm run eslint continue-on-error: true