ci: add code coverage reporting to CI pipeline

Update code coverage file handling in the Dockerfile to generate 
coverage reports properly. Change temporary coverage file name and 
exclude specific files from the report. Remove the temporary file 
after processing. Add steps to the CI pipeline to download and 
execute the Codecov uploader, ensuring coverage data is uploaded 
for analysis during the build stage.
This commit is contained in:
2025-11-04 21:33:28 +01:00
parent be4ddf48c1
commit f4f53c4d9f
2 changed files with 11 additions and 4 deletions
+3
View File
@@ -13,6 +13,9 @@ build:
stage: build
script:
- build
- curl -Os https://uploader.codecov.io/latest/linux/codecov
- chmod +x codecov
- ./codecov -t ${CODECOV_TOKEN} -R $CI_PROJECT_DIR -C $CI_COMMIT_SHA -r $CI_PROJECT_PATH
- push
artifacts:
paths:
+8 -4
View File
@@ -5,10 +5,11 @@ ADD . /build
RUN if [ $(go mod tidy -v 2>&1 | grep -c unused) != 0 ]; then echo "Unused modules, please run 'go mod tidy'"; exit 1; fi
RUN go fmt ./...
RUN go vet ./...
RUN CGO_ENABLED=1 go test -mod=readonly -race -coverprofile=.testCoverage.txt.tmp -covermode=atomic -coverpkg=$(go list ./... | tr '\n' , | sed 's/,$//') ./...
RUN cat .testCoverage.txt.tmp | grep -v generated.go | grep -v _gen.go > .testCoverage.txt
RUN go tool cover -html=.testCoverage.txt -o coverage.html
RUN go tool cover -func=.testCoverage.txt
RUN CGO_ENABLED=1 go test -mod=readonly -race -coverprofile=coverage.txt.tmp -covermode=atomic -coverpkg=$(go list ./... | tr '\n' , | sed 's/,$//') ./...
RUN ["/bin/bash", "-c", "cat coverage.txt.tmp | grep -v testing.go | grep -v -f <(find . -type f | xargs grep -l 'Code generated by github.com/99designs/gqlgen, DO NOT EDIT') > coverage.txt"]
RUN go tool cover -html=coverage.txt -o coverage.html
RUN go tool cover -func=coverage.txt
RUN rm coverage.txt.tmp
RUN GOOS=linux GOARCH=amd64 go build \
-tags prod \
@@ -18,6 +19,9 @@ RUN GOOS=linux GOARCH=amd64 go build \
-ldflags '-w -s' \
./cmd/dancefetcher/dancefetcher.go
FROM scratch as export
COPY --from=build /build/coverage.txt /
FROM scratch
COPY --from=build /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
COPY --from=build /release/dancefetcher /