A Buildkite plugin for building golang binaries against different operating systems, archictures and versions of golang.
This plugin creates a step for each build target and runs them in parallel. It's ideal for build matrixes against multiple architectures, operating systems and golang versions.
If you just need to build against a single target, use the simpler golang plugin, or if you want to avoid using docker you can use the the gopath checkout plugin.
Example
Build a golang binary across a set of architectures and versions.
steps:
- plugins:
- golang-cross-compile#v1.4.0:
build: main.go
import: github.com/buildkite/example
targets:
- version: "1.11"
goos: linux
goarch: amd64
gomodule: "on"
- version: "1.11"
goos: windows
goarch: amd64
gomodule: "on"
- version: "1.11"
goos: darwin
goarch: amd64
gomodule: "on"
Configuration
build
(optional)
The golang file to build. Can either be a relative package like ./cmd/helloworld
or a path to a file like cli/main.go
. Defaults to main.go
Example: 1.10.2
import
(required)
The golang package to use in the gopath in the container.
Exmaple: github.com/buildkite/agent
bin-prefix
(optional)
By default the basename of the import package is used for the binary name, use bin-prefix
to specify a different one.
Exmaple: buildkite-agent
static
(optional)
Create a statically compiled binary, useful for alpine docker images.
targets
(required)
A list of targets to run in parallel. Each target can have a version
, goos
, goarch
and gomodule
.
License
MIT (see LICENSE)