gmantaos/Goirate

View on GitHub
.gitlab-ci.yml

Summary

Maintainability
Test Coverage
image: golang:1.16


variables:
  GITHUB_REPO: gmantaos/Goirate
  CGO_ENABLED: 0


stages:
- build
- test
- release


before_script:
- mkdir -p build
- cd src


build:
  stage: build
  artifacts:
    name: "goirate.$CI_COMMIT_SHORT_SHA"
    paths:
    - goirate
  script:
  - go get -u github.com/gobuffalo/packr/packr@v1.30.1
  - packr build -ldflags "-X main.Version=$CI_COMMIT_SHORT_SHA" -o ../goirate .


lint:
  stage: test
  script:
  - go vet -composites=false ./...


test:
  stage: test
  retry: 2
  coverage: '/^total:\s+\(statements\)\s+([0-9.]+)%/'
  artifacts:
    name: coverage
    paths:
    - coverage.html
  script:
  - go test -coverprofile ../build/coverage.out ./...
  - go tool cover -html ../build/coverage.out -o ../coverage.html
  - "go tool cover -func ../build/coverage.out | grep total:"


release:
  stage: release
  only:
  - tags
  dependencies:
  - build
  artifacts:
    name: "goirate.$CI_COMMIT_TAG"
    paths:
    - build/*
    expire_in: never
  script:
  - go get -u github.com/gobuffalo/packr/packr@v1.30.1
  - go get -u github.com/mitchellh/gox
  - go get -u github.com/c4milo/github-release
  - packr
  - gox -ldflags "-s -w -X main.Version=$CI_COMMIT_TAG" -osarch="darwin/amd64" -os="linux" -os="windows" -os="solaris" -output "../build/goirate.{{.OS}}.{{.Arch}}" .
  - cd ..
  - github-release $GITHUB_REPO "$CI_COMMIT_TAG" "master" "$CI_COMMIT_DESCRIPTION" "build/goirate.*"