Merge remote-tracking branch 'origin/main'
All checks were successful
Build Multi-Platform Binaries / build-frontend (push) Successful in 1m12s
Build Multi-Platform Binaries / build-binaries (amd64, darwin, server, false) (push) Successful in 1m25s
Build Multi-Platform Binaries / build-binaries (amd64, linux, client, true) (push) Successful in 47s
Build Multi-Platform Binaries / build-binaries (amd64, linux, server, true) (push) Successful in 56s
Build Multi-Platform Binaries / build-binaries (amd64, windows, client, true) (push) Successful in 43s
Build Multi-Platform Binaries / build-binaries (amd64, windows, server, true) (push) Successful in 55s
Build Multi-Platform Binaries / build-binaries (arm, 7, linux, client, true) (push) Successful in 48s
Build Multi-Platform Binaries / build-binaries (arm, 7, linux, server, true) (push) Successful in 1m4s
Build Multi-Platform Binaries / build-binaries (arm64, darwin, server, false) (push) Successful in 49s
Build Multi-Platform Binaries / build-binaries (arm64, linux, client, true) (push) Successful in 44s
Build Multi-Platform Binaries / build-binaries (arm64, linux, server, true) (push) Successful in 1m27s
Build Multi-Platform Binaries / build-binaries (arm64, windows, server, false) (push) Successful in 50s
All checks were successful
Build Multi-Platform Binaries / build-frontend (push) Successful in 1m12s
Build Multi-Platform Binaries / build-binaries (amd64, darwin, server, false) (push) Successful in 1m25s
Build Multi-Platform Binaries / build-binaries (amd64, linux, client, true) (push) Successful in 47s
Build Multi-Platform Binaries / build-binaries (amd64, linux, server, true) (push) Successful in 56s
Build Multi-Platform Binaries / build-binaries (amd64, windows, client, true) (push) Successful in 43s
Build Multi-Platform Binaries / build-binaries (amd64, windows, server, true) (push) Successful in 55s
Build Multi-Platform Binaries / build-binaries (arm, 7, linux, client, true) (push) Successful in 48s
Build Multi-Platform Binaries / build-binaries (arm, 7, linux, server, true) (push) Successful in 1m4s
Build Multi-Platform Binaries / build-binaries (arm64, darwin, server, false) (push) Successful in 49s
Build Multi-Platform Binaries / build-binaries (arm64, linux, client, true) (push) Successful in 44s
Build Multi-Platform Binaries / build-binaries (arm64, linux, server, true) (push) Successful in 1m27s
Build Multi-Platform Binaries / build-binaries (arm64, windows, server, false) (push) Successful in 50s
This commit is contained in:
182
.gitea/workflows/Create Release.yml
Normal file
182
.gitea/workflows/Create Release.yml
Normal file
@@ -0,0 +1,182 @@
|
|||||||
|
name: Create Release
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
version:
|
||||||
|
description: 'Release version (e.g., v1.0.0)'
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
release_notes:
|
||||||
|
description: 'Release notes (optional)'
|
||||||
|
required: false
|
||||||
|
type: string
|
||||||
|
prerelease:
|
||||||
|
description: 'Is this a pre-release?'
|
||||||
|
required: false
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
|
draft:
|
||||||
|
description: 'Create as draft?'
|
||||||
|
required: false
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
create-release:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Validate version format
|
||||||
|
run: |
|
||||||
|
VERSION="${{ inputs.version }}"
|
||||||
|
if [[ ! $VERSION =~ ^v[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z0-9.]+)?$ ]]; then
|
||||||
|
echo "Error: Version must be in format vX.Y.Z or vX.Y.Z-suffix"
|
||||||
|
echo "Examples: v1.0.0, v2.1.3, v1.0.0-beta.1"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "Version format is valid: $VERSION"
|
||||||
|
|
||||||
|
- name: Check if tag exists
|
||||||
|
id: check_tag
|
||||||
|
run: |
|
||||||
|
if git rev-parse "${{ inputs.version }}" >/dev/null 2>&1; then
|
||||||
|
echo "exists=true" >> $GITHUB_OUTPUT
|
||||||
|
echo "Tag ${{ inputs.version }} already exists"
|
||||||
|
else
|
||||||
|
echo "exists=false" >> $GITHUB_OUTPUT
|
||||||
|
echo "Tag ${{ inputs.version }} does not exist, will create it"
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Setup Go
|
||||||
|
uses: actions/setup-go@v5
|
||||||
|
with:
|
||||||
|
go-version: '1.24'
|
||||||
|
cache: true
|
||||||
|
|
||||||
|
- name: Build all platforms
|
||||||
|
run: |
|
||||||
|
mkdir -p dist
|
||||||
|
VERSION="${{ inputs.version }}"
|
||||||
|
LDFLAGS="-s -w -X main.Version=${VERSION}"
|
||||||
|
|
||||||
|
echo "Building for all platforms with version ${VERSION}..."
|
||||||
|
|
||||||
|
# Linux amd64
|
||||||
|
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="${LDFLAGS}" \
|
||||||
|
-o dist/gotunnel-server-linux-amd64 ./cmd/server
|
||||||
|
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="${LDFLAGS}" \
|
||||||
|
-o dist/gotunnel-client-linux-amd64 ./cmd/client
|
||||||
|
|
||||||
|
# Linux arm64
|
||||||
|
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -ldflags="${LDFLAGS}" \
|
||||||
|
-o dist/gotunnel-server-linux-arm64 ./cmd/server
|
||||||
|
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -ldflags="${LDFLAGS}" \
|
||||||
|
-o dist/gotunnel-client-linux-arm64 ./cmd/client
|
||||||
|
|
||||||
|
# Darwin amd64
|
||||||
|
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -ldflags="${LDFLAGS}" \
|
||||||
|
-o dist/gotunnel-server-darwin-amd64 ./cmd/server
|
||||||
|
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -ldflags="${LDFLAGS}" \
|
||||||
|
-o dist/gotunnel-client-darwin-amd64 ./cmd/client
|
||||||
|
|
||||||
|
# Darwin arm64
|
||||||
|
CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -ldflags="${LDFLAGS}" \
|
||||||
|
-o dist/gotunnel-server-darwin-arm64 ./cmd/server
|
||||||
|
CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -ldflags="${LDFLAGS}" \
|
||||||
|
-o dist/gotunnel-client-darwin-arm64 ./cmd/client
|
||||||
|
|
||||||
|
# Windows amd64
|
||||||
|
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -ldflags="${LDFLAGS}" \
|
||||||
|
-o dist/gotunnel-server-windows-amd64.exe ./cmd/server
|
||||||
|
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -ldflags="${LDFLAGS}" \
|
||||||
|
-o dist/gotunnel-client-windows-amd64.exe ./cmd/client
|
||||||
|
|
||||||
|
- name: Generate checksums
|
||||||
|
run: |
|
||||||
|
cd dist
|
||||||
|
sha256sum * > SHA256SUMS
|
||||||
|
cat SHA256SUMS
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
- name: Create compressed archives
|
||||||
|
run: |
|
||||||
|
cd dist
|
||||||
|
VERSION="${{ inputs.version }}"
|
||||||
|
|
||||||
|
# Linux
|
||||||
|
tar -czf gotunnel-server-${VERSION}-linux-amd64.tar.gz gotunnel-server-linux-amd64
|
||||||
|
tar -czf gotunnel-client-${VERSION}-linux-amd64.tar.gz gotunnel-client-linux-amd64
|
||||||
|
tar -czf gotunnel-server-${VERSION}-linux-arm64.tar.gz gotunnel-server-linux-arm64
|
||||||
|
tar -czf gotunnel-client-${VERSION}-linux-arm64.tar.gz gotunnel-client-linux-arm64
|
||||||
|
|
||||||
|
# Darwin
|
||||||
|
tar -czf gotunnel-server-${VERSION}-darwin-amd64.tar.gz gotunnel-server-darwin-amd64
|
||||||
|
tar -czf gotunnel-client-${VERSION}-darwin-amd64.tar.gz gotunnel-client-darwin-amd64
|
||||||
|
tar -czf gotunnel-server-${VERSION}-darwin-arm64.tar.gz gotunnel-server-darwin-arm64
|
||||||
|
tar -czf gotunnel-client-${VERSION}-darwin-arm64.tar.gz gotunnel-client-darwin-arm64
|
||||||
|
|
||||||
|
# Windows
|
||||||
|
zip gotunnel-server-${VERSION}-windows-amd64.zip gotunnel-server-windows-amd64.exe
|
||||||
|
zip gotunnel-client-${VERSION}-windows-amd64.zip gotunnel-client-windows-amd64.exe
|
||||||
|
|
||||||
|
# Clean up raw binaries
|
||||||
|
rm gotunnel-server-* gotunnel-client-* 2>/dev/null || true
|
||||||
|
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
- name: List release assets
|
||||||
|
run: |
|
||||||
|
echo "Release assets to be uploaded:"
|
||||||
|
ls -lah dist/
|
||||||
|
|
||||||
|
- name: Create tag
|
||||||
|
if: steps.check_tag.outputs.exists == 'false'
|
||||||
|
run: |
|
||||||
|
git config user.name "github-actions[bot]"
|
||||||
|
git config user.email "github-actions[bot]@users.noreply.github.com"
|
||||||
|
git tag -a ${{ inputs.version }} -m "Release ${{ inputs.version }}"
|
||||||
|
git push origin ${{ inputs.version }}
|
||||||
|
|
||||||
|
- name: Prepare release notes
|
||||||
|
id: release_notes
|
||||||
|
run: |
|
||||||
|
if [ -n "${{ inputs.release_notes }}" ]; then
|
||||||
|
echo "${{ inputs.release_notes }}" > release_notes.md
|
||||||
|
else
|
||||||
|
echo "Release ${{ inputs.version }}" > release_notes.md
|
||||||
|
echo "" >> release_notes.md
|
||||||
|
echo "## Assets" >> release_notes.md
|
||||||
|
echo "" >> release_notes.md
|
||||||
|
echo "Download the appropriate binary for your platform:" >> release_notes.md
|
||||||
|
echo "" >> release_notes.md
|
||||||
|
echo "- **Linux (amd64/arm64)**: \`.tar.gz\` files" >> release_notes.md
|
||||||
|
echo "- **macOS (amd64/arm64)**: \`.tar.gz\` files" >> release_notes.md
|
||||||
|
echo "- **Windows (amd64)**: \`.zip\` files" >> release_notes.md
|
||||||
|
echo "" >> release_notes.md
|
||||||
|
echo "Verify downloads with \`SHA256SUMS\`" >> release_notes.md
|
||||||
|
fi
|
||||||
|
cat release_notes.md
|
||||||
|
|
||||||
|
- name: Create Release
|
||||||
|
uses: softprops/action-gh-release@v1
|
||||||
|
with:
|
||||||
|
tag_name: ${{ inputs.version }}
|
||||||
|
name: Release ${{ inputs.version }}
|
||||||
|
body_path: release_notes.md
|
||||||
|
files: |
|
||||||
|
dist/*.tar.gz
|
||||||
|
dist/*.zip
|
||||||
|
dist/SHA256SUMS
|
||||||
|
draft: ${{ inputs.draft }}
|
||||||
|
prerelease: ${{ inputs.prerelease }}
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Release created successfully
|
||||||
|
run: |
|
||||||
|
echo "✅ Release ${{ inputs.version }} created successfully!"
|
||||||
|
echo "🔗 View it at: ${{ github.server_url }}/${{ github.repository }}/releases/tag/${{ inputs.version }}"
|
||||||
Reference in New Issue
Block a user