Skip to content

Build Binaries

Build Binaries #12

name: Build Binaries
on:
workflow_dispatch:
workflow_call:
env:
CGO_ENABLED: 1
jobs:
build-linux-intel:
runs-on: ubuntu-latest
strategy:
matrix:
tag: [linux-amd64, linux-i386]
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Set vars
id: vars
run: echo "version=$(git describe --tags --match v[0-9]* 2> /dev/null)" >> $GITHUB_OUTPUT
- name: Pull docker image
run: docker pull ghcr.io/zk-org/zk-xcompile:${{ matrix.tag }}
- name: Build
run: |
docker run --rm \
-v $(pwd):/usr/src/zk \
-w /usr/src/zk \
-u root \
ghcr.io/zk-org/zk-xcompile:${{ matrix.tag }} \
/bin/bash -c 'go build -buildvcs=false -tags "fts5" -ldflags "-X=main.Version=${{ steps.vars.outputs.version }} -X=main.Build=${{ steps.vars.outputs.version }}"'
- name: upload artifact
uses: actions/upload-artifact@v4
with:
name: zk-${{ steps.vars.outputs.version }}-${{ matrix.tag }}.tar.gz
path: zk
build-linux-arm:
runs-on: ubuntu-24.04-arm
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Set vars
id: vars
run: echo "version=$(git describe --tags --match v[0-9]* 2> /dev/null)" >> $GITHUB_OUTPUT
- name: Pull docker image
run: docker pull ghcr.io/zk-org/zk-xcompile:linux-arm64
- name: Build
run: |
docker run --rm \
-v $(pwd):/usr/src/zk \
-w /usr/src/zk \
-u root \
ghcr.io/zk-org/zk-xcompile:linux-arm64 \
/bin/bash -c 'go build -buildvcs=false -tags "fts5" -ldflags "-X=main.Version=${{ steps.vars.outputs.version }} -X=main.Build=${{ steps.vars.outputs.version }}"'
- name: upload artifact
uses: actions/upload-artifact@v4
with:
name: zk-${{ steps.vars.outputs.version }}-linux-arm64.tar.gz
path: zk
build-alpine-intel:
runs-on: ubuntu-latest
strategy:
matrix:
tag: [alpine-amd64, alpine-i386]
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Set vars
id: vars
run: echo "version=$(git describe --tags --match v[0-9]* 2> /dev/null)" >> $GITHUB_OUTPUT
- name: Pull docker image
run: docker pull ghcr.io/zk-org/zk-xcompile:${{ matrix.tag }}
- name: build
run: |
docker run --rm \
-v $(pwd):/usr/src/zk \
-w /usr/src/zk \
-u root \
ghcr.io/zk-org/zk-xcompile:${{ matrix.tag }} \
/bin/bash -c 'go build -buildvcs=false -tags "fts5" -ldflags "-extldflags=-static -X=main.Version=${{ steps.vars.outputs.version }} -X=main.Build=${{ steps.vars.outputs.version }}"'
- name: upload artifact
uses: actions/upload-artifact@v4
with:
name: zk-${{ steps.vars.outputs.version }}-${{ matrix.tag }}.tar.gz
path: zk
build-alpine-arm:
runs-on: ubuntu-24.04-arm
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Set vars
id: vars
run: echo "version=$(git describe --tags --match v[0-9]* 2> /dev/null)" >> $GITHUB_OUTPUT
- name: Pull dockedr image
run: docker pull ghcr.io/zk-org/zk-xcompile:alpine-arm64
- name: build
run: |
docker run --rm \
-v $(pwd):/usr/src/zk \
-w /usr/src/zk \
-u root \
ghcr.io/zk-org/zk-xcompile:alpine-arm64 \
/bin/bash -c 'go build -buildvcs=false -tags "fts5" -ldflags "-extldflags=-static -X=main.Version=${{ steps.vars.outputs.version }} -X=main.Build=${{ steps.vars.outputs.version }}"'
- name: upload artifact
uses: actions/upload-artifact@v4
with:
name: zk-${{ steps.vars.outputs.version }}-alpine-arm64.tar.gz
path: zk
build-mac-intel:
runs-on: macos-13
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set vars
id: vars
run: echo "version=$(git describe --tags --match v[0-9]* 2> /dev/null)" >> $GITHUB_OUTPUT
- name: Setup go
uses: actions/setup-go@v5
with:
go-version: 1.23
- name: build
run: /bin/bash -c 'go build -buildvcs=false -tags "fts5" -ldflags "-X=main.Version=${{ steps.vars.outputs.version }} -X=main.Build=${{ steps.vars.outputs.version }}"'
- name: upload artifact
uses: actions/upload-artifact@v4
with:
name: zk-${{ steps.vars.outputs.version }}-macos-x86_64.tar.gz
path: zk
build-mac-arm:
runs-on: macos-latest
env:
GOARCH: arm64
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set vars
id: vars
run: echo "version=$(git describe --tags --match v[0-9]* 2> /dev/null)" >> $GITHUB_OUTPUT
- name: Setup go
uses: actions/setup-go@v5
with:
go-version: 1.23
- name: Build
env:
GOARCH: arm64
run: /bin/bash -c 'go build -buildvcs=false -tags "fts5" -ldflags "-X=main.Version=${{ steps.vars.outputs.version }} -X=main.Build=${{ steps.vars.outputs.version }}"'
- name: upload artifact
uses: actions/upload-artifact@v4
with:
name: zk-${{ steps.vars.outputs.version }}-macos_arm64.tar.gz
path: zk
build-win:
runs-on: windows-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set vars
id: vars
run: echo "version=$(git describe --tags --match v[0-9]* 2> $null)" >> $env:GITHUB_OUTPUT
shell: pwsh
- name: Setup go
uses: actions/setup-go@v5
with:
go-version: 1.23
- name: Build
run: go build -buildvcs=false -tags "fts5" -ldflags "-X=main.Version=${{ steps.vars.outputs.version }} -X=main.Build=${{ steps.vars.outputs.version }}"
- name: upload artifact
uses: actions/upload-artifact@v4
with:
name: zk-${{ steps.vars.outputs.version }}-windows_x64_86.tar.gz
path: zk.exe