美文网首页Java技术升华
Docker+Jenkins+Pipeline实现持续集成(三)

Docker+Jenkins+Pipeline实现持续集成(三)

作者: 禾苗zj | 来源:发表于2019-01-03 11:22 被阅读98次

    基本流程走通后,我们还可以为项目增加webhook、文件存档、邮件发送、声音提示等配置

    插件推荐

    插件名 作用
    Gitlab 代码提交到Gitlab上后自动触发Jenkins构建
    Jenkins Email Extension Plugin 可定制化的发送邮件
    Sounds Plugin 构建前/后发出声音提示
    HTTP Request Plugin 能够发送HTTP请求
    Build Monitor View 为Jenkins新建监控视图,便于在大屏幕上显示项目构建进度

    添加gitlab的webhook

    当开发人员push代码到gitlab上时,我们想要立即触发一次Jenkins构建,因此需要添加gitlab的webhook。
    方案1
    (1)在项目配置里找到”构建触发器“,勾选Poll SCM,但不用填写日程表(使用cron格式填写日程表的话,会定时查询git仓库是否有变更,如果有则自动构建,但不会因为push而自动触发构建)
    (2)然后拥有项目git管理权限的人员,进入需要接入Jenkins的git项目,点击Settings,点击页面左侧的WebHooks,在url的输入框中输入http://<jenkins_server>/git/notifyCommit?url=<git仓库地址>[&branches=分支名1,分支名2]后,点击AddWebHook,即添加成功webhook,如下图所示:

    git中添加webhook
    (3)当webhook设置后,需要手动构建一次项目,否则webhook不会被识别到;且每一次修改pipeline中的gitlab仓库信息时,都需要进行一次手动构建。
    方案2
    方案1有一个缺陷,只能在分支提交时触发自动构建,而且当一个项目push代码后,所有拉取该项目代码的jenkins都会被自动构建。因此如果需要更强大灵活的webhook,可以参考方案2。
    (1)下载插件Gitlab
    (2)进入项目配置页,可以看到在构建触发器中新增了Build when a change is pushed to Gitlab一项,如下图
    Webhook配置
    点击更多能够看到构建分支等等更多配置,如下图:
    Webhook配置
    (3)gitlab中添加Webhook
    项目管理人员进入git项目中,点击Settings——Integrations,进入到Webhook的添加页面。将(2)中的webhook url以及Secret Token填写到后,选择相应的trigger事件即可,如下图:
    gitlab中添加webhook

    文件存档

    当使用mvn进行单元测试或打包构建后,我们想要获取测试报告或者二进制包,因此需要将这些文件进行存档。
    使用archiveArtifacts可以获得任意满足条件的文件,使用junit可以针对xml格式的测试报告进行存档,如下:

        archiveArtifacts 'target/*jar'
        junit '**/target/surefire-reports/TEST-*.xml'
    

    构建后,可以在Stage View中的箭头处对文档进行查看下载。

    邮件发送

    这里主要介绍两种邮件的发送方法,一个是Jenkins自带的邮件发送,一个是插件Jenkins Email Extension Plugin提供的邮件发送。推荐使用第二种方法,可以定制复杂的邮件发送格式,更加灵活、强大。
    1.Jenkins自带的邮件通知的配置
    进入系统管理——系统设置中,找到Jenkins Location项,配置其中的系统管理员邮件地址,如下图所示:

    配置系统管理员邮件地址
    然后找到邮件通知项,配置发送邮件的SMTP服务器和用户认证,如下图所示
    配置SMTP认证
    配置成功后,即可在Pipeline中添加邮件发送语句,格式为:
    mail body: "", subject: "", to: ""
    

    2.使用插件发送邮件
    下载插件Jenkins Email Extension Plugin
    进入系统管理——系统设置中,找到Extended E-mail Notification项,如下图所示配置SMTP服务器和用户认证:

    配置STMP认证
    并且可以配置邮件的Default SubjectDefault Content(模板见下篇),然后在邮件发送时用变量DEFAULT_SUBJECTDEFAULT_CONTENT进行调用,在pipeline中发送邮件的格式如下:
         emailext attachlog:true, body: ‘$DEFAULT_CONTENT’, subject: ‘$DEFAULT_SUBJECT’, to: ‘xxxx@****.com' 
    

    声音提示

    下载插件Sounds PluginHTTP Request Plugin
    插件安装后,首页右侧会出现Sounds图标,点击可以进入Sounds页面测试声音是否能够正常发出,如下图:

    Sound插件
    可以看到,Sounds提供了两种声音访问的形式:一个是插件自带的音效即Play sound from internal sound archive,但是这种方式只能在freestyle的项目中使用;另一种方式是通过发送HTTP请求的方式,一旦请求成功,音效就在所有打开Jenkins的浏览器中响起(可在系统管理——系统设置——Jenkins Sounds中更改),请求的url格式为http://jenkins_server/sounds/playSound?src=<URL>,其中,src的值为在jenkins服务器中的文件地址或一个http的url。

    例如,我们在Jenkins的容器中,下载一段音频(wget http://xmdx.sc.chinaz.com/Files/DownLoad/sound1/201712/9563.wav)存放在/var/jenkins_home/sounds/文件夹下,那么我们可以通过URL http://localhost:8080/sounds/playSound?src=file:///var/jenkins_home/sounds/9563.wav来触发音效的播放。在Pipeline中,我们利用插件HTTP Request Plugin进行http请求的发送,语法生成配置如下:

    Sounds消息发送语法生成
    因此,pipeline中发送声音请求的语句如下(soundsId即Jenkins管理员的账号密码认证ID):
    httpRequest authentication:"${soundsId}", url:"http://localhost:8080/sounds/playSound?src=file:///var/jenkins_home/sounds/9563.wav"
    

    监控视图

    常规的jenkins视图并不利于实时监控,只有一个小小的图标表示项目构建成功还是失败,失败后也没有更详细的信息,因此可以使用监控视图,适合投屏到大屏幕上对项目的构建进行实时监控。
    (1)下载插件Build Monitor View
    (2)添加新的视图:在Jenkins的首页,所有项目上方的视图选择tab中点击+后可新建视图,如下:

    添加新视图1
    然后在视图新建页面中选择Build Monitor View、填写视图名称后,点击OK
    添加新视图2
    然后进入视图的配置页面,选择需要添加到视图中的项目,或者配置过滤规则后,点击保存,即可在首页看到该新视图
    新视图
    (3)实时监控构建情况
    点击进入新视图就可以实时查看构建情况:红色表示构建失败、绿色表示构建成功、灰色表示构建中断;而且能够看到时间、构建趋势等等、git提交人等等多个信息。如下是官方的效果展示图:
    图片.png

    相关文章

      网友评论

        本文标题:Docker+Jenkins+Pipeline实现持续集成(三)

        本文链接:https://www.haomeiwen.com/subject/oqqslqtx.html