jenkins插件Pipeline脚本jenkinsfile操作指南

前言

jenkins是一款流行的开源持续集成软件,插件丰富,扩展灵活。2.0后推出pipeline流式构建,支持构建任务脚本化。本文主要旨在使用jenkins 的pipeline功能完成java maven项目的打包,上传jar到目标服务器。pipeline推出时间不长,实际使用的不是很多,网上基本没啥参考资料,官方的文档很详细,但不成本文所述体系。这篇博文是博主摸索半天后的成果,如有错落,欢迎指出。

说明:本文环境默认包含组件:jenkins,maven,jdk

一,安装pipeline支持插件

到配置中心插件管理搜索如下插件,安装

pipeline maven integration plugin :执行withmaven方法支持,用于构建maven项目工程,使用方式如下图,详细说明见:https://wiki.jenkins.io/display/jenkins/pipeline+maven+plugin

ssh agent plugin :sshagent方法支持,用于上传构建产物到目标服务器,使用详情见:
https://wiki.jenkins.io/display/jenkins/ssh+agent+plugin,这边博主实操时有个大坑,后面说详细说明

二,创建流式item

如图

三,编写pipeline脚本

脚本分三个步骤块,分别是git clone(下载源码到本地),build(构建工程),deploy(上传构建产物到目标主机)

脚本如下:

如上脚本需要配置两个认证凭证,分别是git的credentialsid和sshagent的credentials,到配置管理credentials处添加,如图

git的认证比较简单,使用密码用户名验证,直接选username with password就好了,这里还有个技巧,后面会讲到。

sshagen测试下来只支持私钥,需要选择如下配置:

如图,使用了from the jenkins master ~./ssh,需要你到jenkins所在主机的.ssh目录,通过命令”ssh-keygen -t rsa“生成公私钥,生成时会询问你是否使用密码 加密,可以直接跳过,如果写了密码,那么上图中passphrase需要写上加密密码,没写就留空。然后将id_rsa.pub中的内容拷贝到目标主机的/root/.ssh/authorized_keys文件中。上图中的id可以指定,不指定会生成一个唯一字符串如:

这个id对应了pipeline脚本中的验证id,到此,我们准备工作都已经做完了。

添加运行参数

细心的你可能发现了脚本中有类似占位符。这些的代码,如${branch},${profile},其实就是pipeline的占位符,这些参数控制了git从哪个分支拉代码,maven构建的哪个环境的代码,这些参数需要在构建任务中明确指定,用以区分是生产环境还是测试环境等,如图

四,尝试构建任务

到这里我们的准备工作都已完成了,可以开启构建任务测试了,这时博主走了一个好大的坑,无论认证凭证模块怎么配置,总是抛如下的异常:host key verification failed.

这个异常非常明显,pipeline流式构建前两个步骤已经成功了,代码拉下来并已经构建成功了。但是通过sshagent上传到目标服务器时,认证失败了。这个问题占了我们摸索过程的一大半时间。最后还是感谢唐老大发现了问题。

异常原因:生产公私钥使用的root用户生产的,jenkins是使用jenkins用户启动的,所有jenkins没有权限,

其实上面所有的步骤都没问题。最终在尝试了无数次的构建失败后构建图标终于绿了,构建产物成功上传到目标主机

一次次的失败:

成功的绿标

五,pipeline的一点技巧

流式项目item创建好后,在左边菜单最下面会有pipeline的语法菜单,点进去,会有如下页面:

1.其中箭头一所指的,就是前文提到的git添加认证的一个小技巧,这个是一个pipeline脚本生成器,选中git scm后会出来git相关的配置,按照提示添加后,点击生成,就会生成以及配置组装好的脚本。特别适合新手

2.箭头而是步骤指南,这个里面罗列了所有pipeline语法支持的一些dsl函数,如git,checkout,wthmaven等,并且详细的描述了方法的具体使用细节,详细 到每个参数的说明,如withmavene:

文末结语

pipeline的概念去年就听说了,现在实际操作了一把,还是非常的震撼,通过在项目中新增jenkinsfile就可以解决构建问题,而且非常灵活,支持写if等的逻辑判断脚本来决定构建行为。经历了无数次失败后成功的成就感不言而喻,有兴趣的都可以试试,彻底改变原先的构建模式。建议刚接触pipeline的新手,多看看pipeline语法页面的相关内容,对理解pipeline语法及书写脚本有很大的帮助。其次就是去相关的插件wiki页面多看看说明。国内的那些博客很多都是一笔带过,看不出在生产上面应用的痕迹,不建议去参考

以上就是jenkins插件pipeline脚本jenkinsfile操作指南的详细内容,更多关于jenkins插件pipeline脚本jenkinsfile操作的资料请关注www.887551.com其它相关文章!

(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