68 lines
1.9 KiB
YAML
68 lines
1.9 KiB
YAML
name: Build Linux Binary
|
|
|
|
on:
|
|
push:
|
|
branches: [ main, master ]
|
|
tags:
|
|
- 'v*'
|
|
workflow_dispatch:
|
|
inputs:
|
|
version:
|
|
description: 'Version to build (leave empty for auto)'
|
|
required: false
|
|
type: string
|
|
|
|
permissions:
|
|
contents: write
|
|
|
|
jobs:
|
|
build:
|
|
name: Build Linux Binary
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Setup Go
|
|
uses: actions/setup-go@v5
|
|
with:
|
|
go-version: '1.23.3'
|
|
cache: true
|
|
|
|
- name: Build
|
|
env:
|
|
CGO_ENABLED: 0
|
|
GOOS: linux
|
|
GOARCH: amd64
|
|
run: |
|
|
VERSION=${{ github.event.inputs.version }}
|
|
if [ -z "$VERSION" ]; then
|
|
VERSION=$(git describe --tags --always --dirty)
|
|
fi
|
|
|
|
echo "Building ppanel-server $VERSION"
|
|
BUILD_TIME=$(date +"%Y-%m-%d %H:%M:%S")
|
|
LDFLAGS="-w -s -X github.com/perfect-panel/server/pkg/constant.Version=$VERSION -X github.com/perfect-panel/server/pkg/constant.BuildTime=${BUILD_TIME}"
|
|
go build -ldflags "${LDFLAGS}" -o ppanel-server ./ppanel.go
|
|
tar -czf ppanel-server-${VERSION}-linux-amd64.tar.gz ppanel-server
|
|
sha256sum ppanel-server ppanel-server-${VERSION}-linux-amd64.tar.gz > checksum.txt
|
|
|
|
- name: Upload artifacts
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: ppanel-server-linux-amd64
|
|
path: |
|
|
ppanel-server
|
|
ppanel-server-*-linux-amd64.tar.gz
|
|
checksum.txt
|
|
|
|
- name: Create Release
|
|
if: startsWith(github.ref, 'refs/tags/')
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
run: |
|
|
VERSION=${GITHUB_REF#refs/tags/}
|
|
gh release create $VERSION --title "PPanel Server $VERSION" || true
|
|
gh release upload $VERSION ppanel-server-${VERSION}-linux-amd64.tar.gz checksum.txt
|