Skip to content

fix: outpu dir flag

fix: outpu dir flag #6

Workflow file for this run

name: Cross-Platform Build
on:
push:
tags:
- "v*.*.*"
workflow_dispatch:
env:
PROJECT_NAME: checkit
RELEASE: v0.0.0
DIST_DIR: dist
EXTRA_FILES: "README.md LICENSE.txt"
permissions:
contents: write
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: '1.24.3'
- name: Install UPX
run: sudo apt-get install -y upx
- name: Determine version and commit
id: vars
run: |
VERSION=$(git describe --tags --abbrev=0 2>/dev/null || echo "${{ env.RELEASE }}")
COMMIT=$(git rev-parse --short HEAD)
echo "VERSION=$VERSION" >> $GITHUB_OUTPUT
echo "COMMIT=$COMMIT" >> $GITHUB_OUTPUT
- name: Build for all platforms
run: |
set -e
mkdir -p "${{ env.DIST_DIR }}"
build_target() {
GOOS=$1
GOARCH=$2
EXT=$3 # ".exe" for Windows, empty otherwise
SUFFIX=$4 # Optional suffix for folder/archive names
OUTPUT_DIR="${{ env.DIST_DIR }}/${GOOS}${SUFFIX:+-$SUFFIX}"
ARCHIVE_FILE="${{ env.DIST_DIR }}/${{ env.PROJECT_NAME }}-${GOOS}${SUFFIX:+-$SUFFIX}"
OUTPUT_FILE="${OUTPUT_DIR}/${{ env.PROJECT_NAME }}${EXT}"
echo "▶️ Building for $GOOS/$GOARCH"
mkdir -p "$OUTPUT_DIR"
CGO_ENABLED=0 GOOS=$GOOS GOARCH=$GOARCH \
go build -ldflags="-s -w -X main.Version=${{ steps.vars.outputs.VERSION }} -X main.Build=${{ steps.vars.outputs.VERSION }} -a -extldflags '-static'" \
-o "$OUTPUT_FILE"
# Strip binary (best-effort, not arch-specific)
strip "$OUTPUT_FILE" || true
# Compress with UPX if available
upx --best --lzma --brute "$OUTPUT_FILE" || true
# Add extra files
FILES_TO_ARCHIVE=("$OUTPUT_FILE")
for FILE in ${{ env.EXTRA_FILES }}; do
if [[ -f "$FILE" ]]; then
FILES_TO_ARCHIVE+=("$FILE")
fi
done
zip -j -r "${ARCHIVE_FILE}.zip" "${FILES_TO_ARCHIVE[@]}"
shasum -a 256 "${ARCHIVE_FILE}.zip" >> "${{ env.DIST_DIR }}/digests.txt"
echo "✅ Built and archived ${ARCHIVE_FILE}.zip"
}
# Linux: amd64 + arm64
build_target linux amd64 "" "amd64"
build_target linux arm64 "" "arm64"
# macOS: arm64 (no suffix)
build_target darwin arm64 "" ""
# Windows: amd64
build_target windows amd64 ".exe" ""
- name: Upload assets to GitHub Release
uses: softprops/action-gh-release@v2
if: startsWith(github.ref, 'refs/tags/')
with:
files: |
${{ env.DIST_DIR }}/*.zip
${{ env.DIST_DIR }}/digests.txt