From dc6a003cbc488a227c6ace47d9813c176e753a46 Mon Sep 17 00:00:00 2001 From: 1 <1@72wo.cn> Date: Sun, 5 Oct 2025 07:35:26 +0000 Subject: [PATCH] cicd --- .github/workflows/logic_CI.yml | 33 ++++++++++++++------------------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/.github/workflows/logic_CI.yml b/.github/workflows/logic_CI.yml index 79bf24300..9b950e63d 100644 --- a/.github/workflows/logic_CI.yml +++ b/.github/workflows/logic_CI.yml @@ -1,27 +1,28 @@ name: Go Build & Release on: - workflow_dispatch: # 仅支持手动触发 + workflow_dispatch: inputs: - servicePort: # 手动设置服务启动端口(必填) - description: '服务启动序号' + servicePort: + description: '服务启动端口' required: true type: number jobs: - # 生成随机版本号(8位字母数字,作为screen会话名核心标识) prepare-version: runs-on: ubuntu-latest outputs: - build_version: ${{ steps.set-random-version.outputs.version }} + build_version: ${{ steps.set-hash-version.outputs.version }} steps: - - name: Set random build version - id: set-random-version + - uses: actions/checkout@v4 # 需要拉取代码才能获取commit hash + + - name: Set commit hash as version + id: set-hash-version run: | - # 生成8位随机字母数字(大小写混合),确保版本与会话名唯一性 - RANDOM_SUFFIX=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 8 | head -n 1) - echo "version=v$RANDOM_SUFFIX" >> $GITHUB_OUTPUT + # 取前8位commit hash作为版本核心标识 + COMMIT_HASH=$(git rev-parse --short=8 HEAD) + echo "version=v$COMMIT_HASH" >> $GITHUB_OUTPUT # 格式:vabc12345 build: needs: prepare-version @@ -31,7 +32,6 @@ jobs: - uses: actions/checkout@v4 - name: 缓存Go依赖 - id: go-cache uses: actions/cache@v3 with: path: ~/go/pkg/mod @@ -53,7 +53,7 @@ jobs: name: logic_${{ needs.prepare-version.outputs.build_version }} path: ./public/logic_${{ needs.prepare-version.outputs.build_version }} - - name: 推送到服务器并通过screen启动服务(会话名无端口) + - name: 推送到服务器并通过screen启动服务 uses: easingthemes/ssh-deploy@main env: SSH_PRIVATE_KEY: ${{ secrets.BLAZING }} @@ -62,27 +62,21 @@ jobs: SOURCE: "public/" TARGET: "/home/" ARGS: "-avz --chown=git:git" - # 核心调整:会话名仅用随机版本号(格式:logic-{版本号},如 logic-v7aB9x2zF) SCRIPT_AFTER: | - # 定义screen会话名(仅含服务标识+随机版本号,无端口) SCREEN_NAME="logic-${{ needs.prepare-version.outputs.build_version }}" - # 停止同名旧会话(仅清理当前版本,不影响其他版本) screen -S $SCREEN_NAME -X quit 2>/dev/null || true - # 启动服务并传入-port参数 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 "对应版本:${{ needs.prepare-version.outputs.build_version }}" + echo "对应Commit:${{ github.sha }}" # 显示完整哈希 echo "管理命令:" echo " - 进入会话:screen -r $SCREEN_NAME" echo " - 查看所有会话:screen -ls" echo " - 停止服务:screen -S $SCREEN_NAME -X quit" echo "======================================" - # 自动创建GitHub Release(同步会话名与端口关联关系) create-release: needs: [prepare-version, build] permissions: @@ -107,6 +101,7 @@ jobs: - 触发方式: 手动触发 - 服务端口: ${{ 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 }}