附:

流程图

4.6、Jenkins集成Gitlab整合以及优化(终章) - 图2

邮箱

4.6、Jenkins集成Gitlab整合以及优化(终章) - 图3

构建push报文

  1. {
  2. "object_kind":"push",
  3. "event_name":"push",
  4. "before":"d4022a2e922dcbef2e6a7b9a45469084109af9a0",
  5. "after":"7c6afe6956cd586fbc43509fa8858bc96bbf98f6",
  6. "ref":"refs/heads/master",
  7. "checkout_sha":"7c6afe6956cd586fbc43509fa8858bc96bbf98f6",
  8. "message":null,
  9. "user_id":1,
  10. "user_name":"Administrator",
  11. "user_username":"root",
  12. "user_email":"liuhaoran@newland.com.cn",
  13. "user_avatar":"https://www.gravatar.com/avatar/a76eabfb331c9452745754dfec08f402?s=80&d=identicon",
  14. "project_id":2,
  15. "project":{
  16. "id":2,
  17. "name":"demo-maven-service",
  18. "description":"",
  19. "web_url":"http://39.105.58.61:9999/root/demo-maven-service",
  20. "avatar_url":null,
  21. "git_ssh_url":"git@39.105.58.61:root/demo-maven-service.git",
  22. "git_http_url":"http://39.105.58.61:9999/root/demo-maven-service.git",
  23. "namespace":"Administrator",
  24. "visibility_level":0,
  25. "path_with_namespace":"root/demo-maven-service",
  26. "default_branch":"master",
  27. "ci_config_path":null,
  28. "homepage":"http://39.105.58.61:9999/root/demo-maven-service",
  29. "url":"git@39.105.58.61:root/demo-maven-service.git",
  30. "ssh_url":"git@39.105.58.61:root/demo-maven-service.git",
  31. "http_url":"http://39.105.58.61:9999/root/demo-maven-service.git"
  32. },
  33. "commits":[
  34. {
  35. "id":"7c6afe6956cd586fbc43509fa8858bc96bbf98f6",
  36. "message":"Update pom.xml",
  37. "title":"Update pom.xml",
  38. "timestamp":"2021-02-24T14:23:24+08:00",
  39. "url":"http://39.105.58.61:9999/root/demo-maven-service/-/commit/7c6afe6956cd586fbc43509fa8858bc96bbf98f6",
  40. "author":{
  41. "name":"Administrator",
  42. "email":"liuhaoran@newland.com.cn"
  43. },
  44. "added":[
  45. ],
  46. "modified":[
  47. ],
  48. "removed":[
  49. ]
  50. }
  51. ],
  52. "total_commits_count":1,
  53. "push_options":{
  54. },
  55. "repository":{
  56. "name":"demo-maven-service",
  57. "url":"git@39.105.58.61:root/demo-maven-service.git",
  58. "description":"",
  59. "homepage":"http://39.105.58.61:9999/root/demo-maven-service",
  60. "git_http_url":"http://39.105.58.61:9999/root/demo-maven-service.git",
  61. "git_ssh_url":"git@39.105.58.61:root/demo-maven-service.git",
  62. "visibility_level":0
  63. }
  64. }

4.6.1、规划

  1. 1Jenkins
  2. 项目名称:gitlab-demo-maven
  3. 2gitlab
  4. 共享库名称:jenkinslib
  5. jenkinsfilejenkinslib/Jenkinsfile
  6. 构建共享库文件:jenkinslib/src/org/devops/build.groovy
  7. 邮件共享库名称:jenkinslib/src/org/devops/toemail.groovy
  8. 代码库名称:demo-maven-service
  9. 3、安装插件
  10. Generic Webhook Trigger
  11. Email Extension Template
  12. Email Extension Plugin
  13. 4、新建gitlab凭证
  14. 5gitlab新建开发用户,并具有看到上述两个项目的权限(先用root用户做实验)
  15. 6、开发人员提交低吗后Jenkins上会有构建人员描述,并给构建人员发送构建的结果通知
  16. 要求:push请求会自动触发构建操作。但是新建分支操作除外,构建完成后会给对应的开发人员发送邮件通知是否成功。

4.6.2、gitlab代码库

4.6.2.1、gitlab代码库

4.6、Jenkins集成Gitlab整合以及优化(终章) - 图4demo-maven-service-master.tar.gz

4.6.2.2、gitlab共享库

4.6、Jenkins集成Gitlab整合以及优化(终章) - 图5jenkinslib-master.zip

4.6.3、Jenkins全局工具配置

4.6.3.1、配置jDK

4.6、Jenkins集成Gitlab整合以及优化(终章) - 图6

4.6.3.2、配置Git

4.6、Jenkins集成Gitlab整合以及优化(终章) - 图7

4.6.3.3、配置Maven

4.6、Jenkins集成Gitlab整合以及优化(终章) - 图8

4.6.4、Jenkins系统配置

  1. Jenkins Location

4.6、Jenkins集成Gitlab整合以及优化(终章) - 图9

  1. 全局属性

4.6、Jenkins集成Gitlab整合以及优化(终章) - 图10

  1. Global Pipeline Libraries

4.6、Jenkins集成Gitlab整合以及优化(终章) - 图11

  1. Extended E-mail Notification
  2. smtp.qq.com
  3. 465
  4. 446693337@qq.com
  5. 授权码
  6. 勾选ssl
  7. UTF-8
  8. HTML(text/html)

