From 6e46ac03c7a7104c81fce8196af7cf6edd2b8ca7 Mon Sep 17 00:00:00 2001 From: Scott Edlund <1928989-scott.edlund@users.noreply.gitlab.com> Date: Sun, 5 Apr 2020 22:24:43 +0800 Subject: [PATCH] Build go binaries without QEMU --- .github/workflows/buildx.yaml | 32 ++++++++++++++++---------------- Dockerfile | 10 ++++++++-- docker-compose.yaml | 4 ++++ 3 files changed, 28 insertions(+), 18 deletions(-) create mode 100644 docker-compose.yaml diff --git a/.github/workflows/buildx.yaml b/.github/workflows/buildx.yaml index 321a8f85..e1125fbc 100644 --- a/.github/workflows/buildx.yaml +++ b/.github/workflows/buildx.yaml @@ -47,14 +47,14 @@ jobs: - name: Docker Buildx (no push) run: | - docker buildx build \ - --platform ${{ steps.prepare.outputs.docker_platforms }} \ - --output "type=image,push=false" \ - --build-arg "VERSION=${{ steps.prepare.outputs.version }}" \ - --build-arg "BUILD_DATE=${{ steps.prepare.outputs.build_date }}" \ - --build-arg "VCS_REF=${GITHUB_SHA::8}" \ - --tag "${{ steps.prepare.outputs.docker_image }}:${{ steps.prepare.outputs.version }}" \ - --file Dockerfile . + docker buildx bake \ + --set ${{ github.event.repository.name }}.platform=${{ steps.prepare.outputs.docker_platforms }} \ + --set ${{ github.event.repository.name }}.output=type=image,push=false \ + --set ${{ github.event.repository.name }}.args.VERSION=${{ steps.prepare.outputs.version }} \ + --set ${{ github.event.repository.name }}.args.BUILD_DATE=${{ steps.prepare.outputs.build_date }} \ + --set ${{ github.event.repository.name }}.args.VCS_REF=${GITHUB_SHA::8} \ + --set ${{ github.event.repository.name }}.tags="${{ steps.prepare.outputs.docker_image }}:${{ steps.prepare.outputs.version }}" \ + --file docker-compose.yaml - name: Docker Login if: success() @@ -66,14 +66,14 @@ jobs: - name: Docker Buildx (push) if: success() run: | - docker buildx build \ - --platform ${{ steps.prepare.outputs.docker_platforms }} \ - --output "type=image,push=true" \ - --build-arg "VERSION=${{ steps.prepare.outputs.version }}" \ - --build-arg "BUILD_DATE=${{ steps.prepare.outputs.build_date }}" \ - --build-arg "VCS_REF=${GITHUB_SHA::8}" \ - --tag "${{ steps.prepare.outputs.docker_image }}:${{ steps.prepare.outputs.version }}" \ - --file Dockerfile . + docker buildx bake \ + --set ${{ github.event.repository.name }}.platform=${{ steps.prepare.outputs.docker_platforms }} \ + --set ${{ github.event.repository.name }}.output=type=image,push=true \ + --set ${{ github.event.repository.name }}.args.VERSION=${{ steps.prepare.outputs.version }} \ + --set ${{ github.event.repository.name }}.args.BUILD_DATE=${{ steps.prepare.outputs.build_date }} \ + --set ${{ github.event.repository.name }}.args.VCS_REF=${GITHUB_SHA::8} \ + --set ${{ github.event.repository.name }}.tags="${{ steps.prepare.outputs.docker_image }}:${{ steps.prepare.outputs.version }}" \ + --file docker-compose.yaml - name: Clear if: always() diff --git a/Dockerfile b/Dockerfile index 75603167..ec2b7919 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,10 @@ -FROM golang:1-alpine as builder +FROM --platform=$BUILDPLATFORM golang:1-alpine as builder + +# Convert TARGETPLATFORM to GOARCH format +# https://github.com/tonistiigi/xx +COPY --from=tonistiigi/xx:golang / / + +ARG TARGETPLATFORM RUN apk add --no-cache musl-dev git gcc @@ -8,7 +14,7 @@ WORKDIR /src ENV GO111MODULE=on -RUN cd cmd/gost && go build +RUN cd cmd/gost && go env && go build -v FROM alpine:latest diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 00000000..a2eb077c --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,4 @@ +version: "3.4" +services: + gost: + build: .