Files
goplt/.github/workflows/ci.yml
0x1d 54b29cd6a0
Some checks failed
CI / Lint (pull_request) Failing after 45s
CI / Build (pull_request) Failing after 5s
CI / Test (pull_request) Failing after 16s
CI / Format Check (pull_request) Failing after 2s
Update CI to use Makefile commands
- Use 'make test-coverage' instead of direct go test command
- Use 'make build' for build verification
- Use 'make lint' instead of golangci-lint-action
- Use 'make fmt-check' for format checking
- Combine code generation steps into single 'Generate code' step
- All CI jobs now use Makefile commands for consistency and maintainability
2025-11-06 22:42:17 +01:00

188 lines
4.9 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 code
run: |
make generate-proto
if [ -d "ent" ] && [ -f "ent/generate.go" ]; then
go install entgo.io/ent/cmd/ent@latest
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: make test-coverage
- 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: make 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 code
run: |
make generate-proto
if [ -d "ent" ] && [ -f "ent/generate.go" ]; then
go install entgo.io/ent/cmd/ent@latest
cd ent && go generate ./...
fi
- name: Install golangci-lint
run: |
go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
echo "$HOME/go/bin" >> $GITHUB_PATH
- name: Run linters
run: make lint
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 code
run: |
make generate-proto
if [ -d "ent" ] && [ -f "ent/generate.go" ]; then
go install entgo.io/ent/cmd/ent@latest
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: make fmt-check