Skip to content
Snippets Groups Projects
Commit 3bf5374a authored by Erick Hitter's avatar Erick Hitter
Browse files

Better CI, care of Pantomath

Fixes #7
parent 286f5a47
Branches
No related tags found
1 merge request!4Better CI
Pipeline #145 failed
# This file is a template, and might need editing before it works on your project.
image: golang:latest image: golang:latest
variables: cache:
REPO_NAME: git.ethitter.com/debian/eth-log-alerting paths:
- /apt-cache
- /go/src/github.com
- /go/src/golang.org
- /go/src/google.golang.org
- /go/src/gopkg.in
- /go/src/git.ethitter.com
stages:
- test
- build
# The problem is that to be able to use go get, one needs to put
# the repository in the $GOPATH. So for example if your gitlab domain
# is gitlab.com, and that your repository is namespace/project, and
# the default GOPATH being /go, then you'd need to have your
# repository in /go/src/gitlab.com/namespace/project
# Thus, making a symbolic link corrects this.
before_script: before_script:
- mkdir -p $GOPATH/src/$(dirname $REPO_NAME) - mkdir -p /go/src/git.ethitter.com/debian /go/src/_/builds
- ln -svf $CI_PROJECT_DIR $GOPATH/src/$REPO_NAME - cp -r $CI_PROJECT_DIR /go/src/git.ethitter.com/debian/eth-log-alerting
- cd $GOPATH/src/$REPO_NAME - ln -s /go/src/git.ethitter.com/debian /go/src/_/builds/debian
- make dep
- go version unit_tests:
stage: test
script:
- make test
- go get github.com/asaskevich/govalidator race_detector:
- go get github.com/ashwanthkumar/slack-go-webhook stage: test
- go get github.com/hpcloud/tail script:
- make race
stages: memory_sanitizer:
- test stage: test
- build script:
- make msan
code_coverage:
stage: test
script:
- make coverage
code_coverage_report:
stage: test
script:
- make coverhtml
only:
- master
format: lint_code:
stage: test stage: test
script: script:
- go tool vet -composites=false -shadow=true *.go - make lint
- go test -race $(go list ./... | grep -v /vendor/)
compile: build:
stage: build stage: build
script: script:
- go get github.com/mitchellh/gox - make
- gox -output="eth-log-alerting-builds/{{.Dir}}_{{.OS}}_{{.Arch}}" -parallel=4
artifacts: artifacts:
paths: paths:
- eth-log-alerting-builds/ - eth-log-alerting-builds/
\ No newline at end of file
Makefile 0 → 100644
PROJECT_NAME := "eth-log-alerting"
PKG := "git.ethitter.com/debian/$(PROJECT_NAME)"
PKG_LIST := $(shell go list ${PKG}/... | grep -v /vendor/)
GO_FILES := $(shell find . -name '*.go' | grep -v /vendor/ | grep -v _test.go)
.PHONY: all dep build clean test coverage coverhtml lint
all: build
lint:
@golint -set_exit_status ${PKG_LIST}
test:
@go test -short ${PKG_LIST}
race: dep
@go test -race -short ${PKG_LIST}
msan: dep
@go test -msan -short ${PKG_LIST}
coverage:
./tools/coverage.sh;
coverhtml:
./tools/coverage.sh html;
dep:
@go get -v -d ./...
@go get github.com/mitchellh/gox
build: dep
@gox -output="eth-log-alerting-builds/{{.Dir}}_{{.OS}}_{{.Arch}}" -parallel=4
clean:
@rm -f $(PROJECT_NAME)
help:
@grep -h -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment