1

Jenkins-pipeline学习笔记–多分支构建的实践与思考(四) |坐而言不如起而行! 二丫讲梵

 2 years ago
source link: http://www.eryajf.net/3306.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
本文预计阅读时间 6 分钟

系列汇总

这是一个系列文章,大大小小到今天惊然发现竟然已经累计二十篇了,也就不得不做一个小汇总。回想当初写第一篇文章的时候,就已经决心事无巨细,一应认真的走下来,回头遮望,看着皇皇这么多文章,一股强烈的成就感就此油然而生,于是便有了这些汇总整理。在这个过程当中,好像也帮助过不少的人,这是让我尤其开心的事情,同时也结识了一些志同道合的朋友,再没有比这更让人觉得愉悦的事情啦!也希望以后写出更多类似的系列文章。

文章汇总地址如右:Jenkins入门教程。

如果相中哪个,点击进去便是。希望正在读这段话的你能够在这个小系列中获得自信以及喜悦!

之前配置项都是基于单分支的构建,很多时候,我们更需要配置一个多分支的场景以应对更为多元的工作场景。

比如,我希望项目的测试环境以及预发环境都是推送代码之后自动构建的,这个时候,就可以在Jenkins中创建一个多分支pipeline项目,来满足如上场景。

首先创建一个新的项目,风格选择多分支pipeline,然后进行简单配置:

71cfeb93gy1gmavheluxtj21b40wg0ww.jpg

然后在项目根目录创建Jenkinsfile文件:

  1. pipeline {
  2. agent any
  3. environment {
  4. remote_dir = "/opt/hello"
  5. }
  6. triggers{
  7. gitlab( triggerOnPush: true,
  8. triggerOnMergeRequest: true,
  9. branchFilterType: 'All',
  10. secretToken: "${env.git_token}")
  11. }
  12. options {
  13. buildDiscarder(logRotator(numToKeepStr: '10'))
  14. disableConcurrentBuilds()
  15. timeout(time: 10, unit: 'MINUTES')
  16. timestamps()
  17. }
  18. stages {
  19. stage('部署到测试环境'){
  20. when {
  21. branch 'test'
  22. }
  23. steps{
  24. sh '''
  25. rsync -avz --progress -e 'ssh -p 22' --exclude='Jenkinsfile' --exclude='.git' --delete ${WORKSPACE}/ [email protected]:$remote_dir
  26. '''
  27. }
  28. }
  29. stage('部署到线上环境') {
  30. when {
  31. branch 'master'
  32. }
  33. steps {
  34. sh '''
  35. rsync -avz --progress -e 'ssh -p 22' --exclude='Jenkinsfile' --exclude='.git' --delete ${WORKSPACE}/ [email protected]:$remote_dir
  36. '''
  37. }
  38. }
  39. stage('delete') {
  40. steps {
  41. echo '清理工作目录'
  42. cleanWs()
  43. }
  44. }
  45. }
  46. post {
  47. success {
  48. sh "echo 成功了"
  49. }
  50. failure {
  51. sh "echo 失败了"
  52. }
  53. }
  54. }

配置了自动构建,然后使用when参数将不同分支代码分发到不同的部署环境中去,当我们的日常开发工作已经形成规范,那么这种多分支构建是非常方便的,开发者可以随便新建分支开发,合并到test并push就会触发测试环境的构建,同理亦然。

71cfeb93gy1gmavhng83nj21kg0i8443.jpg

当我们把Jenkinsfile推上去,然后又创建了test分支,这里手动点击检索,两个分支就拉下来了,然后配置也会落位到两个分支中去,现在可以点开test分支配置看一眼:

!71cfeb93gy1gmaviwnbdnj216m0midiz.jpg

这里可以看到Jenkins已经自动将test配置落位到对应环境中了,以便于我们推送代码之后自动构建。

当然了,如果有更加复杂的需求情况,可以发散自己的思维,结合前边的Jenkinsfile语法,配置出更加丰富的功能出来。


weinxin


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK