feat(jenkins): 添加 sdk-bugcollect-plugin 模块支持

- 新增 MOD_BUGCOLLECT_PLUGIN 参数用于控制插件发布
- 配置环境变量映射以支持插件模块
- 实现版本属性共享机制,插件与 bugcollect 模块共用版本号
- 优化版本发布逻辑,支持多模块统一版本管理
- 区分构建任务,插件模块无需执行 assembleRelease 任务
- 添加构建流程控制,避免空模块构建报错
这个提交包含在:
XuqmGroup 2026-06-17 18:21:40 +08:00
父节点 ae2ba91e57
当前提交 4e422aa1c1

27
Jenkinsfile vendored
查看文件

@ -18,6 +18,7 @@ pipeline {
booleanParam(name: 'MOD_WEBVIEW', defaultValue: false, description: '发布 sdk-webview') booleanParam(name: 'MOD_WEBVIEW', defaultValue: false, description: '发布 sdk-webview')
booleanParam(name: 'MOD_LICENSE', defaultValue: false, description: '发布 sdk-license') booleanParam(name: 'MOD_LICENSE', defaultValue: false, description: '发布 sdk-license')
booleanParam(name: 'MOD_BUGCOLLECT', defaultValue: false, description: '发布 sdk-bugcollect') booleanParam(name: 'MOD_BUGCOLLECT', defaultValue: false, description: '发布 sdk-bugcollect')
booleanParam(name: 'MOD_BUGCOLLECT_PLUGIN', defaultValue: false, description: '发布 sdk-bugcollect-plugin (Gradle 插件)')
} }
environment { environment {
@ -42,6 +43,7 @@ pipeline {
'sdk-webview': params.MOD_WEBVIEW, 'sdk-webview': params.MOD_WEBVIEW,
'sdk-license': params.MOD_LICENSE, 'sdk-license': params.MOD_LICENSE,
'sdk-bugcollect': params.MOD_BUGCOLLECT, 'sdk-bugcollect': params.MOD_BUGCOLLECT,
'sdk-bugcollect-plugin': params.MOD_BUGCOLLECT_PLUGIN,
] ]
def resolved = moduleChecks.findAll { k, v -> v }.collect { k, v -> k } def resolved = moduleChecks.findAll { k, v -> v }.collect { k, v -> k }
if (resolved.isEmpty()) { if (resolved.isEmpty()) {
@ -85,11 +87,17 @@ pipeline {
} }
def modules = env.PUBLISH_MODULES.split(',').toList() def modules = env.PUBLISH_MODULES.split(',').toList()
// sdk-bugcollect-plugin 与 sdk-bugcollect 共享 SDK_BUGCOLLECT_VERSION
def propNameByModule = modules.collectEntries { mod ->
def propName = mod == 'sdk-bugcollect-plugin' ? 'SDK_BUGCOLLECT_VERSION' : "SDK_${mod.replace('sdk-', '').toUpperCase()}_VERSION"
[mod, propName]
}
def uniquePropNames = propNameByModule.values().toUnique()
def versionArgs = [] def versionArgs = []
def publishedVersions = [] def publishedVersions = []
for (mod in modules) { for (propName in uniquePropNames) {
def propName = "SDK_${mod.replace('sdk-', '').toUpperCase()}_VERSION"
def currentVer = getProp(propName) ?: getProp('PUBLISH_VERSION') ?: '0.1.0' def currentVer = getProp(propName) ?: getProp('PUBLISH_VERSION') ?: '0.1.0'
// 去掉已有的 -SNAPSHOT 后缀,取基础版本号 // 去掉已有的 -SNAPSHOT 后缀,取基础版本号
def baseVer = currentVer.replaceAll(/-SNAPSHOT$/, '') def baseVer = currentVer.replaceAll(/-SNAPSHOT$/, '')
@ -98,16 +106,17 @@ pipeline {
if (params.SNAPSHOT) { if (params.SNAPSHOT) {
// SNAPSHOT基础版本 + -SNAPSHOT,不写回 gradle.properties // SNAPSHOT基础版本 + -SNAPSHOT,不写回 gradle.properties
newVer = baseVer + '-SNAPSHOT' newVer = baseVer + '-SNAPSHOT'
echo "SNAPSHOT: ${mod} → ${newVer}" echo "SNAPSHOT: ${propName} → ${newVer}"
} else { } else {
// Release升级版本号,写回 gradle.properties // Release升级版本号,写回 gradle.properties
newVer = bumpVersion(baseVer) newVer = bumpVersion(baseVer)
setProp(propName, newVer) setProp(propName, newVer)
echo "Release: ${mod}: ${currentVer} → ${newVer}" echo "Release: ${propName}: ${currentVer} → ${newVer}"
} }
versionArgs.add("-P${propName}=${newVer}") versionArgs.add("-P${propName}=${newVer}")
publishedVersions.add("${mod}: ${currentVer} → ${newVer}") def moduleNames = propNameByModule.findAll { it.value == propName }.collect { it.key }.join(',')
publishedVersions.add("${moduleNames}: ${currentVer} → ${newVer}")
} }
if (!params.SNAPSHOT) { if (!params.SNAPSHOT) {
@ -124,11 +133,17 @@ pipeline {
steps { steps {
script { script {
def modules = env.PUBLISH_MODULES.split(',').toList() def modules = env.PUBLISH_MODULES.split(',').toList()
def moduleTasks = modules.collect { ":${it}:assembleRelease" }.join(' ') // sdk-bugcollect-plugin 是 JVM Gradle 插件,没有 assembleRelease 任务
def aarModules = modules.findAll { it != 'sdk-bugcollect-plugin' }
if (aarModules.isEmpty()) {
echo "没有 AAR 模块需要构建"
} else {
def moduleTasks = aarModules.collect { ":${it}:assembleRelease" }.join(' ')
bat "gradlew.bat ${moduleTasks} ${env.VERSION_ARGS} --no-daemon" bat "gradlew.bat ${moduleTasks} ${env.VERSION_ARGS} --no-daemon"
} }
} }
} }
}
stage('Publish to Nexus') { stage('Publish to Nexus') {
steps { steps {