@@ -12,92 +12,92 @@ jobs:
1212 runs-on : ubuntu-latest
1313
1414 steps :
15- - name : Checkout code
16- uses : actions/checkout@v4
15+ - name : Checkout code
16+ uses : actions/checkout@v4
1717
18- - name : Set up Go
19- uses : actions/setup-go@v5
20- with :
18+ - name : Set up Go
19+ uses : actions/setup-go@v5
20+ with :
2121 go-version : ' 1.23'
2222 cache : true
2323
24- - name : Download dependencies
25- run : go mod download
26-
27- - name : Verify dependencies
28- run : go mod verify
29-
30- - name : Build
31- run : make build
32-
33- - name : Run tests with race detector and coverage
34- run : make test
35-
36- - name : Generate detailed coverage report
37- run : go test -v -race -coverprofile=coverage.out -covermode=atomic ./...
38-
39- - name : Check coverage threshold (80% minimum for pkg/)
40- run : |
41- echo "Checking coverage for each package..."
42- for pkg in $(go list ./pkg/...); do
43- coverage=$(go test -coverprofile=/tmp/coverage.out $pkg 2>&1 | grep -oP 'coverage: \K[0-9.]+' || echo "0")
44- pkg_name=$(echo $pkg | sed 's/.*\///')
45- echo "$pkg_name: ${coverage}%"
46- # Verify minimum 80% coverage for all pkg/ packages
47- if (( $(echo "$coverage < 80" | bc -l) )); then
48- echo "::error::$pkg_name has ${coverage}% coverage, which is below 80% threshold"
49- exit 1
50- fi
51- done
52-
53- - name : Upload coverage to Codecov
54- uses : codecov/codecov-action@v4
55- with :
56- files : ./coverage.out
57- flags : unittests
58- name : codecov-umbrella
59- fail_ci_if_error : false
60- env :
61- CODECOV_TOKEN : ${{ secrets.CODECOV_TOKEN }}
24+ - name : Download dependencies
25+ run : go mod download
26+
27+ - name : Verify dependencies
28+ run : go mod verify
29+
30+ - name : Build
31+ run : make build
32+
33+ - name : Run tests with race detector and coverage
34+ run : make test
35+
36+ - name : Generate detailed coverage report
37+ run : go test -v -race -coverprofile=coverage.out -covermode=atomic ./...
38+
39+ - name : Check coverage threshold (80% minimum for pkg/)
40+ run : |
41+ echo "Checking coverage for each package..."
42+ for pkg in $(go list ./pkg/...); do
43+ coverage=$(go test -coverprofile=/tmp/coverage.out $pkg 2>&1 | grep -oP 'coverage: \K[0-9.]+' || echo "0")
44+ pkg_name=$(echo $pkg | sed 's/.*\///')
45+ echo "$pkg_name: ${coverage}%"
46+ # Verify minimum 80% coverage for all pkg/ packages
47+ if (( $(echo "$coverage < 80" | bc -l) )); then
48+ echo "::error::$pkg_name has ${coverage}% coverage, which is below 80% threshold"
49+ exit 1
50+ fi
51+ done
52+
53+ - name : Upload coverage to Codecov
54+ uses : codecov/codecov-action@v4
55+ with :
56+ files : ./coverage.out
57+ flags : unittests
58+ name : codecov-umbrella
59+ fail_ci_if_error : false
60+ env :
61+ CODECOV_TOKEN : ${{ secrets.CODECOV_TOKEN }}
6262
6363 lint :
6464 name : Run Linters
6565 runs-on : ubuntu-latest
6666
6767 steps :
68- - name : Checkout code
69- uses : actions/checkout@v4
68+ - name : Checkout code
69+ uses : actions/checkout@v4
7070
71- - name : Set up Go
72- uses : actions/setup-go@v5
73- with :
71+ - name : Set up Go
72+ uses : actions/setup-go@v5
73+ with :
7474 go-version : ' 1.23'
7575 cache : true
7676
77- - name : Run linters
78- run : make lint
77+ - name : Run linters
78+ run : make lint
7979
8080 build :
8181 name : Build Binaries
8282 runs-on : ubuntu-latest
8383
8484 steps :
85- - name : Checkout code
86- uses : actions/checkout@v4
85+ - name : Checkout code
86+ uses : actions/checkout@v4
8787
88- - name : Set up Go
89- uses : actions/setup-go@v5
90- with :
88+ - name : Set up Go
89+ uses : actions/setup-go@v5
90+ with :
9191 go-version : ' 1.23'
9292 cache : true
9393
94- - name : Build server
95- run : go build -v -o sprinkler-server ./cmd/server
94+ - name : Build server
95+ run : go build -v -o sprinkler-server ./cmd/server
9696
97- - name : Build client
98- run : go build -v -o sprinkler-client ./cmd/client
97+ - name : Build client
98+ run : go build -v -o sprinkler-client ./cmd/client
9999
100- - name : Verify binaries
101- run : |
102- ./sprinkler-server -h || true
103- ./sprinkler-client -h || true
100+ - name : Verify binaries
101+ run : |
102+ ./sprinkler-server -h || true
103+ ./sprinkler-client -h || true
0 commit comments