Files
file-transfer-go/.github/workflows/release-modern.yml
2025-08-07 14:28:16 +08:00

170 lines
4.8 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
name: Build and Release (Modern)
on:
push:
tags:
- 'v*.*.*' # 当推送 v1.0.0 格式的标签时触发
workflow_dispatch: # 手动触发
inputs:
version:
description: 'Release version (e.g., v1.0.0)'
required: true
default: 'v1.0.0'
env:
GO_VERSION: '1.21'
NODE_VERSION: '18'
jobs:
build-and-release:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: ${{ env.GO_VERSION }}
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- name: Set up Yarn
run: |
corepack enable
yarn --version
- name: Cache Go modules
uses: actions/cache@v4
with:
path: |
~/go/pkg/mod
~/.cache/go-build
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: Cache Node modules
uses: actions/cache@v4
with:
path: |
chuan-next/node_modules
chuan-next/.next/cache
key: ${{ runner.os }}-node-${{ hashFiles('chuan-next/yarn.lock') }}
restore-keys: |
${{ runner.os }}-node-
- name: Install Go dependencies
run: |
go mod download
go mod tidy
- name: Install Node.js dependencies
run: |
cd chuan-next
yarn install --frozen-lockfile
- name: Run tests
run: |
go test -v ./...
- name: Build application
run: |
chmod +x build-fullstack.sh
./build-fullstack.sh
- name: Create checksums
run: |
cd dist
for file in *; do
sha256sum "$file" > "$file.sha256"
done
- name: Determine version
id: version
run: |
if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
echo "version=${{ github.event.inputs.version }}" >> $GITHUB_OUTPUT
else
echo "version=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
fi
- name: Get build date
id: build_date
run: echo "date=$(date -u +'%Y-%m-%d %H:%M:%S UTC')" >> $GITHUB_OUTPUT
- name: Create Release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ steps.version.outputs.version }}
name: File Transfer Server ${{ steps.version.outputs.version }}
body: |
## 文件快传 ${{ steps.version.outputs.version }}
🚀 **新版本发布**
### 📦 下载说明
选择适合你的操作系统的版本:
- **Windows**: `file-transfer-server.exe`
- **macOS (Intel)**: `file-transfer-server-macos-amd64`
- **macOS (Apple Silicon)**: `file-transfer-server-macos-arm64`
- **Linux (x64)**: `file-transfer-server-linux-amd64`
- **Linux (ARM64)**: `file-transfer-server-linux-arm64`
### 🛠️ 使用方法
1. 下载对应平台的二进制文件
2. 给文件添加执行权限Linux/macOS: `chmod +x 文件名`
3. 运行: `./文件名` 或直接双击Windows
4. 访问: http://localhost:8080
### ✨ 特性
- ✅ 前端界面完全嵌入,单文件部署
- ✅ 静态编译,无外部依赖
- ✅ 支持多平台部署
- ✅ 支持文件和文本传输
- ✅ WebRTC 点对点传输
- ✅ 实时状态同步
### 🔐 校验和
每个二进制文件都附带了 SHA256 校验和文件(.sha256用于验证文件完整性。
---
📅 构建时间: ${{ steps.build_date.outputs.date }}
🏗️ 构建环境: GitHub Actions
files: |
dist/file-transfer-server.exe
dist/file-transfer-server.exe.sha256
dist/file-transfer-server-macos-amd64
dist/file-transfer-server-macos-amd64.sha256
dist/file-transfer-server-macos-arm64
dist/file-transfer-server-macos-arm64.sha256
dist/file-transfer-server-linux-amd64
dist/file-transfer-server-linux-amd64.sha256
dist/file-transfer-server-linux-arm64
dist/file-transfer-server-linux-arm64.sha256
draft: false
prerelease: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Show build summary
run: |
echo "🎉 Build completed successfully!"
echo "📦 Release: ${{ steps.version.outputs.version }}"
echo "🏗️ Built files:"
ls -lh dist/