Files
bl/.github/workflows/logic_CI.yml
2025-10-05 07:35:26 +00:00

110 lines
3.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:
workflow_dispatch:
inputs:
servicePort:
description: '服务启动端口'
required: true
type: number
jobs:
prepare-version:
runs-on: ubuntu-latest
outputs:
build_version: ${{ steps.set-hash-version.outputs.version }}
steps:
- uses: actions/checkout@v4 # 需要拉取代码才能获取commit hash
- name: Set commit hash as version
id: set-hash-version
run: |
# 取前8位commit hash作为版本核心标识
COMMIT_HASH=$(git rev-parse --short=8 HEAD)
echo "version=v$COMMIT_HASH" >> $GITHUB_OUTPUT # 格式vabc12345
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.20'
- name: 编译logic服务
run: go build -o ./public/logic_${{ needs.prepare-version.outputs.build_version }} -v ./logic
- name: Upload Build Artifact
uses: actions/upload-artifact@v4
with:
name: logic_${{ needs.prepare-version.outputs.build_version }}
path: ./public/logic_${{ needs.prepare-version.outputs.build_version }}
- name: 推送到服务器并通过screen启动服务
uses: easingthemes/ssh-deploy@main
env:
SSH_PRIVATE_KEY: ${{ secrets.BLAZING }}
REMOTE_HOST: "122.10.117.123"
REMOTE_USER: "root"
SOURCE: "public/"
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 "管理命令:"
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:
- name: Download build artifact
uses: actions/download-artifact@v4
with:
name: logic_${{ needs.prepare-version.outputs.build_version }}
path: ./public
- 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 }} # 关联完整commit hash
- 可执行文件: logic_${{ needs.prepare-version.outputs.build_version }}
- 启动命令: ./logic_${{ needs.prepare-version.outputs.build_version }} -port=${{ github.event.inputs.servicePort }}
files: ./public/logic_${{ needs.prepare-version.outputs.build_version }}
draft: false
prerelease: false