You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins多模块Gradle项目构建配置:可选模块/全量构建传镜像

解决Jenkins多模块Gradle项目的单模块/全量构建问题

方案一:新增全量选项+Groovy脚本生成任务(推荐)

  1. 修改已有的Choice参数,在选项中添加all,让用户可以选择单个模块或全量构建
  2. 添加Execute system Groovy script构建步骤,通过脚本动态生成Gradle任务参数:
def targetProject = env.PROJECT
def gradleTasks = targetProject == "all" ? "clean build jib" : "${targetProject}:clean ${targetProject}:build ${targetProject}:jib"
env.GRADLE_TASKS = gradleTasks
  1. 在Invoke Gradle script步骤中,将Tasks字段设置为 ${GRADLE_TASKS},同时勾选"Use Gradle wrapper"确保环境一致

方案二:处理空参数+属性文件传递变量

如果你的Choice参数允许空值(默认空代表全量构建),可以用shell+属性文件传递变量:

  1. 添加Run shell command步骤,生成包含任务参数的属性文件:
if [ -z "$PROJECT" ]; then
    echo "GRADLE_TASKS=clean build jib" > gradle_tasks.properties
else
    echo "GRADLE_TASKS=$PROJECT:clean $PROJECT:build $PROJECT:jib" > gradle_tasks.properties
fi
  1. 添加Inject environment variables步骤,选择"Properties File Path",填写gradle_tasks.properties
  2. 在Invoke Gradle script步骤的Tasks字段中填入 ${GRADLE_TASKS}

为什么之前的shell变量无效?

Jenkins的每个shell步骤都是独立的进程,直接用export定义的变量无法跨步骤传递。必须通过属性文件、Groovy操作全局环境变量这类方式,才能让后续步骤读取到变量值。

内容的提问来源于stack exchange,提问作者Virkom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 22:11:05