cicd
This commit is contained in:
33
.github/workflows/logic_CI.yml
vendored
33
.github/workflows/logic_CI.yml
vendored
@@ -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 }}
|
||||
|
||||
Reference in New Issue
Block a user