Skip to content

keysight-eggplant/golang-cross

This branch is 78 commits behind gythialy/golang-cross:main.

Folders and files

NameName
Last commit message
Last commit date
May 12, 2024
Jan 5, 2021
Aug 29, 2023
Sep 29, 2022
May 20, 2024
Feb 28, 2023
May 21, 2024
May 12, 2024
Feb 23, 2024
Aug 22, 2019
Feb 27, 2024
Sep 7, 2020

Repository files navigation

golang-cross Actions Status

Docker container to do cross compilation (Linux, windows, macOS, ARM, ARM64) of go packages including support for cgo.

Docker images

  • Find it on GitHub packages

    • golang-cross
      docker pull ghcr.io/gythialy/golang-cross:latest
      
    • golang-cross-builder
      docker pull ghcr.io/gythialy/golang-cross-builder:v1.22.0-0-bullseye
      
      docker pull ghcr.io/gythialy/golang-cross-builder:v1.17.1
      
  • Build your own images

    • Build base image (optional)
       docker build -f Dockerfile_builder -t ghcr.io/gythialy/golang-cross-builder:v1.17.1 .
      
      if running docker on M1 (arm64) macbook:
       docker build --platform linux/amd64 -f Dockerfile.builder -t ghcr.io/gythialy/golang-cross-builder:v1.18 .
      

      Please follow the guide to pack the SDK first or build by GitHub Action

    • Build golang-cross image
      docker build --build-arg GO_VERSION=1.22.0 \
        --build-arg OS_CODENAME=bullseye \
        --build-arg GOLANG_DIST_SHA=542e936b19542e62679766194364f45141fde55169db2d8d01046555ca9eb4b8 \
        --build-arg GORELEASER_VERSION=1.24.0 \
        --build-arg GORELEASER_SHA=4b7d2f1e59ead8047fcef795d66236ff6f8cfe7302c1ff8fb31bd360a3c6f32e \
        -f Dockerfile \
        -t ghcr.io/gythialy/golang-cross:latest .
      

      The default arguments can be overridden with --build-arg

How to use

  • Prepare GoReleaser configuration

  • Generate environment variable PRIVATE_KEY from the GPG private key (optional), if enable the signing feature

    export PRIVATE_KEY=$(cat ~/private_key.gpg | base64)
  • Run docker container to build the binaries

      export GO_BUILDER_VERSION=v1.17.1
      docker run --rm --privileged \
        -e PRIVATE_KEY=$(PRIVATE_KEY) \
        -v $(CURDIR):/golang-cross-example \
        -v /var/run/docker.sock:/var/run/docker.sock \
        -v $(GOPATH)/src:/go/src \
        -w /golang-cross-example \
        ghcr.io/gythialy/golang-cross:$(GO_BUILDER_VERSION) --snapshot --rm-dist

Practical example

Thanks

Jetbrains

Releases

No releases published

Packages

No packages published

Languages

  • Shell 38.4%
  • Dockerfile 23.3%
  • Ruby 20.3%
  • Go 11.5%
  • Makefile 6.5%