mirror of
https://github.com/cheikh2shift/godex.git
synced 2026-10-22 02:53:24 -05:00
130 lines
4.2 KiB
YAML
130 lines
4.2 KiB
YAML
name: Release
|
|
|
|
on:
|
|
push:
|
|
tags:
|
|
- 'v*'
|
|
|
|
permissions:
|
|
contents: write
|
|
|
|
jobs:
|
|
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-file: go.mod
|
|
|
|
- name: Install X11 dev library
|
|
run: sudo apt-get update && sudo apt-get install -y libx11-dev
|
|
|
|
- name: Run tests
|
|
run: go test -short ./...
|
|
|
|
- name: Get tag
|
|
id: get_tag
|
|
run: echo "TAG=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
|
|
|
|
- name: Generate changelog
|
|
id: changelog
|
|
run: |
|
|
PREV_TAG=$(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || echo "")
|
|
if [ -n "$PREV_TAG" ]; then
|
|
CHANGES=$(git log --pretty=format:"- %s (%h)" $PREV_TAG..HEAD)
|
|
else
|
|
CHANGES=$(git log --pretty=format:"- %s (%h)" --max-count=50)
|
|
fi
|
|
echo "CHANGES<<EOF" >> $GITHUB_OUTPUT
|
|
echo "$CHANGES" >> $GITHUB_OUTPUT
|
|
echo "EOF" >> $GITHUB_OUTPUT
|
|
|
|
- name: Build Linux AMD64
|
|
env:
|
|
GOOS: linux
|
|
GOARCH: amd64
|
|
CGO_ENABLED: 1
|
|
TAG: ${{ steps.get_tag.outputs.TAG }}
|
|
run: |
|
|
go build -ldflags="-s -w -X main.version=${TAG} -X main.buildTime=$(date -u +"%Y-%m-%d_%H:%M:%S")" -o godex-linux-amd64 ./cmd/godex
|
|
|
|
- name: Build Linux ARM64
|
|
env:
|
|
GOOS: linux
|
|
GOARCH: arm64
|
|
CGO_ENABLED: 0
|
|
TAG: ${{ steps.get_tag.outputs.TAG }}
|
|
run: |
|
|
go build -ldflags="-s -w -X main.version=${TAG} -X main.buildTime=$(date -u +"%Y-%m-%d_%H:%M:%S")" -o godex-linux-arm64 ./cmd/godex
|
|
|
|
- name: Build macOS AMD64
|
|
env:
|
|
GOOS: darwin
|
|
GOARCH: amd64
|
|
CGO_ENABLED: 0
|
|
TAG: ${{ steps.get_tag.outputs.TAG }}
|
|
run: |
|
|
go build -ldflags="-s -w -X main.version=${TAG} -X main.buildTime=$(date -u +"%Y-%m-%d_%H:%M:%S")" -o godex-darwin-amd64 ./cmd/godex
|
|
|
|
- name: Build macOS ARM64
|
|
env:
|
|
GOOS: darwin
|
|
GOARCH: arm64
|
|
CGO_ENABLED: 0
|
|
TAG: ${{ steps.get_tag.outputs.TAG }}
|
|
run: |
|
|
go build -ldflags="-s -w -X main.version=${TAG} -X main.buildTime=$(date -u +"%Y-%m-%d_%H:%M:%S")" -o godex-darwin-arm64 ./cmd/godex
|
|
|
|
- name: Build Windows AMD64
|
|
env:
|
|
GOOS: windows
|
|
GOARCH: amd64
|
|
CGO_ENABLED: 0
|
|
TAG: ${{ steps.get_tag.outputs.TAG }}
|
|
run: |
|
|
go build -ldflags="-s -w -X main.version=${TAG} -X main.buildTime=$(date -u +"%Y-%m-%d_%H:%M:%S")" -o godex-windows-amd64.exe ./cmd/godex
|
|
|
|
- name: Generate SHA256 checksums
|
|
run: |
|
|
sha256sum godex-linux-amd64 > godex-linux-amd64.sha256
|
|
sha256sum godex-linux-arm64 > godex-linux-arm64.sha256
|
|
sha256sum godex-darwin-amd64 > godex-darwin-amd64.sha256
|
|
sha256sum godex-darwin-arm64 > godex-darwin-arm64.sha256
|
|
sha256sum godex-windows-amd64.exe > godex-windows-amd64.exe.sha256
|
|
|
|
- name: Create Release
|
|
uses: softprops/action-gh-release@v1
|
|
with:
|
|
tag_name: ${{ steps.get_tag.outputs.TAG }}
|
|
name: Release ${{ steps.get_tag.outputs.TAG }}
|
|
body: |
|
|
## Changes
|
|
${{ steps.changelog.outputs.CHANGES }}
|
|
|
|
## Installation
|
|
Download the appropriate binary for your platform and run the install script:
|
|
```bash
|
|
curl -sSL https://raw.githubusercontent.com/${{ github.repository }}/main/install.sh | sh
|
|
```
|
|
|
|
## Verification
|
|
Each binary includes a SHA256 checksum file for verification.
|
|
files: |
|
|
godex-linux-amd64
|
|
godex-linux-amd64.sha256
|
|
godex-linux-arm64
|
|
godex-linux-arm64.sha256
|
|
godex-darwin-amd64
|
|
godex-darwin-amd64.sha256
|
|
godex-darwin-arm64
|
|
godex-darwin-arm64.sha256
|
|
godex-windows-amd64.exe
|
|
godex-windows-amd64.exe.sha256
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |