Skip to content

chore: fix the release config for static build #8

chore: fix the release config for static build

chore: fix the release config for static build #8

Workflow file for this run

name: Release
on:
push:
tags:
- 'v*'
jobs:
release:
strategy:
matrix:
include:
- goos: linux
goarch: amd64
runner: ubuntu-latest
- goos: linux
goarch: arm64
runner: ubuntu-24.04-arm
# - goos: darwin
# goarch: amd64
# runner: macos-13
- goos: darwin
goarch: arm64
runner: macos-latest
runs-on: ${{ matrix.runner }}
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.24' # Adjust to your Go version
- name: Install dependencies
run: go mod download
- name: Install CGO dependencies for Linux
if: matrix.goos == 'linux'
run: |
sudo apt-get update
sudo apt-get install -y pkg-config
sudo apt update && \
sudo DEBIAN_FRONTEND=noninteractive apt install -y build-essential cmake pkg-config libssl-dev libssh2-1-dev zlib1g-dev libhttp-parser-dev python3 wget tar git && \
wget https://github.com/libgit2/libgit2/archive/refs/tags/v1.5.1.tar.gz -O libgit2-v1.5.1.tar.gz && \
tar -xzf libgit2-v1.5.1.tar.gz && \
cd libgit2-1.5.1 && \
mkdir build && \
cd build && \
cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF && \
make -j$(nproc) && \
sudo make install && \
sudo ldconfig
- name: Install CGO dependencies for macOS
if: matrix.goos == 'darwin'
run: |
brew install cmake wget && \
wget https://github.com/libgit2/libgit2/archive/refs/tags/v1.5.1.tar.gz -O libgit2-v1.5.1.tar.gz && \
tar -xzf libgit2-v1.5.1.tar.gz && \
cd libgit2-1.5.1 && \
mkdir build && \
cd build && \
cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF && \
make -j$(nproc) && \
sudo make install && \
export DYLD_LIBRARY_PATH=$HOME/libgit2/lib:$DYLD_LIBRARY_PATH
- name: Build binary for linux
if: matrix.goos == 'linux'
env:
CGO_ENABLED: 1
GOOS: ${{ matrix.goos }}
GOARCH: ${{ matrix.goarch }}
run: |
go build \
-tags "static system_libgit2" \
-ldflags "-X github.com/CloudNativeAI/modctl/pkg/version.GitVersion=${{ github.ref_name }} \
-X github.com/CloudNativeAI/modctl/pkg/version.GitCommit=$(git rev-parse --short HEAD) \
-X github.com/CloudNativeAI/modctl/pkg/version.BuildTime=$(date -u +'%Y-%m-%dT%H:%M:%SZ') \
-extldflags '-static'" \
-o build/modctl-${{ github.ref_name }}-${{ matrix.goos }}-${{ matrix.goarch }} \
main.go
- name: Build binary for macOS
if: matrix.goos == 'darwin'
env:
CGO_ENABLED: 1
GOOS: ${{ matrix.goos }}
GOARCH: ${{ matrix.goarch }}
run: |
go build \
-tags "libgit2_static netgo osusergo" \
-ldflags "-X github.com/CloudNativeAI/modctl/pkg/version.GitVersion=${{ github.ref_name }} \
-X github.com/CloudNativeAI/modctl/pkg/version.GitCommit=$(git rev-parse --short HEAD) \
-X github.com/CloudNativeAI/modctl/pkg/version.BuildTime=$(date -u +'%Y-%m-%dT%H:%M:%SZ') \
-o build/modctl-${{ github.ref_name }}-${{ matrix.goos }}-${{ matrix.goarch }} \
main.go
# - name: Create archive
# run: |
# mkdir -p dist
# tar -czf dist/modctl-${{ github.ref_name }}-${{ matrix.goos }}-${{ matrix.goarch }}.tar.gz \
# -C build modctl-${{ github.ref_name }}-${{ matrix.goos }}-${{ matrix.goarch }} \
# LICENSE README.md
# - name: Build deb/rpm packages
# if: matrix.goos == 'linux'
# uses: actions/setup-go@v5
# with:
# args: |
# pack \
# --packager nfpms \
# --config <(echo '
# name: modctl
# arch: ${{ matrix.goarch }}
# version: ${{ github.ref_name }}
# maintainer: "Model Spec Maintainers <[email protected]>"
# description: "A command line tool for managing artifact bundled based on the Model Format Specification"
# license: "Apache 2.0"
# formats:
# - deb
# - rpm
# bindir: /usr/bin
# files:
# build/modctl-${{ github.ref_name }}-${{ matrix.goos }}-${{ matrix.goarch }}: /usr/bin/modctl
# build/package/docs/modctl.1: /usr/share/man/man1/modctl.1
# LICENSE: /usr/share/doc/modctl/License
# ') \
# --output dist/
# - name: Generate checksums
# run: |
# cd dist
# shasum -a 256 *.tar.gz *.deb *.rpm > checksums.txt
# continue-on-error: true # In case no deb/rpm files exist for macOS
# - name: Upload artifacts
# uses: actions/upload-artifact@v4
# with:
# name: modctl-${{ matrix.goos }}-${{ matrix.goarch }}
# path: dist/
# create-release:
# needs: release
# runs-on: ubuntu-latest
# steps:
# - name: Download all artifacts
# uses: actions/download-artifact@v4
# with:
# path: artifacts
# - name: Create draft release
# uses: softprops/action-gh-release@v2
# with:
# draft: true
# files: |
# artifacts/**/modctl-*.tar.gz
# artifacts/**/modctl-*.deb
# artifacts/**/modctl-*.rpm
# artifacts/**/checksums.txt
# generate_release_notes: true
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}