.go-cache: variables: GOPATH: $CI_PROJECT_DIR/.go before_script: - mkdir -p .go cache: paths: - .go/pkg/mod/ stages: - test - build - deploy test: image: postgres:alpine variables: POSTGRES_PASSWORD: password stage: test extends: .go-cache script: - su -c initdb postgres - su -c "pg_ctl start > /dev/null" postgres - apk update - apk add build-base go - 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: - gl-code-quality-report.json coverage: stage: test image: postgres:alpine variables: POSTGRES_PASSWORD: password coverage: '/\(statements\)(?:\s+)?(\d+(?:\.\d+)?%)/' extends: .go-cache script: - su -c initdb postgres - su -c "pg_ctl start > /dev/null" postgres - apk update - apk add go - 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 jsonnet: stage: build image: alpine:latest script: - apk add -U jsonnet - jsonnet .gitlab-ci.jsonnet > generated-config.yml artifacts: paths: - generated-config.yml trigger-builds: stage: build needs: - jsonnet trigger: include: - artifact: generated-config.yml job: jsonnet strategy: depend trigger-master-deploy: stage: deploy needs: - trigger-builds image: name: bitnami/kubectl:latest entrypoint: [""] only: variables: - $CI_COMMIT_BRANCH == "master" script: - kubectl config get-contexts - kubectl config use-context gfx/gitlab-agents:gfxlabs-dev - kubectl rollout restart deployment gfx-pggat