1. Resources
  2. /
  3. Plugins
  4. /
  5. golang-cross-compile-buildkite-plugin

Golang Cross Compile Buildkite Plugin Build status

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, gomodule, and buildvcs.

Set buildvcs: false on targets using Go 1.18 or newer to disable embedding version-control metadata in the binary. This can be useful when the checkout’s Git object database is not available inside the build container. Only false changes the generated command; true is equivalent to omitting the setting. Do not set this option for older Go versions, which do not support the -buildvcs flag.

License

MIT (see LICENSE)

The plugins listed on this webpage are provided for informational purposes only. They have not undergone any formal security review or assessment. While we strive to provide useful resources, we cannot guarantee the safety, reliability, or integrity of these plugins. Users are strongly advised to conduct their own security evaluations before downloading, installing, or using any plugin. By using these plugins, you acknowledge and accept any risks associated with their use. We disclaim any liability for any harm or damages arising from the use of the plugins listed.

You deserve better CI.

Get started for free with a full month of our all-access trial.

Buildkite Pipelines

Platform

  1. Pipelines
  2. Public pipelines
  3. Test Engine
  4. Package Registries
  5. Mobile Delivery Cloud
  6. Pricing

Hosting options

  1. Self-hosted agents
  2. Mac hosted agents
  3. Linux hosted agents

Resources

  1. Docs
  2. Blog
  3. Changelog
  4. Example pipelines
  5. Plugins
  6. Webinars
  7. Case studies
  8. Events
  9. Migration Services

Company

  1. About
  2. Careers
  3. Press
  4. Security
  5. Brand assets
  6. Contact

Solutions

  1. Replace Jenkins
  2. Workflows for MLOps
  3. Testing at scale
  4. Monorepo mojo
  5. Bazel orchestration

Compare

  1. Buildkite vs GitHub Actions
  2. Buildkite vs Jenkins
  3. Buildkite vs CircleCI
  4. Buildkite vs Harness
  5. Buildkite vs CloudBees
  6. Buildkite vs Blacksmith
  7. Buildkite vs Depot

Legal

  1. Terms of Service
  2. Acceptable Use Policy
  3. Privacy Policy
  4. Subprocessors
  5. Service Level Agreement
  6. Supplier Code of Conduct
  7. Modern Slavery Statement

Support

  1. System status
  2. Forum
© Buildkite Pty Ltd 2026