developer-guy / golang-cross

golang cross compiler with CGO

Home Page:https://gythialy.github.io/goreleaser-cgo-cross-compile/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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.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 .
      

      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

      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

About

golang cross compiler with CGO

https://gythialy.github.io/goreleaser-cgo-cross-compile/

License:MIT License


Languages

Language:Dockerfile 35.6%Language:Ruby 28.6%Language:Go 21.0%Language:Makefile 12.0%Language:Shell 2.8%