stages: - build - test - deploy before_script: - go get -u github.com/jstemmer/go-junit-report - go get -u github.com/t-yuki/gocover-cobertura Create Documentation: stage: build script: - chmod +x docs/gradlew - cd docs; ./gradlew asciidoctor artifacts: paths: - docs/build/asciidoc/pdf/kalorienmanager.pdf Compile Go Application: stage: build script: make build Test Go Application: stage: test script: - make test - GOPATH=$HOME/go go test -v ./... 2>&1 | /home/gitlab-runner/go/bin/go-junit-report > report.xml - GOPATH=$HOME/go go vet ./... artifacts: reports: junit: report.xml Deploy To Staging: stage: deploy script: - make build - ssh kalorienmanager /home/kalorienmanager/app-test_service stop - rsync -av templates kalorienmanager:/home/kalorienmanager/staging - rsync -av bin/kalorienmanager kalorienmanager:/home/kalorienmanager/staging - ssh kalorienmanager /home/kalorienmanager/app-test_service start environment: name: staging only: - master Deploy to Production: stage: deploy script: - make build - ansible-playbook kalorienmanager-ansible.yml - ssh kalorienmanager /home/kalorienmanager/app_service stop - rsync -av templates kalorienmanager:/home/kalorienmanager/production - rsync -av bin/kalorienmanager kalorienmanager:/home/kalorienmanager/production - ssh kalorienmanager /home/kalorienmanager/app_service start environment: name: production only: - master when: manual