Go

A simple example of a pipeline for Go project with cross-platform builds.

In the following example we’re building and testing a project written in Go.

There are two stages — build and test.

image: golang:latest

stages:
  - build
  - test

run unit tests:
  stage: test
  commands:
    - go test -v

run benchmark:
  stage: test
  commands:
    - go test -v -bench=. -benchtime=5s

build for mac:
  stage: build
  variables:
    GOOS: darwin
  commands:
    - go build -v -o output/myapp_$GOOS

build for win:
  stage: build
  variables:
    GOOS: windows
  commands:
    - go build -v -o output/myapp_$GOOS

build for linux:
  stage: build
  variables:
    GOOS: windows
  commands:
    - go build -v -o output/myapp_$GOOS

NOTE: the pipeline could be simplified using the YAML merge function like as following:

image: golang:latest

stages:
  - build
  - test

run unit tests:
  stage: test
  commands:
    - go test -v

run benchmark:
  stage: test
  commands:
    - go test -v -bench=. -benchtime=5s

.build: &build
  stage: build
  commands:
    - go build -v -o output/myapp_$GOOS

build for mac:
  <<: *build
  variables:
    GOOS: darwin

build for win:
  <<: *build
  variables:
    GOOS: windows

build for linux:
  <<: *build
  variables:
    GOOS: linux

Last modified September 17, 2020