Chinaunix首页 | 论坛 | 博客
  • 博客访问: 350348
  • 博文数量: 52
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 577
  • 用 户 组: 普通用户
  • 注册时间: 2013-04-27 14:21
个人简介

知道自己该干嘛,知道自己能干嘛

文章分类

全部博文(52)

文章存档

2019年(1)

2018年(8)

2017年(2)

2016年(11)

2015年(3)

2014年(10)

2013年(17)

我的朋友

分类: 系统运维

2018-06-29 16:09:36



               今天来记录一篇Jenkinsfile的用例,Jenknisfile是jenkins pipeline流程的定义文件,本例是针对multibranch Pipeline的示范, 使用script方式编写 Jenkinsfile,
               
                pipeline 流程:

                         ①  加载一个groovy脚本
                         ②  拉取golang容器make产出物
                         ③  构建景象推送景象至harbor registry
                         ④  根据分支部署各种环境


  1. @Library('utils') _       ## 引用一个groovy script

  2. node {
  3.      checkout scm

  4.      stage('1. Continuous Integration \u2702') {
  5.         docker.image('golang:latest').inside {
  6.             sh 'make'
  7.         }
  8.      }
  9.  
  10.      stage('2. Build image and Push image'){
  11.         
  12.         docker.withRegistry('', '99') {
  13.         
  14.         def job = JOB_NAME.tokenize('/') as String[]  # 对字符串进行切割,取出JOB_NAME
  15.        
  16.         def PROJECT_NAME = job[0]
  17.          
  18.         def customImage = docker.build("es-monitor/${PROJECT_NAME}-${env.BRANCH_NAME}:${env.BUILD_ID}", "-f ./docker/Dockerfile .")        #  根据dockerfile构建景象
  19.          
  20.         customImage.push()       #   image push harbor

  21.         }
  22.       
  23.      }

  24.      stage('3. Deliver for deployment'){
  25.        
  26.         when(BRANCH_NAME == 'deployment') {

  27.            def job = JOB_NAME.tokenize('/') as String[]
  28.        
  29.            def PROJECT_NAME = job[0]
  30.                 
  31.            docker.image("es-monitor/${PROJECT_NAME}-${env.BRANCH_NAME}:${env.BUILD_ID}").inside() {
  32.               
  33.            sh './docker/script/Run.sh'
  34.            input message: 'Finished using the web site? (Click "Proceed" to continue)'
  35.            sh './docker/script/kill.sh'
  36.            }
  37.        }
  38.     }

  39.      stage('4. Deployment for master \u2705'){

  40.         when(BRANCH_NAME == 'master') {
  41.            sh "echo \"Current Branch is: ${BRANCH_NAME}\""
  42.         }

  43.      }
  44.    
  45. }
                    具体的pipeline流程如下图所示:


       
                    step 1 样图

       
                        setp 2 样图


                         setp 3 样图


                    

                   通过上面的Jenkinsfile我们定义了整个的流程,Jenkinsfile方便易用,简单易学,有很多灵活的功能,再加上groovy脚本,简直就是如虎添翼。以前做这些事情都是使用的bash脚本,但现在觉得Jenkinsfile才是使用jenkins的正确方式,虽然有一些学习成本,但是你也会收获到了很。

                                                                                                                     umpay_Cail

参考资料:
 
                 



阅读(1419) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~