测试CICD
This commit is contained in:
68
.github/workflows/logic_CI.yml
vendored
68
.github/workflows/logic_CI.yml
vendored
@@ -3,29 +3,25 @@ name: Go Build & Release
|
|||||||
on:
|
on:
|
||||||
workflow_dispatch: # 仅支持手动触发
|
workflow_dispatch: # 仅支持手动触发
|
||||||
inputs:
|
inputs:
|
||||||
releaseVersion: # 手动输入版本号(可选,默认自动生成)
|
servicePort: # 手动设置服务启动端口(必填)
|
||||||
description: '自定义Release版本号(如 v1.0.2)'
|
description: '服务启动序号'
|
||||||
required: false
|
required: true
|
||||||
type: string
|
type: number
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
# 准备版本号(优先使用手动输入,否则自动生成)
|
# 生成随机版本号(8位字母数字,作为screen会话名核心标识)
|
||||||
prepare-version:
|
prepare-version:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
outputs:
|
outputs:
|
||||||
build_version: ${{ steps.set-version.outputs.version }}
|
build_version: ${{ steps.set-random-version.outputs.version }}
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Set build version
|
- name: Set random build version
|
||||||
id: set-version
|
id: set-random-version
|
||||||
run: |
|
run: |
|
||||||
# 如果手动输入了版本号,则使用输入值;否则自动生成
|
# 生成8位随机字母数字(大小写混合),确保版本与会话名唯一性
|
||||||
if [ -n "${{ github.event.inputs.releaseVersion }}" ]; then
|
RANDOM_SUFFIX=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 8 | head -n 1)
|
||||||
echo "version=${{ github.event.inputs.releaseVersion }}" >> $GITHUB_OUTPUT
|
echo "version=v$RANDOM_SUFFIX" >> $GITHUB_OUTPUT
|
||||||
else
|
|
||||||
# 自动生成格式:vYYYYMMDD-HHMMSS(带v前缀符合Release规范)
|
|
||||||
echo "version=v$(date +'%Y%m%d-%H%M%S')" >> $GITHUB_OUTPUT
|
|
||||||
fi
|
|
||||||
|
|
||||||
build:
|
build:
|
||||||
needs: prepare-version
|
needs: prepare-version
|
||||||
@@ -57,21 +53,40 @@ jobs:
|
|||||||
name: logic_${{ needs.prepare-version.outputs.build_version }}
|
name: logic_${{ needs.prepare-version.outputs.build_version }}
|
||||||
path: ./public/logic_${{ needs.prepare-version.outputs.build_version }}
|
path: ./public/logic_${{ needs.prepare-version.outputs.build_version }}
|
||||||
|
|
||||||
- name: 推送到服务器
|
- name: 推送到服务器并通过screen启动服务(会话名无端口)
|
||||||
uses: easingthemes/ssh-deploy@main
|
uses: easingthemes/ssh-deploy@main
|
||||||
env:
|
env:
|
||||||
SSH_PRIVATE_KEY: ${{ secrets.BLAZING }}
|
SSH_PRIVATE_KEY: ${{ secrets.BLAZING }}
|
||||||
REMOTE_HOST: "82.23.177.97"
|
REMOTE_HOST: "122.10.117.123"
|
||||||
REMOTE_USER: "root"
|
REMOTE_USER: "root"
|
||||||
SOURCE: "public/"
|
SOURCE: "public/"
|
||||||
TARGET: "/home/"
|
TARGET: "/home/"
|
||||||
ARGS: "-avz --chown=git:git"
|
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 "管理命令:"
|
||||||
|
echo " - 进入会话:screen -r $SCREEN_NAME"
|
||||||
|
echo " - 查看所有会话:screen -ls"
|
||||||
|
echo " - 停止服务:screen -S $SCREEN_NAME -X quit"
|
||||||
|
echo "======================================"
|
||||||
|
|
||||||
# 自动创建GitHub Release
|
# 自动创建GitHub Release(同步会话名与端口关联关系)
|
||||||
create-release:
|
create-release:
|
||||||
needs: [prepare-version, build]
|
needs: [prepare-version, build]
|
||||||
permissions:
|
permissions:
|
||||||
contents: write # 必须的Release创建权限
|
contents: write
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
@@ -84,13 +99,16 @@ jobs:
|
|||||||
- name: Create GitHub Release
|
- name: Create GitHub Release
|
||||||
uses: softprops/action-gh-release@v1
|
uses: softprops/action-gh-release@v1
|
||||||
with:
|
with:
|
||||||
tag_name: ${{ needs.prepare-version.outputs.build_version }} # 标签名=版本号
|
tag_name: ${{ needs.prepare-version.outputs.build_version }}
|
||||||
name: Release ${{ needs.prepare-version.outputs.build_version }} # Release标题
|
name: Release ${{ needs.prepare-version.outputs.build_version }}
|
||||||
body: |
|
body: |
|
||||||
## 自动构建发布
|
## 自动构建发布
|
||||||
- 版本号: ${{ needs.prepare-version.outputs.build_version }}
|
- 版本号: ${{ needs.prepare-version.outputs.build_version }}
|
||||||
- 触发方式: 手动触发
|
- 触发方式: 手动触发
|
||||||
- 构建时间: ${{ github.event.repository.updated_at }}
|
- 服务端口: ${{ github.event.inputs.servicePort }}
|
||||||
files: ./public/logic_${{ needs.prepare-version.outputs.build_version }} # 上传构建产物
|
- Screen会话名: logic-${{ needs.prepare-version.outputs.build_version }}
|
||||||
draft: false # 直接发布,不存草稿
|
- 可执行文件: logic_${{ needs.prepare-version.outputs.build_version }}
|
||||||
prerelease: false # 标记为正式版本
|
- 启动命令: ./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
|
||||||
|
|||||||
Reference in New Issue
Block a user