Skip to content

Commit

Permalink
feat: bump debian version to bookwarm
Browse files Browse the repository at this point in the history
- format files
- update pack macOS SDK in README

Signed-off-by: Goren G <[email protected]>
  • Loading branch information
gythialy committed Aug 29, 2023
1 parent 34efd24 commit b04609e
Show file tree
Hide file tree
Showing 5 changed files with 118 additions and 104 deletions.
90 changes: 45 additions & 45 deletions .github/workflows/builder.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,16 @@ on:
inputs:
builder-tag:
description: golang cross builder tag name
default: v1.21.0-1
default: v1.21.0-2
golang-version:
description: golang version
default: '1.21.0'
default: "1.21.0"
osxcross-git-hash:
description: git commit hash of osx-cross project
default: '3dcc13644cfaa3d7ea6a959acbe0f1a23cf2df72'
default: "3dcc13644cfaa3d7ea6a959acbe0f1a23cf2df72"
osx-min-version:
description: minimal macOS SDK deployment target
default: '10.12'
default: "10.12"
jobs:
build:
runs-on: ubuntu-latest
Expand All @@ -27,44 +27,44 @@ jobs:
DOCKER_REGISTRY: "ghcr.io"

steps:
- uses: actions/checkout@v3
- uses: sigstore/cosign-installer@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Get Repo Owner
id: get_repo_owner
run: echo "repo_owner=$(echo ${{ github.repository_owner }} | tr '[:upper:]' '[:lower:]')" >> $GITHUB_OUTPUT
- name: Docker meta
id: meta
uses: docker/metadata-action@v4
with:
images: ghcr.io/${{ steps.get_repo_owner.outputs.repo_owner }}/golang-cross-builder
tags: |
type=raw,value=latest,enable={{is_default_branch}}
type=raw,value=${{ env.GOLANG_CROSS_TAG }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ steps.get_repo_owner.outputs.repo_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v4
id: buildpush
with:
context: .
file: Dockerfile.builder
push: ${{ github.event_name != 'pull_request' }}
build-args: |
GO_VERSION=${{ github.event.inputs.golang-version }}
OSX_VERSION_MIN=${{ github.event.inputs.osx-min-version }}
OSX_CROSS_COMMIT=${{ github.event.inputs.osxcross-git-hash }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
- name: Sign the images
run: |
echo "sign ${{ steps.buildpush.outputs.digest }}"
cosign sign --yes "ghcr.io/${{ steps.get_repo_owner.outputs.repo_owner }}/golang-cross-builder@${{ steps.buildpush.outputs.digest }}"
shell: bash
- uses: actions/checkout@v3
- uses: sigstore/cosign-installer@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Get Repo Owner
id: get_repo_owner
run: echo "repo_owner=$(echo ${{ github.repository_owner }} | tr '[:upper:]' '[:lower:]')" >> $GITHUB_OUTPUT
- name: Docker meta
id: meta
uses: docker/metadata-action@v4
with:
images: ghcr.io/${{ steps.get_repo_owner.outputs.repo_owner }}/golang-cross-builder
tags: |
type=raw,value=latest,enable={{is_default_branch}}
type=raw,value=${{ env.GOLANG_CROSS_TAG }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ steps.get_repo_owner.outputs.repo_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v4
id: buildpush
with:
context: .
file: Dockerfile.builder
push: ${{ github.event_name != 'pull_request' }}
build-args: |
GO_VERSION=${{ github.event.inputs.golang-version }}
OSX_VERSION_MIN=${{ github.event.inputs.osx-min-version }}
OSX_CROSS_COMMIT=${{ github.event.inputs.osxcross-git-hash }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
- name: Sign the images
run: |
echo "sign ${{ steps.buildpush.outputs.digest }}"
cosign sign --yes "ghcr.io/${{ steps.get_repo_owner.outputs.repo_owner }}/golang-cross-builder@${{ steps.buildpush.outputs.digest }}"
shell: bash
12 changes: 11 additions & 1 deletion .github/workflows/osx-sdk.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,17 @@ jobs:
# with:
# xcode-version: latest
- name: Set up Docker
uses: douglascamata/setup-docker-macos-action@v1-alpha
uses: crazy-max/[email protected]
env:
SIGN_QEMU_BINARY: 1
COLIMA_START_ARGS: --cpu 4 --memory 8 --disk 32
daemon-config: |
{
"debug": true,
"features": {
"containerd-snapshotter": true
}
}
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- uses: actions/checkout@v3
Expand Down
113 changes: 58 additions & 55 deletions Dockerfile.builder
Original file line number Diff line number Diff line change
Expand Up @@ -5,77 +5,80 @@ ARG GO_VERSION=1.21.0
ARG OSX_VERSION_MIN=10.12
ARG OSX_CROSS_COMMIT=3dcc13644cfaa3d7ea6a959acbe0f1a23cf2df72

FROM golang:${GO_VERSION:-1.21.0}-bullseye AS base
FROM ghcr.io/gythialy/osx-sdk:v13 AS osx-sdk

ARG APT_MIRROR
RUN sed -ri "s/(httpredir|deb).debian.org/${APT_MIRROR:-deb.debian.org}/g" /etc/apt/sources.list \
&& sed -ri "s/(security).debian.org/${APT_MIRROR:-security.debian.org}/g" /etc/apt/sources.list
FROM golang:${GO_VERSION:-1.21.0}-bookworm AS base

# ARG APT_MIRROR
# RUN sed -ri "s/(httpredir|deb).debian.org/${APT_MIRROR:-deb.debian.org}/g" /etc/apt/sources.list \
# && sed -ri "s/(security).debian.org/${APT_MIRROR:-security.debian.org}/g" /etc/apt/sources.list

ENV OSX_CROSS_PATH=/osxcross
ARG DEBIAN_FRONTEND=noninteractive
# Install deps
RUN set -x; echo "Starting image build for Debian " \
&& dpkg --add-architecture arm64 \
&& dpkg --add-architecture armel \
&& dpkg --add-architecture armhf \
&& dpkg --add-architecture i386 \
&& dpkg --add-architecture mips \
&& dpkg --add-architecture mipsel \
&& dpkg --add-architecture powerpc \
&& dpkg --add-architecture ppc64el \
&& dpkg --add-architecture s390x \
&& apt-get update \
&& apt-get install -y -q \
autoconf \
automake \
autotools-dev \
bc \
binfmt-support \
binutils-multiarch \
binutils-multiarch-dev \
build-essential \
clang \
crossbuild-essential-arm64 \
crossbuild-essential-armel \
crossbuild-essential-armhf \
crossbuild-essential-mipsel \
crossbuild-essential-ppc64el \
crossbuild-essential-s390x \
curl \
devscripts \
gdb \
git-core \
libtool \
llvm \
mercurial \
multistrap \
patch \
software-properties-common \
subversion \
wget \
xz-utils \
cmake \
qemu-user-static \
libxml2-dev \
lzma-dev \
openssl \
mingw-w64 \
musl-tools \
libssl-dev && \
apt -y autoremove && \
apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
&& dpkg --add-architecture arm64 \
&& dpkg --add-architecture armel \
&& dpkg --add-architecture armhf \
&& dpkg --add-architecture i386 \
&& dpkg --add-architecture mips \
&& dpkg --add-architecture mipsel \
&& dpkg --add-architecture powerpc \
&& dpkg --add-architecture ppc64el \
&& dpkg --add-architecture s390x \
&& apt-get update \
&& apt-get install -y -q \
autoconf \
automake \
autotools-dev \
bc \
binfmt-support \
binutils-multiarch \
binutils-multiarch-dev \
build-essential \
clang \
crossbuild-essential-arm64 \
crossbuild-essential-armel \
crossbuild-essential-armhf \
crossbuild-essential-mipsel \
crossbuild-essential-ppc64el \
crossbuild-essential-s390x \
curl \
devscripts \
gdb \
git-core \
libtool \
llvm \
mercurial \
multistrap \
patch \
software-properties-common \
subversion \
wget \
xz-utils \
cmake \
qemu-user-static \
libxml2-dev \
lzma-dev \
openssl \
mingw-w64 \
musl-tools \
libssl-dev \
&& apt -y autoremove \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

# FIXME: install gcc-multilib
# FIXME: add mips and powerpc architectures

WORKDIR "${OSX_CROSS_PATH}"
# install osxcross:
RUN git clone https://github.com/tpoechtrager/osxcross.git . \
&& git checkout -q "${OSX_CROSS_COMMIT:-3dcc13644cfaa3d7ea6a959acbe0f1a23cf2df72}"
&& git checkout -q "${OSX_CROSS_COMMIT:-3dcc13644cfaa3d7ea6a959acbe0f1a23cf2df72}"

# install osx sdk
COPY --from=ghcr.io/gythialy/osx-sdk:v13@sha256:c0654de9a559cf9852a40a925761882a9147dd0dd35f87eaba6a6edc6c5bde43 "${OSX_CROSS_PATH}/." "${OSX_CROSS_PATH}"
COPY --from=osx-sdk "${OSX_CROSS_PATH}/." "${OSX_CROSS_PATH}"

# https://github.com/tpoechtrager/osxcross/issues/313
COPY patch/osxcross-08-52-08.patch "${OSX_CROSS_PATH}/"
Expand Down
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ Docker container to do cross compilation (Linux, windows, macOS, ARM, ARM64) of
```
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](https://github.com/tpoechtrager/osxcross#packaging-the-sdk) first
> Please follow the guide to [pack the SDK](https://github.com/tpoechtrager/osxcross#packaging-the-sdk) first or build by [GitHub Action](https://github.com/gythialy/golang-cross/actions/workflows/osx-sdk.yaml)
- Build golang-cross image
```
docker build --build-arg GO_VERSION=1.16.2 \
Expand All @@ -35,6 +35,7 @@ Docker container to do cross compilation (Linux, windows, macOS, ARM, ARM64) of
-t ghcr.io/gythialy/golang-cross:latest .
```
> The default arguments can be overridden with `--build-arg`
## How to use
- Prepare [GoReleaser](https://goreleaser.com/intro/) configuration
Expand Down
4 changes: 2 additions & 2 deletions example/.goreleaser.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ builds:
binary: example
env:
- CGO_ENABLED=1
- CC=aarch64-apple-darwin21.4-clang
- CXX=aarch64-apple-darwin21.4-clang++
- CC=oa64-clang
- CXX=oa64-clang++
main: ./main.go
goos:
- darwin
Expand Down

0 comments on commit b04609e

Please sign in to comment.