Files
whatshooked/.github/workflows/release.yml
Hein bb9aa01519
Some checks failed
CI / Test (1.22) (push) Failing after -23m32s
CI / Test (1.23) (push) Failing after -23m16s
CI / Build (push) Successful in -23m47s
CI / Lint (push) Successful in -23m19s
Release fixes.
2025-12-29 10:26:50 +02:00

151 lines
5.3 KiB
YAML

name: Release
run-name: "Making Release"
on:
push:
tags:
- 'v*.*.*'
jobs:
build-and-release:
name: Build and Release
runs-on: ubuntu-latest
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: Get version from tag
id: get_version
run: |
echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
echo "Version: ${GITHUB_REF#refs/tags/}"
- name: Build binaries for multiple platforms
run: |
mkdir -p dist
# Build Server
# Linux AMD64
GOOS=linux GOARCH=amd64 go build -o dist/whatshook-server-linux-amd64 -ldflags "-X main.version=${{ steps.get_version.outputs.VERSION }}" ./cmd/server
# Linux ARM64
GOOS=linux GOARCH=arm64 go build -o dist/whatshook-server-linux-arm64 -ldflags "-X main.version=${{ steps.get_version.outputs.VERSION }}" ./cmd/server
# macOS AMD64
GOOS=darwin GOARCH=amd64 go build -o dist/whatshook-server-darwin-amd64 -ldflags "-X main.version=${{ steps.get_version.outputs.VERSION }}" ./cmd/server
# macOS ARM64 (Apple Silicon)
GOOS=darwin GOARCH=arm64 go build -o dist/whatshook-server-darwin-arm64 -ldflags "-X main.version=${{ steps.get_version.outputs.VERSION }}" ./cmd/server
# Windows AMD64
GOOS=windows GOARCH=amd64 go build -o dist/whatshook-server-windows-amd64.exe -ldflags "-X main.version=${{ steps.get_version.outputs.VERSION }}" ./cmd/server
# Build CLI
# Linux AMD64
GOOS=linux GOARCH=amd64 go build -o dist/whatshook-cli-linux-amd64 -ldflags "-X main.version=${{ steps.get_version.outputs.VERSION }}" ./cmd/cli
# Linux ARM64
GOOS=linux GOARCH=arm64 go build -o dist/whatshook-cli-linux-arm64 -ldflags "-X main.version=${{ steps.get_version.outputs.VERSION }}" ./cmd/cli
# macOS AMD64
GOOS=darwin GOARCH=amd64 go build -o dist/whatshook-cli-darwin-amd64 -ldflags "-X main.version=${{ steps.get_version.outputs.VERSION }}" ./cmd/cli
# macOS ARM64 (Apple Silicon)
GOOS=darwin GOARCH=arm64 go build -o dist/whatshook-cli-darwin-arm64 -ldflags "-X main.version=${{ steps.get_version.outputs.VERSION }}" ./cmd/cli
# Windows AMD64
GOOS=windows GOARCH=amd64 go build -o dist/whatshook-cli-windows-amd64.exe -ldflags "-X main.version=${{ steps.get_version.outputs.VERSION }}" ./cmd/cli
# Create checksums
cd dist
sha256sum * > checksums.txt
cd ..
- name: Generate release notes
id: release_notes
run: |
# Get the previous tag
previous_tag=$(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || echo "")
if [ -z "$previous_tag" ]; then
# No previous tag, get all commits
commits=$(git log --pretty=format:"- %s (%h)" --no-merges)
else
# Get commits since the previous tag
commits=$(git log "${previous_tag}..HEAD" --pretty=format:"- %s (%h)" --no-merges)
fi
# Create release notes
cat > release_notes.md << EOF
# Release ${{ steps.get_version.outputs.VERSION }}
## Changes
${commits}
## Installation
WhatsHooked provides two binaries:
- **Server**: The WhatsApp webhook server
- **CLI**: Command-line interface for managing the server
Download the appropriate binaries for your platform:
### Server
- **Linux (AMD64)**: \`whatshook-server-linux-amd64\`
- **Linux (ARM64)**: \`whatshook-server-linux-arm64\`
- **macOS (Intel)**: \`whatshook-server-darwin-amd64\`
- **macOS (Apple Silicon)**: \`whatshook-server-darwin-arm64\`
- **Windows (AMD64)**: \`whatshook-server-windows-amd64.exe\`
### CLI
- **Linux (AMD64)**: \`whatshook-cli-linux-amd64\`
- **Linux (ARM64)**: \`whatshook-cli-linux-arm64\`
- **macOS (Intel)**: \`whatshook-cli-darwin-amd64\`
- **macOS (Apple Silicon)**: \`whatshook-cli-darwin-arm64\`
- **Windows (AMD64)**: \`whatshook-cli-windows-amd64.exe\`
Make the binaries executable (Linux/macOS):
\`\`\`bash
chmod +x whatshook-*
\`\`\`
Verify downloads with the provided checksums.
EOF
- name: Create Release
uses: softprops/action-gh-release@v1
with:
body_path: release_notes.md
files: |
dist/whatshook-server-linux-amd64
dist/whatshook-server-linux-arm64
dist/whatshook-server-darwin-amd64
dist/whatshook-server-darwin-arm64
dist/whatshook-server-windows-amd64.exe
dist/whatshook-cli-linux-amd64
dist/whatshook-cli-linux-arm64
dist/whatshook-cli-darwin-amd64
dist/whatshook-cli-darwin-arm64
dist/whatshook-cli-windows-amd64.exe
dist/checksums.txt
draft: false
prerelease: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Summary
run: |
echo "Release ${{ steps.get_version.outputs.VERSION }} created successfully!"
echo "Binaries built for:"
echo " - Linux (amd64, arm64)"
echo " - macOS (amd64, arm64)"
echo " - Windows (amd64)"