测试CICD

This commit is contained in:
1
2025-10-05 07:29:35 +00:00
parent b93a4dd1a2
commit 315134c9b5

View File

@@ -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