Commit f1efc4a6 authored by Auto Backup's avatar Auto Backup

feat: 调整流水线参数配置

- appConfigName 默认值改为 standard
- SysName 默认值改为 operation_platform
- AGENT_LABEL 默认值改为 ljgWinMachine
- NODE_WORKING_DIR 和 BRANCH_NAME 等路径调整
parent e5ace154
// 新增带返回值的跨平台 PowerShell 执行函数 // 新增带返回值的跨平台 PowerShell 执行函数
def runPowerShellWithOutput(script) { def runPowerShellWithOutput(script) {
try { try {
if (isUnix()) { if (isUnix()) {
// Unix 系统使用 sh 执行命令 // Unix 系统使用 sh 执行命令
return sh(script: "${script}", returnStdout: true).trim() return sh(script: "${script}", returnStdout: true).trim()
...@@ -27,7 +27,7 @@ def runPowerShellWithOutput(script) { ...@@ -27,7 +27,7 @@ def runPowerShellWithOutput(script) {
*/ */
def executeGitLog(format, commitArg = '-1') { def executeGitLog(format, commitArg = '-1') {
def command = "git log ${commitArg} --pretty=${format}" def command = "git log ${commitArg} --pretty=${format}"
if (isUnix()) { if (isUnix()) {
// Unix 系统直接使用 sh,% 不需要转义 // Unix 系统直接使用 sh,% 不需要转义
return sh(script: command, returnStdout: true).trim() return sh(script: command, returnStdout: true).trim()
...@@ -51,20 +51,20 @@ def getGitCommitInfo(commitHash = '') { ...@@ -51,20 +51,20 @@ def getGitCommitInfo(commitHash = '') {
email: '', email: '',
bugId: '' bugId: ''
] ]
// 确定使用哪个 commit // 确定使用哪个 commit
def commitArg = commitHash ? "${commitHash}" : "-1" def commitArg = commitHash ? "${commitHash}" : "-1"
try { try {
// 使用统一的 executeGitLog 函数获取各项信息 // 使用统一的 executeGitLog 函数获取各项信息
result.author = executeGitLog('%an', commitArg) result.author = executeGitLog('%an', commitArg)
result.message = executeGitLog('%B', commitArg) result.message = executeGitLog('%B', commitArg)
result.email = executeGitLog('%ae', commitArg) result.email = executeGitLog('%ae', commitArg)
// 提取 Bug ID // 提取 Bug ID
def matcher = (result.message =~ /#[0-9]+/) def matcher = (result.message =~ /#[0-9]+/)
result.bugId = matcher ? matcher[0] : "未关联Bug" result.bugId = matcher ? matcher[0] : "未关联Bug"
} catch (Exception e) { } catch (Exception e) {
echo "获取 Git 提交信息失败: ${e.message}" echo "获取 Git 提交信息失败: ${e.message}"
result.author = "未知提交人" result.author = "未知提交人"
...@@ -72,7 +72,7 @@ def getGitCommitInfo(commitHash = '') { ...@@ -72,7 +72,7 @@ def getGitCommitInfo(commitHash = '') {
result.email = "unknown@example.com" result.email = "unknown@example.com"
result.bugId = "未关联Bug" result.bugId = "未关联Bug"
} }
return result return result
} }
...@@ -81,7 +81,7 @@ def getGitCommitInfo(commitHash = '') { ...@@ -81,7 +81,7 @@ def getGitCommitInfo(commitHash = '') {
// // 使用 Cron 表达式,实现极其精准的控制 // // 使用 Cron 表达式,实现极其精准的控制
// // 例如:每 2 分钟扫描一次分支变动 // // 例如:每 2 分钟扫描一次分支变动
// // parameterizedCron('H/2 * * * *'), // // parameterizedCron('H/2 * * * *'),
// // 或者使用特定的扫描触发器 // // 或者使用特定的扫描触发器
// // 这里的 '2' 代表分钟,你可以随意改成任何数字 // // 这里的 '2' 代表分钟,你可以随意改成任何数字
// cron('H/1 * * * *') // cron('H/1 * * * *')
...@@ -90,24 +90,24 @@ def getGitCommitInfo(commitHash = '') { ...@@ -90,24 +90,24 @@ def getGitCommitInfo(commitHash = '') {
pipeline { pipeline {
// 全局变量定义 // 变量名 = "值" (中间不要有空行或乱放的注释) // 全局变量定义 // 变量名 = "值" (中间不要有空行或乱放的注释)
// environment { // environment {
// GIT_EXE = 'D:\\Git\\bin\\git.exe' // GIT_EXE = 'D:\\Git\\bin\\git.exe'
// NODE_HOME = 'C:\\Program Files\\nodejs' // NODE_HOME = 'C:\\Program Files\\nodejs'
// } // }
parameters { parameters {
string(name: 'appConfigName', defaultValue: 'dh', description: 'Description for appConfigName eg:standard , dh ,xgm') string(name: 'appConfigName', defaultValue: 'standard', description: 'Description for appConfigName eg:standard , dh ,xgm')
string(name: 'SysName', defaultValue: 'report_tool', description: 'Description for SysName:operation_platform,report_tool ') string(name: 'SysName', defaultValue: 'operation_platform', description: 'Description for SysName:operation_platform,report_tool ')
string(name: 'webapps', defaultValue: 'unknown', description: 'Description for audit webapps') string(name: 'webapps', defaultValue: 'unknown', description: 'Description for audit webapps')
string(name: 'avg', defaultValue: 'report', description: 'Description for npm run build:avg 参数') string(name: 'avg', defaultValue: '', description: 'Description for npm run build:avg 参数')
string( string(
name: 'AGENT_LABEL', name: 'AGENT_LABEL',
defaultValue: 'windowsPackageMachine', defaultValue: 'ljgWinMachine',
description: '输入 agent 节点 (可选:ljgWinMachine or lzxWinMachine)' description: '输入 agent 节点 (可选:ljgWinMachine or lzxWinMachine)'
) )
string(name: 'NODE_WORKING_DIR', defaultValue: 'G:\\cpas-framework', description: 'electron打包脚本执行的工作目录 G:\\cpas-framework') string(name: 'NODE_WORKING_DIR', defaultValue: 'C:\Users\Administrator\Desktop\youdatasumCode\framework', description: 'electron打包脚本执行的工作目录 G:\\cpas-framework')
string(name: 'BRANCH_NAME', defaultValue: 'release-report-060320', description: '要构建的分支名称') string(name: 'BRANCH_NAME', defaultValue: 'unknown', description: '要构建的分支名称')
string(name: 'INSTALLATION_DIR', defaultValue: '', description: '安装包打包目录:E:/CPAS6-101 UFCPAS6.0 致同智审IAS版_测试版') string(name: 'INSTALLATION_DIR', defaultValue: '', description: '安装包打包目录:E:/CPAS6-101 UFCPAS6.0 致同智审IAS版_测试版')
string(name: 'PUBLISH_DIR', defaultValue: 'E:/产品安装包/05 大客户专版/109 致同/CPAS6.0 IAS版', description: '发布目录:E:/产品安装包/05 大客户专版/109 致同/CPAS6.0 IAS版') string(name: 'PUBLISH_DIR', defaultValue: 'E:/产品安装包/05 大客户专版/109 致同/CPAS6.0 IAS版', description: '发布目录:E:/产品安装包/05 大客户专版/109 致同/CPAS6.0 IAS版')
} }
...@@ -125,33 +125,33 @@ pipeline { ...@@ -125,33 +125,33 @@ pipeline {
def commitId = env.GIT_COMMIT ?: "未知Commit" // 优先使用 env.GIT_COMMIT 获取最新的 Commit ID 和相关信息 def commitId = env.GIT_COMMIT ?: "未知Commit" // 优先使用 env.GIT_COMMIT 获取最新的 Commit ID 和相关信息
def actionType = "SKIP1" // 默认不执行 def actionType = "SKIP1" // 默认不执行
echo "webapps: ${params.webapps}" echo "webapps: ${params.webapps}"
// --- 优先级 1: 检查 Tag --- // --- 优先级 1: 检查 Tag ---
// 1. 自动识别是 Tag 还是 分支 // // 1. 自动识别是 Tag 还是 分支 //
if (env.TAG_NAME) { if (env.TAG_NAME) {
echo "检测到发布标签: ${env.TAG_NAME},准备打包正式版镜像..." echo "检测到发布标签: ${env.TAG_NAME},准备打包正式版镜像..."
// 执行构建逻辑 // 执行构建逻辑
actionType = "TAG_RELEASE" actionType = "TAG_RELEASE"
// runPowerShellWithOutput("node ./scripts/build.js --cpasBusiness ${params.cpasBusiness} --framework ${params.framework} --cpasUi ${params.cpasUi} --avg ${params.avg} --commitId ${commitId}") // runPowerShellWithOutput("node ./scripts/build.js --cpasBusiness ${params.cpasBusiness} --framework ${params.framework} --cpasUi ${params.cpasUi} --avg ${params.avg} --commitId ${commitId}")
} }
// --- 优先级 2: 检查 Commit Message --- // --- 优先级 2: 检查 Commit Message ---
else { else {
// 2. 抓取 Commit 信息(使用统一函数) // 2. 抓取 Commit 信息(使用统一函数)
def branch = env.BRANCH_NAME ?: '' // 若 env.BRANCH_NAME 为 null,则转为空字符串 def branch = env.BRANCH_NAME ?: '' // 若 env.BRANCH_NAME 为 null,则转为空字符串
echo "当前分支: ${branch}" echo "当前分支: ${branch}"
def gitInfo = getGitCommitInfo() def gitInfo = getGitCommitInfo()
def commitMsg = gitInfo.message def commitMsg = gitInfo.message
if (commitMsg.contains("[deploy]") ||commitMsg.contains("[部署]") || commitMsg.contains("[发布]") ) { if (commitMsg.contains("[deploy]") ||commitMsg.contains("[部署]") || commitMsg.contains("[发布]") ) {
echo "🚀 [高优先级] 检测到 [deploy] 关键字,执行强制构建..." echo "🚀 [高优先级] 检测到 [deploy] 关键字,执行强制构建..."
actionType = "FORCE_DEPLOY" actionType = "FORCE_DEPLOY"
} }
// --- 优先级 3: 检查分支 --- // --- 优先级 3: 检查分支 ---
// --- 优先级 3: Release 分支判断 (正则匹配 release/*) --- // --- 优先级 3: Release 分支判断 (正则匹配 release/*) ---
// 使用 ==~ 进行全匹配,或者 .startsWith() // 使用 ==~ 进行全匹配,或者 .startsWith()
else if (env.BRANCH_NAME ==~ /release.*/) { else if (env.BRANCH_NAME ==~ /release.*/) {
echo "🛡️ 检测到发布分支: ${env.BRANCH_NAME},准备进行预发布构建..." echo "🛡️ 检测到发布分支: ${env.BRANCH_NAME},准备进行预发布构建..."
actionType = "PRE_RELEASE" actionType = "PRE_RELEASE"
} }
...@@ -160,7 +160,7 @@ pipeline { ...@@ -160,7 +160,7 @@ pipeline {
actionType = "REGULAR_BUILD" actionType = "REGULAR_BUILD"
echo "🔍 检测到核心分支: ${env.BRANCH_NAME},执行常规构建..." echo "🔍 检测到核心分支: ${env.BRANCH_NAME},执行常规构建..."
} }
} }
...@@ -179,22 +179,22 @@ pipeline { ...@@ -179,22 +179,22 @@ pipeline {
if (params.avg) { if (params.avg) {
buildParams += " --avg=${params.avg}" buildParams += " --avg=${params.avg}"
} }
if (params.BRANCH_NAME) { if (params.BRANCH_NAME && params.BRANCH_NAME = "unknown") {
buildParams += " --branch=${params.BRANCH_NAME}" buildParams += " --branch=${params.BRANCH_NAME}"
} }
// 执行你的 Node.js 构建脚本 // 执行你的 Node.js 构建脚本
// 注意:${params.xxx} 建议加上 trim() 防止空格报错 // 注意:${params.xxx} 建议加上 trim() 防止空格报错
// 处理 webapps 参数并执行 S3 下载 // 处理 webapps 参数并执行 S3 下载
if (params.webapps != "unknown") { if (params.webapps != "unknown") {
echo "检测到 webapps 参数: ${params.webapps},准备执行 S3 下载..." echo "检测到 webapps 参数: ${params.webapps},准备执行 S3 下载..."
// 构建参数字符串 // 构建参数字符串
buildParams += " --webapps=${params.webapps} " buildParams += " --webapps=${params.webapps} "
echo "执行构建参数:node ./BuildScripts/ai-build.js ${buildParams}" echo "执行构建参数:node ./BuildScripts/ai-build.js ${buildParams}"
// 执行 AI 构建脚本 // 执行 AI 构建脚本
def buildResult = runPowerShellWithOutput("cd \"${params.NODE_WORKING_DIR}\"; node ./BuildScripts/ai-build.js ${buildParams}") def buildResult = runPowerShellWithOutput("cd \"${params.NODE_WORKING_DIR}\"; node ./BuildScripts/ai-build.js ${buildParams}")
echo "AI 构建脚本执行结果: ${buildResult}" echo "AI 构建脚本执行结果: ${buildResult}"
...@@ -203,9 +203,9 @@ pipeline { ...@@ -203,9 +203,9 @@ pipeline {
echo "执行构建参数: ${buildParams}" echo "执行构建参数: ${buildParams}"
def buildResult = runPowerShellWithOutput("cd \"${params.NODE_WORKING_DIR}\" ; node ./BuildScripts/ai-build.js ${buildParams}") def buildResult = runPowerShellWithOutput("cd \"${params.NODE_WORKING_DIR}\" ; node ./BuildScripts/ai-build.js ${buildParams}")
echo "AI 构建脚本执行结果: ${buildResult}" echo "AI 构建脚本执行结果: ${buildResult}"
} }
// 如果提供了 INSTALLATION_DIR,则执行安装包构建 // 如果提供了 INSTALLATION_DIR,则执行安装包构建
if (params.INSTALLATION_DIR && params.INSTALLATION_DIR.trim()) { if (params.INSTALLATION_DIR && params.INSTALLATION_DIR.trim()) {
echo "检测到 INSTALLATION_DIR 参数: ${params.INSTALLATION_DIR},执行安装包构建..." echo "检测到 INSTALLATION_DIR 参数: ${params.INSTALLATION_DIR},执行安装包构建..."
...@@ -213,16 +213,16 @@ pipeline { ...@@ -213,16 +213,16 @@ pipeline {
def installBuildResult = runPowerShellWithOutput("node ./build.js --dest \"${params.INSTALLATION_DIR}\" --src \"${srcDir}\"") def installBuildResult = runPowerShellWithOutput("node ./build.js --dest \"${params.INSTALLATION_DIR}\" --src \"${srcDir}\"")
echo "安装包构建结果: ${installBuildResult}" echo "安装包构建结果: ${installBuildResult}"
} }
} else { } else {
echo "⏹️ 决策结论: 无需构建,正在跳过..." echo "⏹️ 决策结论: 无需构建,正在跳过..."
currentBuild.result = 'SUCCESS' currentBuild.result = 'SUCCESS'
} }
} catch (Exception e) { } catch (Exception e) {
echo "AI 自动决策中心发生错误: ${e.message}" echo "AI 自动决策中心发生错误: ${e.message}"
currentBuild.result = 'FAILURE' currentBuild.result = 'FAILURE'
...@@ -231,7 +231,7 @@ pipeline { ...@@ -231,7 +231,7 @@ pipeline {
// 执行下游项目 // 执行下游项目
} }
} }
} }
post { post {
...@@ -240,10 +240,10 @@ pipeline { ...@@ -240,10 +240,10 @@ pipeline {
try { try {
// 优先使用 env.GIT_COMMIT 获取最新的 Commit ID // 优先使用 env.GIT_COMMIT 获取最新的 Commit ID
def commitId = env.GIT_COMMIT ?: "未知Commit" def commitId = env.GIT_COMMIT ?: "未知Commit"
// 使用统一函数获取 Git 提交信息 // 使用统一函数获取 Git 提交信息
def gitInfo = getGitCommitInfo(commitId) def gitInfo = getGitCommitInfo(commitId)
echo "--- 自动决策中心报告 ---" echo "--- 自动决策中心报告 ---"
echo "提交信息: ${gitInfo.message}" echo "提交信息: ${gitInfo.message}"
echo "关联任务: ${gitInfo.bugId}" echo "关联任务: ${gitInfo.bugId}"
...@@ -253,7 +253,7 @@ pipeline { ...@@ -253,7 +253,7 @@ pipeline {
if (gitInfo.bugId != "未关联Bug") { if (gitInfo.bugId != "未关联Bug") {
echo "检测到 Bug 修复任务,准备执行回归测试..." echo "检测到 Bug 修复任务,准备执行回归测试..."
} }
// 使用dingtalk插件提供的指令,Cpas6Package 是你在系统设置里定义的 ID,(这个一定不能改重要) // 使用dingtalk插件提供的指令,Cpas6Package 是你在系统设置里定义的 ID,(这个一定不能改重要)
/* dingtalk ( /* dingtalk (
robot: 'Cpas6Package', robot: 'Cpas6Package',
...@@ -292,4 +292,4 @@ pipeline { ...@@ -292,4 +292,4 @@ pipeline {
} }
} }
} }
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment