Skip to content

feat(ci): try to support multiple operating systems and architectures #243

feat(ci): try to support multiple operating systems and architectures

feat(ci): try to support multiple operating systems and architectures #243

Workflow file for this run

name: Build and Release
on:
workflow_dispatch:
push:
branches: [main]
tags: [v*]
paths-ignore:
- "**/*.md"
pull_request:
branches: [main]
jobs:
build:
name: Build for ${{ matrix.target.name }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest]
target:
- { os: linux, arch: 386, name: linux-386, zig: x86-linux }
- { os: linux, arch: amd64, name: linux-amd64, zig: x86_64-linux }
- { os: linux, arch: arm, name: linux-arm, zig: arm-linux-musleabihf }
- { os: linux, arch: arm64, name: linux-arm64, zig: aarch64-linux }
- { os: linux, arch: riscv64, name: linux-riscv64, zig: riscv64-linux }
include:
- os: [macos-latest]
target:
- { os: darwin, arch: amd64, name: macos-amd64, zig: x86_64-macos }
- { os: darwin, arch: arm64, name: macos-arm64, zig: aarch64-macos }
- os: [windows-latest]
target:
- { os: windows, arch: 386, name: windows-386, zig: x86-windows }
- { os: windows, arch: amd64, name: windows-amd64, zig: x86_64-windows }
- { os: windows, arch: arm64, name: windows-arm64, zig: aarch64-windows }
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: 1.23
- name: Set up Zig
uses: goto-bus-stop/setup-zig@v2
with:
version: 0.13.0
- name: Build for ${{ matrix.target.name }}
run: |
VERSION=$(git describe --always --tags --match "v*" --dirty="-dev")
CC="zig cc -target ${{ matrix.target.zig }}" CGO_ENABLED=1 GOOS=${{ matrix.target.os }} GOARCH=${{ matrix.target.arch }} go build -trimpath -ldflags="-w -s -X main.Version=${VERSION}" -o estkme-cloud-${{ matrix.target.name }}
- name: Upload ${{ matrix.target.name }} to Artifact
uses: actions/upload-artifact@v4
with:
name: estkme-cloud-${{ matrix.target.name }}
path: estkme-cloud-${{ matrix.target.name }}
release:
name: Release
runs-on: ubuntu-latest
permissions:
contents: write
needs: build
if: startsWith(github.ref, 'refs/tags/v')
steps:
- name: Download Artifact
uses: actions/download-artifact@v4
with:
merge-multiple: true
pattern: "*"
- name: Release
uses: softprops/action-gh-release@v2
with:
files: "*"