Try publishing static binaries as distroless containers #98
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Trunk build | |
on: | |
push: | |
branch: develop | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
permissions: | |
contents: write | |
jobs: | |
build: | |
strategy: | |
fail-fast: false | |
name: Build Windows/Linux/MacOS/FreeBSD/Android | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Set up Go | |
uses: actions/setup-go@v5 | |
with: | |
go-version: "1.21" | |
- name: Build yggstack executables | |
run: | | |
echo "::group::yggstack-windows-armv7.exe" | |
GOOS=windows GOARCH=arm GOARM=7 ./build -o yggstack-windows-armv7.exe | |
echo "::endgroup::" | |
# | |
echo "::group::yggstack-windows-arm64.exe" | |
GOOS=windows GOARCH=arm64 ./build -o yggstack-windows-arm64.exe | |
echo "::endgroup::" | |
# | |
echo "::group::yggstack-windows-i386.exe" | |
GOOS=windows GOARCH=386 ./build -o yggstack-windows-i386.exe | |
echo "::endgroup::" | |
# | |
echo "::group::yggstack-windows-amd64.exe" | |
GOOS=windows GOARCH=amd64 ./build -o yggstack-windows-amd64.exe | |
echo "::endgroup::" | |
# | |
echo "::group::yggstack-linux-i386" | |
GOOS=linux GOARCH=386 ./build -o yggstack-linux-i386 | |
echo "::endgroup::" | |
# | |
echo "::group::yggstack-linux-amd64" | |
GOOS=linux GOARCH=amd64 ./build -o yggstack-linux-amd64 | |
echo "::endgroup::" | |
# | |
echo "::group::yggstack-linux-armv6" | |
GOOS=linux GOARCH=arm GOARM=6 ./build -o yggstack-linux-armv6 | |
echo "::endgroup::" | |
# | |
echo "::group::yggstack-linux-armv7" | |
GOOS=linux GOARCH=arm GOARM=7 ./build -o yggstack-linux-armv7 | |
echo "::endgroup::" | |
# | |
echo "::group::yggstack-linux-arm64" | |
GOOS=linux GOARCH=arm64 ./build -o yggstack-linux-arm64 | |
echo "::endgroup::" | |
# | |
echo "::group::yggstack-linux-mips-sf" | |
GOOS=linux GOARCH=mips GOMIPS=softfloat ./build -o yggstack-linux-mips-sf | |
echo "::endgroup::" | |
# | |
echo "::group::yggstack-linux-mipsle-sf" | |
GOOS=linux GOARCH=mipsle GOMIPS=softfloat ./build -o yggstack-linux-mipsle-sf | |
echo "::endgroup::" | |
# | |
echo "::group::yggstack-linux-mips64" | |
GOOS=linux GOARCH=mips64 ./build -o yggstack-linux-mips64 | |
echo "::endgroup::" | |
# | |
echo "::group::yggstack-linux-mips64le" | |
GOOS=linux GOARCH=mips64le ./build -o yggstack-linux-mips64le | |
echo "::endgroup::" | |
# | |
echo "::group::yggstack-linux-ppc64" | |
GOOS=linux GOARCH=ppc64 ./build -o yggstack-linux-ppc64 | |
echo "::endgroup::" | |
# | |
echo "::group::yggstack-linux-ppc64le" | |
GOOS=linux GOARCH=ppc64le ./build -o yggstack-linux-ppc64le | |
echo "::endgroup::" | |
# | |
echo "::group::yggstack-linux-riscv64" | |
GOOS=linux GOARCH=riscv64 ./build -o yggstack-linux-riscv64 | |
echo "::endgroup::" | |
# | |
echo "::group::yggstack-linux-s390x" | |
GOOS=linux GOARCH=s390x ./build -o yggstack-linux-s390x | |
echo "::endgroup::" | |
# | |
echo "::group::yggstack-linux-i386-static" | |
CGO_ENABLED=0 GOOS=linux GOARCH=386 ./build -s -o yggstack-linux-i386-static | |
CGO_ENABLED=0 GOOS=linux GOARCH=386 ./build -s -o yggstack-linux-386-static | |
ldd yggstack-linux-i386-static || echo "OK" | |
echo "::endgroup::" | |
# | |
echo "::group::yggstack-linux-amd64-static" | |
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 ./build -s -o yggstack-linux-amd64-static | |
ldd yggstack-linux-amd64-static || echo "OK" | |
echo "::endgroup::" | |
# | |
echo "::group::yggstack-linux-armv6-static" | |
CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=6 ./build -s -o yggstack-linux-armv6-static | |
ldd yggstack-linux-armv6-static || echo "OK" | |
echo "::endgroup::" | |
# | |
echo "::group::yggstack-linux-armv7-static" | |
CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 ./build -s -o yggstack-linux-armv7-static | |
ldd yggstack-linux-armv7-static || echo "OK" | |
echo "::endgroup::" | |
# | |
echo "::group::yggstack-linux-arm64-static" | |
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 ./build -s -o yggstack-linux-arm64-static | |
ldd yggstack-linux-arm64-static || echo "OK" | |
echo "::endgroup::" | |
# | |
echo "::group::yggstack-linux-mips-sf-static" | |
CGO_ENABLED=0 GOOS=linux GOARCH=mips GOMIPS=softfloat ./build -s -o yggstack-linux-mips-sf-static | |
ldd yggstack-linux-mips-sf-static || echo "OK" | |
echo "::endgroup::" | |
# | |
echo "::group::yggstack-linux-mipsle-sf-static" | |
CGO_ENABLED=0 GOOS=linux GOARCH=mipsle GOMIPS=softfloat ./build -s -o yggstack-linux-mipsle-sf-static | |
ldd yggstack-linux-mipsle-sf-static || echo "OK" | |
echo "::endgroup::" | |
# | |
echo "::group::yggstack-linux-mips64-static" | |
CGO_ENABLED=0 GOOS=linux GOARCH=mips64 ./build -s -o yggstack-linux-mips64-static | |
ldd yggstack-linux-mips64-static || echo "OK" | |
echo "::endgroup::" | |
# | |
echo "::group::yggstack-linux-mips64le-static" | |
CGO_ENABLED=0 GOOS=linux GOARCH=mips64le ./build -s -o yggstack-linux-mips64le-static | |
ldd yggstack-linux-mips64le-static || echo "OK" | |
echo "::endgroup::" | |
# | |
echo "::group::yggstack-linux-ppc64-static" | |
CGO_ENABLED=0 GOOS=linux GOARCH=ppc64 ./build -s -o yggstack-linux-ppc64-static | |
ldd yggstack-linux-ppc64-static || echo "OK" | |
echo "::endgroup::" | |
# | |
echo "::group::yggstack-linux-ppc64le-static" | |
CGO_ENABLED=0 GOOS=linux GOARCH=ppc64le ./build -s -o yggstack-linux-ppc64le-static | |
ldd yggstack-linux-ppc64le-static || echo "OK" | |
echo "::endgroup::" | |
# | |
echo "::group::yggstack-linux-riscv64-static" | |
CGO_ENABLED=0 GOOS=linux GOARCH=riscv64 ./build -s -o yggstack-linux-riscv64-static | |
ldd yggstack-linux-riscv64-static || echo "OK" | |
echo "::endgroup::" | |
# | |
echo "::group::yggstack-linux-s390x-static" | |
CGO_ENABLED=0 GOOS=linux GOARCH=s390x ./build -s -o yggstack-linux-s390x-static | |
ldd yggstack-linux-s390x-static || echo "OK" | |
echo "::endgroup::" | |
# | |
echo "::group::yggstack-darwin-arm64" | |
GOOS=darwin GOARCH=arm64 ./build -o yggstack-darwin-arm64 | |
echo "::endgroup::" | |
# | |
echo "::group::yggstack-darwin-amd64" | |
GOOS=darwin GOARCH=amd64 ./build -o yggstack-darwin-amd64 | |
echo "::endgroup::" | |
# | |
echo "::group::yggstack-freebsd-arm64" | |
GOOS=freebsd GOARCH=arm64 ./build -o yggstack-freebsd-arm64 | |
echo "::endgroup::" | |
# | |
echo "::group::yggstack-freebsd-amd64" | |
GOOS=freebsd GOARCH=amd64 ./build -o yggstack-freebsd-amd64 | |
echo "::endgroup::" | |
# | |
echo "::group::yggstack-freebsd-armv6" | |
GOOS=freebsd GOARCH=arm GOARM=6 ./build -o yggstack-freebsd-armv6 | |
echo "::endgroup::" | |
# | |
echo "::group::yggstack-freebsd-armv7" | |
GOOS=freebsd GOARCH=arm GOARM=7 ./build -o yggstack-freebsd-armv7 | |
echo "::endgroup::" | |
# | |
echo "::group::yggstack-freebsd-i386" | |
GOOS=freebsd GOARCH=386 ./build -o yggstack-freebsd-i386 | |
echo "::endgroup::" | |
# | |
echo "::group::yggstack-openbsd-arm64" | |
GOOS=openbsd GOARCH=arm64 ./build -o yggstack-openbsd-arm64 | |
echo "::endgroup::" | |
# | |
echo "::group::yggstack-openbsd-amd64" | |
GOOS=openbsd GOARCH=amd64 ./build -o yggstack-openbsd-amd64 | |
echo "::endgroup::" | |
# | |
echo "::group::yggstack-openbsd-armv6" | |
GOOS=openbsd GOARCH=arm GOARM=6 ./build -o yggstack-openbsd-armv6 | |
echo "::endgroup::" | |
# | |
echo "::group::yggstack-openbsd-armv7" | |
GOOS=openbsd GOARCH=arm GOARM=7 ./build -o yggstack-openbsd-armv7 | |
echo "::endgroup::" | |
# | |
echo "::group::yggstack-openbsd-i386" | |
GOOS=openbsd GOARCH=386 ./build -o yggstack-openbsd-i386 | |
echo "::endgroup::" | |
# | |
echo "::group::yggstack-netbsd-arm64" | |
GOOS=netbsd GOARCH=arm64 ./build -o yggstack-netbsd-arm64 | |
echo "::endgroup::" | |
# | |
echo "::group::yggstack-netbsd-amd64" | |
GOOS=netbsd GOARCH=amd64 ./build -o yggstack-netbsd-amd64 | |
echo "::endgroup::" | |
# | |
echo "::group::yggstack-netbsd-armv6" | |
GOOS=netbsd GOARCH=arm GOARM=6 ./build -o yggstack-netbsd-armv6 | |
echo "::endgroup::" | |
# | |
echo "::group::yggstack-netbsd-armv7" | |
GOOS=netbsd GOARCH=arm GOARM=7 ./build -o yggstack-netbsd-armv7 | |
echo "::endgroup::" | |
# | |
echo "::group::yggstack-netbsd-i386" | |
GOOS=netbsd GOARCH=386 ./build -o yggstack-netbsd-i386 | |
echo "::endgroup::" | |
# | |
echo "::group::yggstack-android-arm64" | |
CGO_ENABLED=1 CC="$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android21-clang" GOOS=android GOARCH=arm64 ./build -o yggstack-android-arm64 | |
echo "::endgroup::" | |
# | |
echo "::group::yggstack-android-amd64" | |
CGO_ENABLED=1 CC="$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/linux-x86_64/bin/x86_64-linux-android21-clang" GOOS=android GOARCH=amd64 ./build -o yggstack-android-amd64 | |
echo "::endgroup::" | |
# | |
echo "::group::yggstack-android-armv7" | |
CGO_ENABLED=1 CC="$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi21-clang" GOOS=android GOARCH=arm GOARM=7 ./build -o yggstack-android-armv7 | |
echo "::endgroup::" | |
# | |
echo "::group::yggstack-android-i386" | |
CGO_ENABLED=1 CC="$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/linux-x86_64/bin/i686-linux-android21-clang" GOOS=android GOARCH=386 ./build -o yggstack-android-i386 | |
echo "::endgroup::" | |
# | |
#echo "::group::yggstack-ios-arm64" | |
#GOOS=ios GOARCH=arm64 CC=$(go env GOROOT)/misc/ios/clangwrap.sh ./build -o yggstack-ios-arm64 | |
#echo "::endgroup::" | |
# | |
#echo "::group::yggstack-ios-amd64" | |
#GOOS=ios GOARCH=amd64 CC=$(go env GOROOT)/misc/ios/clangwrap.sh ./build -o yggstack-ios-amd64 | |
#echo "::endgroup::" | |
- name: Publish release | |
run: | | |
gh release create trunk --prerelease yggstack-* || gh release upload trunk yggstack-* --clobber | |
env: | |
GH_TOKEN: ${{ github.token }} | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Login to GitHub Container Registry | |
uses: docker/login-action@v3 | |
with: | |
registry: ghcr.io | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Build and push yggstack container image | |
uses: docker/build-push-action@v6 | |
with: | |
context: . | |
file: Dockerfile.static | |
platforms: linux/386, linux/amd64, linux/arm/v6, linux/arm/v7, linux/arm64, linux/ppc64le, linux/riscv64, linux/s390x | |
push: true | |
tags: ghcr.io/yggdrasil-network/yggstack:trunk |