Skip to content

mengdaming/golang-cross

 
 

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.16.2
      
  • Build your own images

    • Build base image (optional)
       docker build -f Dockerfile_builder -t ghcr.io/gythialy/golang-cross-builder:v1.16.2 .
      

      Please follow the guide to pack the SDK first

    • Build golang-cross image
      docker build --build-arg GO_VERSION=1.16.2 \ 
        --build-arg GOLANG_DIST_SHA=542e936b19542e62679766194364f45141fde55169db2d8d01046555ca9eb4b8 \ 
        --build-arg GORELEASER_VERSION=0.162.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

      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

Packages

 
 
 

Languages

  • Ruby 34.9%
  • Go 25.5%
  • Dockerfile 21.6%
  • Makefile 14.6%
  • Shell 3.4%