117 lines
3.3 KiB
YAML
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
|