4.6、Jenkins集成Gitlab整合以及优化(终章) - 图12

4.6.5、Jenkins项目配置

4.6.5.1、Jenkins参数配置

  1. 参数化构建过程:为了给共享库传参
  1. srcUrl
  2. http://39.105.58.61:9999/root/demo-maven-service.git

4.6、Jenkins集成Gitlab整合以及优化(终章) - 图13

  1. branchName
  2. master
  3. test01

4.6、Jenkins集成Gitlab整合以及优化(终章) - 图14

  1. buildType
  2. mvn

4.6、Jenkins集成Gitlab整合以及优化(终章) - 图15

  1. buildShell
  2. clean package

4.6、Jenkins集成Gitlab整合以及优化(终章) - 图16

4.6.5.2、Jenkins的Generic Webhook Trigger配置

4.6.5.2.1、Post content parameters 配置

  1. 地址记录
  2. Is triggered by HTTP requests to http://JENKINS_URL/generic-webhook-trigger/invoke

4.6、Jenkins集成Gitlab整合以及优化(终章) - 图17

  1. 获取分支名
  2. branch
  3. $.ref

4.6、Jenkins集成Gitlab整合以及优化(终章) - 图18

  1. 获取提交代码人员的用户名
  2. userName
  3. $.user_username

4.6、Jenkins集成Gitlab整合以及优化(终章) - 图19

  1. 获取git的仓库地址
  2. ssh_url
  3. $.project.ssh_url

4.6、Jenkins集成Gitlab整合以及优化(终章) - 图20

  1. 过滤到创建分支的push请求(用来后面匹配过滤检验新建的分支不触发自动构建)
  2. before
  3. $.before
  4. after
  5. $.after
  6. object_kind
  7. $.object_kind

4.6、Jenkins集成Gitlab整合以及优化(终章) - 图21

4.6、Jenkins集成Gitlab整合以及优化(终章) - 图22

4.6、Jenkins集成Gitlab整合以及优化(终章) - 图23

  1. 邮箱配置
  2. user_email
  3. $.user_email

4.6、Jenkins集成Gitlab整合以及优化(终章) - 图24

4.6.52.2、Request parameters配置

  1. runOpts

4.6、Jenkins集成Gitlab整合以及优化(终章) - 图25

4.6.5.2.3、Token配置

  1. 使用项目名称作为token
  2. gitlab-demo-maven

4.6、Jenkins集成Gitlab整合以及优化(终章) - 图26

4.6.4.2.4、勾选此处配置

4.6、Jenkins集成Gitlab整合以及优化(终章) - 图27

4.6.5.2.5、Optional filter配置

  1. 过滤新建分支触发
  2. ^push\s(?!0{40}).{40}\s(?!0{40}).{40}$
  3. push开头,且不等于400会被放开校验(也就是说新建分支的push请求会被校验住,其他的push请求会正常自动化触发构建)
  4. $object_kind $after $before
  5. 参考链接
  6. https://github.com/jenkinsci/generic-webhook-trigger-plugin/blob/master/src/test/resources/org/jenkinsci/plugins/gwt/bdd/gitlab/gitlab-push-ignore-when-no-commits.feature

4.6、Jenkins集成Gitlab整合以及优化(终章) - 图28

4.6.5.3、Jenkins的流水线配置

  1. http://39.105.58.61:9999/root/jenkinslib.git

4.6、Jenkins集成Gitlab整合以及优化(终章) - 图29

4.6.6、gitlab自动push配置

4.6.6.1、配置自动化push

  1. http://47.93.249.164:8888/generic-webhook-trigger/invoke?token=gitlab-demo-maven&runOpts=GitlabPush

4.6、Jenkins集成Gitlab整合以及优化(终章) - 图304.6.6.2、添加报错

  1. Url is blocked: Requests to the local network are not allowed

解决方式

4.6、Jenkins集成Gitlab整合以及优化(终章) - 图31

4.6.6.3、再次配置

4.6、Jenkins集成Gitlab整合以及优化(终章) - 图32

4.6.6.4、测试

测试验证Jenkins是否已经自动触发构建

4.6、Jenkins集成Gitlab整合以及优化(终章) - 图33

已经触发自动化构建,如果新建分支的话push报文中的before字段为40个0,会自动屏蔽。

4.6、Jenkins集成Gitlab整合以及优化(终章) - 图34

4.6、Jenkins集成Gitlab整合以及优化(终章) - 图35

4.6.7、gitlab配置邮箱

4.6.7.1、gitlab配置邮箱

4.6、Jenkins集成Gitlab整合以及优化(终章) - 图36

  1. 添加该用户得邮箱,为了后期构建通知
  2. 第一张添加邮箱的图片为管理员添加的,第二张添加邮件的图片是用户自己登陆自己的账号完了自行进行添加的

4.6、Jenkins集成Gitlab整合以及优化(终章) - 图37

4.6、Jenkins集成Gitlab整合以及优化(终章) - 图38

4.6.7.2、测试邮箱是否发送

修改代码提交

4.6、Jenkins集成Gitlab整合以及优化(终章) - 图39

4.6、Jenkins集成Gitlab整合以及优化(终章) - 图40

4.6、Jenkins集成Gitlab整合以及优化(终章) - 图41