From 1990102ffbf2e8c95bc759fc068807e46989ff94 Mon Sep 17 00:00:00 2001
From: a <eddy@gfxlabs.io>
Date: Fri, 1 Sep 2023 19:04:13 +0000
Subject: [PATCH] Update .gitlab-ci.yml

---
 .gitlab-ci.yml | 63 ++++++++++++++++++++++++++++++++++++++------------
 1 file changed, 48 insertions(+), 15 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index af68b33c..d43635da 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,19 +1,52 @@
-jsonnet:
-  stage: build
-  image: alpine:latest
+.go-cache:
+  variables:
+    GOPATH: $CI_PROJECT_DIR/.go
+  before_script:
+    - mkdir -p .go
+  cache:
+    paths:
+      - .go/pkg/mod/
+
+stages:
+  - test
+
+test:
+  image: golang:1.21-alpine
+  stage: test
+  extends: .go-cache
   script:
-    - apk add -U jsonnet
-    - jsonnet .gitlab-ci.jsonnet > generated-config.yml
+    - CGO_ENABLED=1 go test -race ./...
+
+lint:
+  image: registry.gitlab.com/gitlab-org/gitlab-build-images:golangci-lint-alpine
+  stage: test
+  extends: .go-cache
+  script:
+    # Use default .golangci.yml file from the image if one is not present in the project root.
+    - "[ -e .golangci.yml ] || cp /golangci/.golangci.yml ."
+    # Write the code coverage report to gl-code-quality-report.json
+    # and print linting issues to stdout in the format: path/to/file:line description
+    # remove `--issues-exit-code 0` or set to non-zero to fail the job if linting issues are detected
+    - golangci-lint run --issues-exit-code 0 --print-issued-lines=false --out-format code-climate:gl-code-quality-report.json,line-number
   artifacts:
+    when: always
+    reports:
+      codequality: gl-code-quality-report.json
     paths:
-      - generated-config.yml
+      - gl-code-quality-report.json
 
-trigger-builds:
-  stage: build
-  needs:
-    - jsonnet
-  trigger:
-    include:
-      - artifact: generated-config.yml
-        job: jsonnet
-    strategy: depend
+coverage:
+  stage: test
+  image: golang:1.21-alpine
+  coverage: '/\(statements\)(?:\s+)?(\d+(?:\.\d+)?%)/'
+  extends: .go-cache
+  script:
+    - go run gotest.tools/gotestsum@latest --junitfile report.xml --format testname -- -coverprofile=coverage.txt -covermode count ./...
+    - go tool cover -func=coverage.txt
+    - go run github.com/boumenot/gocover-cobertura@master < coverage.txt > coverage.xml
+  artifacts:
+    reports:
+      junit: report.xml
+      coverage_report:
+        coverage_format: cobertura
+        path: coverage.xml
-- 
GitLab