Jenkins常见问题问答录(一)

2024-05-18 08:18:23 浏览数 (3)

问题1:Jenkins和Docker怎么结合?

参考:Jenkins和Docker结合可以将容器作为Jenkins的slave节点,有很多优点。比如实现执行环境的统一,slave的自动创建和销毁,免去了人工维护环境的成本等。

问题2:写pipeline时,两个stage,第一个随机指定一台机器运行,第二个需要跟第一个在同一台机器上,有什么办法来做吗?

参考:设置全局agent,每个stage不单独指定agent即可。

问题3:项目在Windows和Linux上各编译一部分,然后把Windows上的产物合并到Linux上,如何处理?

参考:可以考虑编译机器固定,或者产物都放到一个固定存放机器,再拿回来。

问题4:Pipeline和Jenkins传统类型的任务比有什么优点?

参考:Pipeline一个是单个任务可以多节点,另外代码可以复用,比图形界面点击有效率。配置变成代码了,就可以进行版本化控制,便于管理。

问题5:启动Pipeline的时候,希望能够只检出Jenkinsfile文件。

参考:如果说有这种特殊需求,建议把Jenkinsfile单独放到一个git库里管理,不和应用源码放一起。

问题6:Blue Ocean和Jenkins是什么关系?

参考:通俗理解,Blue Ocean可以看作是Jenkins推出的新的UI界面,有更现代的外观和更好的交互。

当然最重要的还是对Jenkins 2.x推出的新的流水线任务类型的支持,可以清晰展示整个流水线(Pipeline)各个阶段(stage)的串并行关系和状态。

Blue Ocean是以插件的形式实现的,只要在Jenkins插件中心安装“Blue Ocean”插件即可。安装之后在经典UI界面,点击左侧的“打开 Blue Ocean”来访问新界面。

问题7:在共享库里面写的stage,能不能显示在Blue Ocean的界面上?

参考:可以。

问题8:怎么看Jenkins上的Groovy版本?比如我登录服务器,可以执行groovy --version来看服务器安装的Groovy版本。

参考:可以在${JENKINS_HOME}/war/WEB-INF/lib目录下面找到groovy对应的jar包。jar包名称上可以看到版本号。

问题9:Jenkins pipeline在一个stage里面执行bat指令,里面set一个变量,有办法在下一个stage的bat指令里获取这个变量的吗?通过groovy插值可以在bat里面获取groovy定义的变量,但能保存bat里面的变量到groovy吗?

参考:set定义的变量,本次bat命令结束生命周期就结束了,无法在下一个stage的bat命令里获取。就算是同一个stage,分开写2个bat命令,后一句也不能获取到前一句定义的变量值。这种情况,建议先将需要的信息写入到文件,再从文件中读取。如果两个stage在不同的节点上执行,中间再加一步归档文件的操作即可。

问题10:有没有python的库可以操作jenkins?

参考:有两个。一个叫python-jenkins,一个叫jenkinsapi。前者老一点,后者新一些。可以根据自己的爱好和功能需求选择合适的。还有一个jenkinsclient是整合了上述两个库开发的Jenkins命令行客户端,可以通过命令行方式操作Jenkins服务器,功能强大,支持多实例。

代码语言:javascript复制
https://pypi.org/project/python-jenkins/
https://pypi.org/project/jenkinsapi/
https://pypi.org/project/jenkinsclient

1 人点赞