基于Jenkins Pipeline的ASP.NET Core持续集成实践(2)

  这里我要实现的目标是:当有人push代码到git server中(这里我使用的git server是Gogs,需要给Gogs设置一个Webhook,如下图所示,需要注意的是设置的密钥文本要和在Pipeline中填写的一致,否则Jenkins无法正确接收Web钩子),git server会触发一个webhook发送一个post的请求给CI server,CI server会触发Pipeline任务的构建,一路pull代码+编译+单元测试。

基于Jenkins Pipeline的ASP.NET Core持续集成实践

  (2)持续发布:实现编译+发布到具体的测试环境

基于Jenkins Pipeline的ASP.NET Core持续集成实践

  由于在开发阶段,我不需要每次Push都进行发布,因此我这里设置的是手动在Jenkins中触发发布任务来实现自动化发布。

3.2 全局设置

  首先,肯定是Jenkins的插件安装了。

  (1)Generic WebHook Trigger => 触发WebHook必备

  (2)Gogs Plugin => 因为我使用的Git Server是Gogs搭建的

  (3)MSBuild Plugin => 进行sln、csproj项目文件的编译

  (4)MSTest & xUnit => 进行基于MSTest或基于xUnit的单元测试

  (5)Nuget Plugin => 拉取Nuget包必备

  (6)Pipeline => 实现Pipeline任务必备,建议将Pipeline相关插件都安装上

  (7)Powershell Plugin => 如果你的CI服务器是基于Windows的,那么安装一下Powershell插件来执行命令吧

  (8)Publish Over SSH => 远程发布Release必备

  (9)WallDisplay => 电视投屏构建任务列表必备

  其次,为了提示邮件,也要Email插件(Email Extension)的支持,并进行以下配置:

  (1)第一处:Jenkins Location

基于Jenkins Pipeline的ASP.NET Core持续集成实践

  (2)第二处:Email扩展插件全局变量设置

基于Jenkins Pipeline的ASP.NET Core持续集成实践

  这里主要是需要设置Subject和Content,就可以在各个Pipeline中使用了。因此,这里贴出我的Default Content内容:

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志</title> </head> <body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4" offset="0"> <table width="95%" cellpadding="0" cellspacing="0" style="font-size: 11pt; font-family: Microsoft YaHei, Tahoma, Arial, Helvetica"> <tr> <td>各位同事,大家好,以下为 ${PROJECT_NAME } 构建任务信息</td> </tr> <tr> <td><br /> <b style="font-weight:bold; color:#66cc00">构建信息</b> <hr size="2" width="100%" align="center" /></td> </tr> <tr> <td> <ul> <li>任务名称 : ${PROJECT_NAME}</li> <li>构建编号 : 第${BUILD_NUMBER}次构建</li> <li>触发原因: ${CAUSE}</li> <li>构建状态: <span style="font-weight:bold; color:#FF0000">${BUILD_STATUS}</span></li> <li>构建日志: <a href="${BUILD_URL}console">${BUILD_URL}console</a></li> <li>构建 Url : <a href="${BUILD_URL}">${BUILD_URL}</a></li> <li>工作目录 : <a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li> <li>项目 Url : <a href="${PROJECT_URL}">${PROJECT_URL}</a></li> </ul> </td> </tr> </table> </body> </html>

基于Jenkins Pipeline的ASP.NET Core持续集成实践

  为了能够发给更多的人,建议勾选以上两个选项。

基于Jenkins Pipeline的ASP.NET Core持续集成实践

  这里是Email通知必填的SMTP服务器配置。

  最后,是SSH服务器的声明,指定可以进行SSH发布的服务器有哪些,IP又是多少:

基于Jenkins Pipeline的ASP.NET Core持续集成实践

3.3 新增Pipeline脚本

  (1)持续集成Pipeline

  首先,填写Webhook的密钥文本:

基于Jenkins Pipeline的ASP.NET Core持续集成实践

  其次,Build Triggers的时机选择“Build when a change is pushed to Gogs”,即有人push代码到仓库就触发。当然,这里需要提前在Gogs设置Webhook。

基于Jenkins Pipeline的ASP.NET Core持续集成实践

  其次,编写Pipeline脚本,各个Stage写清楚职责:

  

基于Jenkins Pipeline的ASP.NET Core持续集成实践

  具体的Pipeline脚本在下边:

基于Jenkins Pipeline的ASP.NET Core持续集成实践

 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/7066499d464af64905becc367c1b5987.html