feat(workflow): 优化logic服务CI流程 - 简化编译步骤,移除不必要的mkdir操作 - 将上传七牛云的方式从第三方action改为使用qshell命令行工具 - 添加qshell下载、配置和文件上传的完整流程 - 保持构建产物上传到GitHub Actions artifacts ```
132 lines
5.0 KiB
Go
132 lines
5.0 KiB
Go
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
|
||
|
||
- name: 上传到七牛云
|
||
run: |
|
||
# 下载 qshell
|
||
wget -q https://github.com/qiniu/qshell/releases/download/v2.9.0/qshell-v2.9.0-linux-amd64.tar.gz
|
||
tar -zxf qshell-v2.9.0-linux-amd64.tar.gz
|
||
chmod +x qshell-v2.9.0-linux-amd64
|
||
|
||
# 配置账号
|
||
./qshell-v2.9.0-linux-amd64 account ${{ secrets.QINIU_AK }} ${{ secrets.QINIU_SK }}
|
||
|
||
# 上传文件 (z2 区域使用 up-z2.qiniup.com)
|
||
FILE_NAME="logic_${{ needs.prepare-version.outputs.build_version }}"
|
||
./qshell-v2.9.0-linux-amd64 fput ${{ secrets.QINIU_BUCKET_NAME }} releases/${FILE_NAME} ./${FILE_NAME} true
|
||
|
||
- 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
|