feat:新增calude action 配置 (#301) #1
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| push: | |
| branches: [main, develop] | |
| pull_request: | |
| branches: [main] | |
| env: | |
| GO_VERSION: "1.21" | |
| CGO_ENABLED: 1 | |
| jobs: | |
| test: | |
| name: Test | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up Go | |
| uses: actions/setup-go@v4 | |
| with: | |
| go-version: ${{ env.GO_VERSION }} | |
| cache: true | |
| - name: Install dependencies | |
| run: go mod download | |
| - name: Verify dependencies | |
| run: go mod verify | |
| - name: Run basic linters | |
| run: | | |
| echo "Running basic code quality checks..." | |
| go vet ./... | |
| echo "go vet completed successfully" | |
| echo "Running staticcheck (timeout 3min, non-blocking)..." | |
| timeout 180 go run honnef.co/go/tools/cmd/staticcheck@latest ./... || echo "staticcheck timed out or found issues - not failing CI" | |
| echo "Basic linting completed" | |
| - name: Check code format | |
| run: | | |
| if [ "$(gofmt -l . | wc -l)" -gt 0 ]; then | |
| echo "Code is not formatted. Please run 'gofmt -w .'" | |
| gofmt -l . | |
| exit 1 | |
| fi | |
| - name: Run tests | |
| run: | | |
| go test -race -coverprofile=coverage.out -covermode=atomic ./... | |
| go tool cover -func=coverage.out | grep total | awk '{print $3}' | sed 's/%//' > coverage.txt | |
| - name: Upload coverage to Codecov | |
| uses: codecov/codecov-action@v4 | |
| with: | |
| file: ./coverage.out | |
| flags: unittests | |
| name: codecov-umbrella | |
| fail_ci_if_error: false | |
| build: | |
| name: Build | |
| runs-on: ubuntu-latest | |
| needs: test | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up Go | |
| uses: actions/setup-go@v4 | |
| with: | |
| go-version: ${{ env.GO_VERSION }} | |
| cache: true | |
| - name: Build binary | |
| run: go build ./cmd/server |