Files
kontor/go/.gitlab-ci.yml
2025-01-09 19:28:50 +01:00

117 lines
3.3 KiB
YAML

variables:
GRADLE_OPTS: "-Dorg.gradle.daemon=false"
before_script:
- source "/home/gitlab-runner/.sdkman/bin/sdkman-init.sh"
- sdk update
- sdk d java 11.0.12-open
stages:
- environment
- prepare
- build
- test
- analysis
- deploy
environment:
stage: environment
script:
- echo "PATH=$PATH:/usr/local/go/bin:/home/gitlab-runner/go/bin" >> build.env
artifacts:
reports:
dotenv: build.env
Prepare Go dependencies:
stage: prepare
script:
- go get -u github.com/spf13/cobra
- go get -u github.com/jstemmer/go-junit-report
- go get -u github.com/inconshreveable/mousetrap
- go get -u github.com/mitchellh/go-homedir
- go get github.com/boumenot/gocover-cobertura
- go get -u gotest.tools/gotestsum
- go get -u github.com/cryptix/wav
- go get -u golang.org/x/lint/golint
dependencies:
- environment
Create Documentation:
stage: build
script:
- chmod +x docs/gradlew
- cd docs; ./gradlew publish
Compile Go Application:
stage: build
script: make build
Test Go Application:
stage: test
script:
- gotestsum --junitfile report.xml --format testname -- -coverprofile=coverage.txt -covermode count ./...
- go vet ./... 2> govet-report.out
- gocover-cobertura < coverage.txt > coverage.xml
- golint ./... > golint-report.out
dependencies:
- environment
artifacts:
when: always
paths:
- coverage.xml
- report.xml
reports:
junit: report.xml
coverage_report:
coverage_format: cobertura
path: coverage.xml
Code analysis:
stage: analysis
script:
- go test -coverprofile cover.out ./... -json > report.json
- go vet ./... 2> govet-report.out
- golint ./... > golint-report.out
- echo "sonar.projectKey=kontor_kontor-go_AX-cQT62rXuu6JVRvr-z" >> sonar-project.properties
- echo "sonar.sources=." >> sonar-project.properties
- echo "sonar.exclusions=**/*_test.go" >> sonar-project.properties
- echo "sonar.tests=." >> sonar-project.properties
- echo "sonar.test.inclusions=**/*_test.go" >> sonar-project.properties
- echo "sonar.go.tests.reportPaths=report.json" >> sonar-project.properties
- echo "sonar.go.coverage.reportPaths=cover.out" >> sonar-project.properties
- echo "sonar.go.govet.reportPaths=govet-report.out" >> sonar-project.properties
- echo "sonar.go.golint.reportPaths=golint-report.out" >> sonar-project.properties
- /data/sonar-scanner/bin/sonar-scanner -Dsonar.projectVersion=$(git describe --abbrev=0) -Dsonar.host.url=https://sonar.thpeetz.de -Dsonar.login=319616a2761ac3e96a1c7aacc54976bfff4096a9
dependencies:
- environment
Deploy To Staging:
stage: deploy
script:
- make build
- ssh kontor /home/kontor/kontor-test_service stop
- rsync -av templates kontor:/home/kontor/staging
- rsync -av bin/kontor kontor:/home/kontor/staging
- ssh kontor /home/kontor/kontor-test_service start
environment:
name: staging
url: https://kontor-test.thpeetz.de
only:
- main
Deploy to Production:
stage: deploy
script:
- make build
- sudo service kontor stop
- rsync -av templates kontor:/home/kontor/production
- rsync -av bin/kontor kontor:/home/kontor/production
- sudo service kontor start
environment:
name: production
url: https://kontor.thpeetz.de
only:
- main
when: manual