{ "image": "golang:alpine", "variables": { "GO111MODULE": "on", "CGO_ENABLED": "1", # for the race detector "COV": "/tmp/cov_results", "dismock": "github.com/mavolin/dismock/pkg/dismock", # used only in integration_test "tested": "./api,./gateway,./bot,./discord" }, "before_script": [ "apk add git build-base" ], "stages": [ "build", "test" ], "build_test": { "stage": "build", "script": [ "go build ./..." ] }, "unit_test": { "stage": "test", "timeout": "2m", # 2 minutes # Don't run the test if we have a $BOT_TOKEN, because # integration_test will run instead. "except": { "variables": [ "$BOT_TOKEN" ] }, "script": [ "go test -coverprofile -race -v $COV ./...", "go tool cover -func $COV" ] }, "integration_test": { "stage": "test", "timeout": "5m", # 5 minutes # Run the test only if we have $BOT_TOKEN, else fallback to unit # tests. "only": { "variables": [ "$BOT_TOKEN" ] }, "script": [ "go get ./...", # Test this package along with dismock. "go test -coverpkg $tested -coverprofile $COV -tags integration -race -v ./... $dismock", "go tool cover -func $COV" ] } }