Files
goplt/.github/workflows/ci.yml
0x1d ea022365a9
Some checks failed
CI / Test (pull_request) Failing after 13s
CI / Lint (pull_request) Failing after 12s
CI / Build (pull_request) Failing after 5s
CI / Format Check (pull_request) Failing after 2s
Fix CI build and update Makefile to build all services
- Add $HOME/go/bin to PATH using $GITHUB_PATH for protoc plugins
- Update Makefile build target to build all service binaries:
  - platform, api-gateway, auth-service, identity-service, authz-service, audit-service
- Update CI workflow to use 'make build' instead of individual commands
- Upload all service binaries as CI artifacts
- Fixes protoc plugin discovery and ensures all services are built
2025-11-06 22:34:49 +01:00

199 lines
5.3 KiB
YAML

name: CI
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main, develop ]
jobs:
test:
name: Test
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: '1.25.3'
- name: Cache Go modules
uses: actions/cache@v4
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: Download dependencies
run: go mod download
- name: Verify dependencies
run: go mod verify
- name: Install protoc and plugins
run: |
apk add --no-cache protobuf-dev protoc
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
echo "$HOME/go/bin" >> $GITHUB_PATH
- name: Generate protobuf files
run: make generate-proto
- name: Generate Ent ORM files
run: |
go install entgo.io/ent/cmd/ent@latest
if [ -d "ent" ] && [ -f "ent/generate.go" ]; then
cd ent && go generate ./...
fi
- name: Check for test files
id: check-tests
run: |
echo "Checking for test files..."
TEST_FILES=$(find . -name "*_test.go" -not -path "./vendor/*" -not -path "./.git/*" 2>/dev/null || true)
if [ -n "$TEST_FILES" ]; then
echo "Found test files:"
echo "$TEST_FILES"
echo "tests_exist=true" >> $GITHUB_OUTPUT
else
echo "No test files found. Skipping test execution."
echo "tests_exist=false" >> $GITHUB_OUTPUT
fi
- name: Run tests
if: steps.check-tests.outputs.tests_exist == 'true'
env:
CGO_ENABLED: 1
run: go test -v -race -coverprofile=coverage.out -timeout=5m ./...
- name: Upload coverage
if: steps.check-tests.outputs.tests_exist == 'true'
uses: codecov/codecov-action@v3
with:
file: ./coverage.out
fail_ci_if_error: false
- name: Verify build (no tests)
if: steps.check-tests.outputs.tests_exist == 'false'
run: |
echo "No tests found. Verifying code compiles instead..."
go build ./...
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: '1.25.3'
- name: Download dependencies
run: go mod download
- name: Install protoc and plugins
run: |
apk add --no-cache protobuf-dev protoc
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
echo "$HOME/go/bin" >> $GITHUB_PATH
- name: Generate protobuf files
run: make generate-proto
- name: Generate Ent ORM files
run: |
go install entgo.io/ent/cmd/ent@latest
if [ -d "ent" ] && [ -f "ent/generate.go" ]; then
cd ent && go generate ./...
fi
- name: golangci-lint
uses: golangci/golangci-lint-action@v7
with:
version: latest
args: --timeout=5m
build:
name: Build
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: '1.25.3'
- name: Cache Go modules
uses: actions/cache@v4
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: Download dependencies
run: go mod download
- name: Install protoc and plugins
run: |
apk add --no-cache protobuf-dev protoc
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
echo "$HOME/go/bin" >> $GITHUB_PATH
- name: Generate protobuf files
run: make generate-proto
- name: Generate Ent ORM files
run: |
go install entgo.io/ent/cmd/ent@latest
if [ -d "ent" ] && [ -f "ent/generate.go" ]; then
cd ent && go generate ./...
fi
- name: Build
run: make build
- name: Upload build artifacts
uses: actions/upload-artifact@v3
with:
name: binaries
path: |
bin/platform
bin/api-gateway
bin/auth-service
bin/identity-service
bin/authz-service
bin/audit-service
retention-days: 7
fmt:
name: Format Check
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: '1.25.3'
- name: Check formatting
run: |
if [ "$(gofmt -s -l . | wc -l)" -gt 0 ]; then
echo "The following files need formatting:"
gofmt -s -d .
exit 1
fi