.gitlab-ci.yml
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.*"