Files
bl/.github/workflows/logic_CI.yml
昔念 aba34e2500 ```
chore(ci): 更新GitHub Actions工作流配置

- 添加push触发器,仅在main分支上自动触发
- 为servicePort输入添加默认值8080
- 将Go版本从1.20升级到1.25
- 添加七牛云上传功能,将构建产物上传到CDN
- 注释掉SSH部署到服务器的步骤,改为CDN分发
- 在发布说明中添加七牛云下载链接

chore(vscode): 更新Go构建配置

- 禁用zcli功能
- 启用stripSymbols以减小构建产物体积
- 启用trimPath以优化构建路径
```
2026-01-06 22:17:32 +08:00

132 lines
4.9 KiB
Go
Raw 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: Go Build & Release
on:
push:
branches:
- main
workflow_dispatch:
inputs:
servicePort:
description: '服务启动端口'
required: true
default: 8080
type: number
jobs:
prepare-version:
runs-on: ubuntu-latest
outputs:
build_version: ${{ steps.set-hash-version.outputs.version }}
steps:
- uses: actions/checkout@v4
- name: Set commit hash as version
id: set-hash-version
run: |
COMMIT_HASH=$(git rev-parse --short=8 HEAD)
echo "version=v$COMMIT_HASH" >> $GITHUB_OUTPUT
build:
needs: prepare-version
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: 缓存Go依赖
uses: actions/cache@v3
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.mod') }}
restore-keys: |
${{ runner.os }}-go-
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: '1.25'
- name: 编译logic服务
run: go build -o ./logic_${{ needs.prepare-version.outputs.build_version }} -v ./logic
# 移除了public目录直接在当前目录生成可执行文件
- name: 上传到七牛云
uses: luochongfei/up2qn@master
with:
bucket: ${{ secrets.QINIU_BUCKET_NAME }}
zone: "z2"
access_key: ${{ secrets.QINIU_AK }}
secret_key: ${{ secrets.QINIU_SK }}
local_dir: .
local_exclude: "**/*.go|**/go.mod|**/go.sum"
target_dir: releases/
target_file: "logic_${{ needs.prepare-version.outputs.build_version }}"
- name: Upload Build Artifact
uses: actions/upload-artifact@v4
with:
name: logic_${{ needs.prepare-version.outputs.build_version }}
path: ./logic_${{ needs.prepare-version.outputs.build_version }}
# 直接上传可执行文件
# - name: 推送到服务器并通过screen启动服务
# uses: easingthemes/ssh-deploy@main
# env:
# SSH_PRIVATE_KEY: ${{ secrets.BLAZING }}
# REMOTE_HOST: "125.208.20.223"
# REMOTE_PORT: 22916
# REMOTE_USER: "root"
# SOURCE: "logic_${{ needs.prepare-version.outputs.build_version }}" # 只指定可执行文件作为源
# TARGET: "/home/"
# ARGS: "-avz --chown=git:git" # 保持权限参数
# SCRIPT_AFTER: |
# SCREEN_NAME="logic-${{ needs.prepare-version.outputs.build_version }}"
# screen -S $SCREEN_NAME -X quit 2>/dev/null || true
# screen -dmS $SCREEN_NAME /home/logic_${{ needs.prepare-version.outputs.build_version }} -port=${{ github.event.inputs.servicePort }}
# echo "======================================"
# echo "服务启动成功!"
# echo "Screen会话名$SCREEN_NAME"
# echo "服务端口:${{ github.event.inputs.servicePort }}"
# echo "对应Commit${{ github.sha }}"
# echo "七牛云下载地址: https://${{ secrets.QINIU_CDN_DOMAIN }}/releases/logic_${{ needs.prepare-version.outputs.build_version }}"
# echo "管理命令:"
# echo " - 进入会话screen -r $SCREEN_NAME"
# echo " - 查看所有会话screen -ls"
# echo " - 停止服务screen -S $SCREEN_NAME -X quit"
# echo "======================================"
create-release:
needs: [prepare-version, build]
permissions:
contents: write
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4 # 需要重新拉取代码以获取编译产物
- name: 下载构建产物
uses: actions/download-artifact@v4
with:
name: logic_${{ needs.prepare-version.outputs.build_version }}
path: . # 下载到当前目录
- name: Create GitHub Release
uses: softprops/action-gh-release@v1
with:
tag_name: ${{ needs.prepare-version.outputs.build_version }}
name: Release ${{ needs.prepare-version.outputs.build_version }}
body: |
## 自动构建发布
- 版本号: ${{ needs.prepare-version.outputs.build_version }}
- 触发方式: 手动触发
- 服务端口: ${{ github.event.inputs.servicePort }}
- Screen会话名: logic-${{ needs.prepare-version.outputs.build_version }}
- 对应Commit: ${{ github.sha }}
- 可执行文件: logic_${{ needs.prepare-version.outputs.build_version }}
- 启动命令: ./logic_${{ needs.prepare-version.outputs.build_version }} -port=${{ github.event.inputs.servicePort }}
- 七牛云下载地址: https://${{ secrets.QINIU_CDN_DOMAIN }}/releases/logic_${{ needs.prepare-version.outputs.build_version }}
files: logic_${{ needs.prepare-version.outputs.build_version }} # 只上传可执行文件
draft: false
prerelease: false