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

将GitHub Action转为Jenkins Pipeline构建Quarkus原生镜像失败求助

问题描述

我正在将GitHub Action中通过Jib生成Quarkus原生镜像的逻辑迁移到Jenkins Pipeline,使用的Maven命令如下:

mvn package -Pnative -DskipTests -Dquarkus.native.container-build=true -Dquarkus.container-image.registry=10.3.2.92:5000 -Dquarkus.container-image.push=true -Dquarkus.container-image.image=${SERVICE_NAME}:${TAG_NAME} '-Dquarkus.jib.labels."org.opencontainers.image.revision"='${TAG_NAME}

但在Jenkins中执行该命令时失败,报错信息:

[2023-11-21T14:22:46.451Z] [ERROR]  [error]: Build step io.quarkus.container.image.deployment.ContainerImageProcessor#publishImageInfo threw an exception: java.lang.NullPointerException: Cannot invoke "String.contains(java.lang.CharSequence)" because "registry" is null

谷歌搜索后未找到有效解决办法,寻求帮助。

解决方法

1. 验证Jenkins环境变量传递

Jenkins环境变量的引用逻辑和GitHub Action存在差异,先确认${SERVICE_NAME}和${TAG_NAME}已在Pipeline中正确定义且可被读取,可在执行Maven命令前添加打印验证:

sh 'echo SERVICE_NAME: $SERVICE_NAME, TAG_NAME: $TAG_NAME'

2. 调整Jib标签参数的引号格式

Jenkins shell对引号转义的处理规则不同,原命令中标签参数的写法可能导致解析异常,尝试简化写法:

  • 直接省略引号:-Dquarkus.jib.labels.org.opencontainers.image.revision=${TAG_NAME}
  • 用单引号包裹标签键:-Dquarkus.jib.labels.'org.opencontainers.image.revision'=${TAG_NAME}

3. 拆分镜像参数,明确字段

避免在quarkus.container-image.image中同时指定镜像名和标签,拆分使用quarkus.container-image.name和quarkus.container-image.tag参数,确保Quarkus能正确解析registry信息:

mvn package -Pnative -DskipTests -Dquarkus.native.container-build=true \
  -Dquarkus.container-image.registry=10.3.2.92:5000 \
  -Dquarkus.container-image.push=true \
  -Dquarkus.container-image.name=${SERVICE_NAME} \
  -Dquarkus.container-image.tag=${TAG_NAME} \
  -Dquarkus.jib.labels.org.opencontainers.image.revision=${TAG_NAME}

4. 升级Quarkus Jib扩展版本

旧版本的Quarkus Jib扩展可能存在参数解析bug,尝试将Quarkus或Jib扩展升级到最新稳定版,修复兼容性问题。

5. 检查Jenkins节点的仓库访问权限

确保Jenkins执行节点能正常访问镜像仓库10.3.2.92:5000,可添加仓库登录测试步骤(需提前在Jenkins配置仓库账号密码凭据):

sh 'docker login 10.3.2.92:5000 -u $REGISTRY_USER -p $REGISTRY_PWD'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 17:07:19