0
点赞
收藏
分享

微信扫一扫

Jenkins 中文社区技术交流微信群问题集之一


作者:翟志军

Jenkins 中文社区技术交流微信群问题集之一

群里讨论过的问题(使用方法、缺陷)太多,无法全部包含在一篇文章中


申明:下文中的问题是群友发起的,回答则是由笔者收集整理的。

1. 同一流水线,如何做某个阶段定时执行代码扫描

这个需求的意思是存在一条流水线,流水线中的阶段为:构建阶段 –> 代码扫描阶段 –> 发布测试环境阶段 –> … 而提问者希望当有代码提交时,就执行整条流水线。当到某个时间点时,就只执行扫描阶段。

回答一

当代码没有变化,我们为什么要重复执行扫描呢?

回答二

换成两个流水线,一个提交触发,一个定时触发

回答三

一条流水线加个开关设置是否跳过扫描。

2. 有人做过增量包构建么?

有人做过增量包构建么?问下要用哪些插件,怎么做? 经确认,提问人的需求是有一个代码仓库 x,然后 x 里有 a,b,c 三个模块,开发提交了 a 模块的代码,这时,只打包 a 模块的制品。

回答一

要做的是在流水线里判断提交代码中修改了哪个模块,然后执行你的 ant 命令指定构建某个模块就好了。代码 demo 如下:

pipeline{
agent any
stages{
stage('build a'){
when{
changeset "a/**"
}
steps{
echo "build a"
}
}
stage('build b'){
when{
changeset "b/**"
}
steps{
echo "build b"
}
}
}
}

回答二

增量包,四五年前我有过相关实践,构建工具也是 ant。记得当初是根据修改的文件路径,解析出 ant target 列表,然后根据事先声明好的依赖关系对它排序,然后执行 ant 构建命令,最后将生成的二进制包挑出来生成增量包,大致这么个思路。

3. post 里如何指定 agent

请教一下,jenkinsfile中 post里面可以指定agent吗?

回答

post {
always {
node('master') {
cleanWs()
}
}
}

笔者注:​​node('<node>')​​​ 中的 ​​<node>​​ 可以是 agent 节点名称,也可以是 agent 的标签。

4. windows 上 无法使用 curl

有些步骤是跑在 Windows 节点上,在 Windows 上又希望能发 http 请求。

回答

这时,应该使用 ​​HTTPRequest​​ 插件,它是平台无关的。

4. 怎么把 slave 的内容 copy 到 master 机器上?

因为比如我用有一个 windows 节点,然后我代码拉取后,需要进行一些测试,测试完成后生成数据和 HTML 报告,这部分测试全都在节点上完成,我想把测试完成后到数据发到 master 上,然后由 master 生成 html 报告

回答

不确定,我是否理解正确。可以考虑这样做,把你现在的事情分成两个阶段,阶段一在 windows 上测试,然后将数据和 html 报告上传到某个地方,阶段二,将数据和报告下载回来,比如下载到 master 上。接着,想干嘛就干嘛了。

5. httpRequest 如何发 POST 请求

回答

httpRequest authentication: credentialName, contentType: 'APPLICATION_JSON_UTF8', httpMode: 'POST', requestBody: """{"reportJson": "111","id": "111","executeNum": 111}""", responseHandle: 'LEAVE_OPEN', url: "http://127.0.0.1/echo"

6. 我仓库特多,怎么设计流水线

我的仓库一共有4个 分别存放 代码 战斗脚本 资源 协议。4个代码仓库各有3个分支 名字都是对应的,比如1号仓库分支 master develop production. 2号仓库 也是这几个分支 以此类推 我拉取代码进行打包的时候 会拉取 4个仓库名字都叫 master 的分支 或者名字都叫 develop 的分支进行打包 现在问题就出在 我拉取4分仓库都叫 master 的分支的时候 拉取完代码后 最后一个仓库的代码会把前个仓库的代码覆盖掉,后来有老哥给了建议 用 dir 分别存到 workspace 下的好几个目录 现在遇到的问题是 我多分支流水线第一次启动时,会把1号仓库的代码直接拉到 workspace 下 我的问题就是可以不可在多分支流水线第一次启动时,不要拉取代码

回答

建立一条流水线,接受 gitlab 触发,然后根据触发请求中的数据,决定拉取哪个代码仓库。参考 ​​Generic Webhook Trigger 插件​​。

7. 流水线中如何指定工作目录

pipeline 中怎么指定这个流水线的工作目录,我在开头定义 WORKSPACE 但是没用

回答


8. 如何在 pipeline 中使用第三方 jar 包

请教下 pipeline 需要引用第三方 jar 包时,要放在哪里才能被 import 进来啊,我放到 classpath 下还是不行,总是提示找不到包。在本地执行 groovy,impor t进来没有问题

回答

把 jar 包放到 tomcat 安装 jenkins 的目录下的 lib 里貌似能解决。

后记

如果读者朋友在使用 Jenkins 过程中也遇到各种问题,可关注Jenkins微信公众号

​​

Jenkins 中文社区技术交流微信群问题集之一_jar_02

​​


举报

相关推荐

0 条评论