使用Jenkins从Git构建IBM ODM RuleApp并上传Nexus相关问题咨询
ODM RuleApp构建相关问题解答
1. 配置文件存放与配置项有效性问题
- 配置文件不需要强制放在Git项目根目录,你当前的ODM目录是Decision Service和Java XOM的父目录的话,直接把配置文件放在ODM目录下完全可行,只要配置文件里的路径用相对路径(相对于配置文件自身的存放位置)能正确指向对应的项目、XOM jar包即可,这种方式也方便统一管理ODM相关的所有资源,建议直接提交到Git的ODM目录下同步管理。
- 你没有扩展模型的话,给出的4行配置已经满足基础构建要求,需要注意两个细节:
- 路径如果包含空格(比如示例里的
Hello Main Service、XOM jars),最好用引号把路径包起来,避免命令行解析路径出错 - 确认
dep参数的值和你Decision Service里创建的部署配置名称完全一致,大小写也不能错,否则会找不到部署配置导致构建失败。
- 路径如果包含空格(比如示例里的
2. 构建命令与Jenkins、Nexus对接问题
2.a rules-compiler.jar存放位置
两种方案可选,可根据实际场景选择:
- 方案一:存放在Jenkins构建节点的固定全局路径,比如
/opt/ibm-odm/tools/rules-compiler.jar,所有构建任务共用这个jar包,不需要提交到Git,避免Git仓库体积过大 - 方案二:如果要保证多节点构建环境完全一致,也可以把这个jar包放在Git的ODM/tools目录下提交,直接用相对路径调用即可。
2.b 配置文件调用与存放位置
Jenkins直接拉取Git代码后,调用的就是你提交到Git里的.properties文件,不需要强制放在根目录,只要在Jenkins执行构建命令的时候,-config参数后面的路径写对配置文件在Jenkins工作空间里的相对/绝对路径即可,比如你把配置文件放在ODM/config目录下,那参数就写-config ./ODM/config/CustomRuleModel.properties即可正常调用。
2.c 输出文件夹位置与上传Nexus方法
- 输出文件夹的位置由你配置文件里的
output参数决定,是相对于配置文件所在路径的相对路径,比如你配置文件放在ODM目录下,output写的是../HelloWorld/output,那最终生成的RuleApp jar包就会在Jenkins工作空间的HelloWorld/output目录下。 - Jenkins上传到Nexus的操作有两种常用方式,不需要复杂配置:
- 用Maven上传的话,直接执行
mvn deploy:deploy-file命令即可,示例命令:
mvn deploy:deploy-file \ -DgroupId=com.yourcompany.odm \ -DartifactId=hello-ruleapp \ -Dversion=1.0.0 \ -Dpackaging=jar \ -Dfile=./HelloWorld/output/HelloRuleApp.jar \ -Durl=http://你的nexus地址/repository/odm-releases/ \ -DrepositoryId=nexus-odm- 不用Maven的话,直接用curl命令上传,示例命令:
curl -v -u 你的nexus账号:你的nexus密码 \ --upload-file ./HelloWorld/output/HelloRuleApp.jar \ http://你的nexus地址/repository/odm-releases/com/yourcompany/odm/hello-ruleapp/1.0.0/hello-ruleapp-1.0.0.jar - 用Maven上传的话,直接执行
2.d Jenkins配置与Nexus对接配置
- Jenkins构建ODM RuleApp需要的配置:
- 构建节点安装JDK8及以上版本,符合ODM 8.10的运行要求
- 配置Git凭证,能正常拉取你的项目代码
- 构建步骤里先执行Git拉取代码,再执行构建命令,示例:
cd ./ODM java -jar /opt/ibm-odm/tools/rules-compiler.jar -config ./CustomRuleModel.properties- 配置构建后步骤执行上述上传Nexus的命令即可。
- 对接Nexus的特殊配置:
- 如果用Maven上传的话,需要在Jenkins节点的
~/.m2/settings.xml里配置nexus的账号密码,server的id要和上传命令里的repositoryId保持一致 - 如果用curl上传的话,建议把nexus的账号密码存在Jenkins的凭证管理里,用变量调用,不要明文写在构建命令里,避免泄露
- 提前在Nexus里创建好专门存放ODM RuleApp的仓库,类型选
maven2(hosted)即可,版本策略根据你的需求选Release或者Snapshot。
- 如果用Maven上传的话,需要在Jenkins节点的
内容的提问来源于stack exchange,提问作者KayWe
相关产品推荐
相关产品推荐

