Building Go Apps with Gitlab CI
Gitlab CI is amazing. I love how well it works… when you finally get it setup correctly. With Go, some of the articles on the Web state that you need to install the entire Go environment. These articles are out of date. Getting everything working made the YAML file messy and convoluted.
With recent updates to Gitlab, just use the
golang docker image from DockerHub (it’s an official image, so it’s safe). My gitlab-ci.yml file now looks like this:
stages: - build build-client: image: golang:1.7 stage: build script: - mkdir -p /go/src/gitlab.com/typicalrunt - ln -s /builds/typicalrunt/website.go /go/src/gitlab.com/typicalrunt/website.go - go build gitlab.com/typicalrunt/website.go/cli/awesome
Some things to note:
- Use the Docker image
golangpin it to a specific version for reliable builds.
- Your code is cloned into the container in a directory called
$PROJECTfor values specific to you.
- Since the
$GOPATHit set to
/go, you need to symlink in your code into the proper directory. You may have to create the directory structure first (hence my use of
go buildwith your package name and you’re done.