欢迎访问www.showerlee.com, 您的支持就是我前进的动力.

浅谈Jenkins Pipeline

showerlee 2017-07-19 17:34 DevOps, Jenkins 阅读 (524) 1条评论

已经很久很久没有更新我的空间了, 最近刚好工作上的变动让我有时间去静下心来去整理一下这一年来学到的东西.

谈到Jenkins, 大家肯定耳熟能详, 持续集成/持续交付, 自动化部署工具, 测试工具, 配合目前我们绝大多说开发工具, 简直是万能的瑞士军刀.

接触Devops这个概念两年有余, 使用了很多开发工具诸如JIRA, Gitlab, Ansible, SVN, NEXUS, CHEF, FISHEYE, Confluence等等, 唯独Jenkins让我印象最为深刻.

为什么呢?

还记得我之前写过几篇文章, 介绍了Jenkins配合ansible, gitlab实现持续集成自动化部署. Jenkins作为核心的部署工具将原来只能通过命令行或者二次开发才能实现部署方式搬到前台, 将更多的GUI可操作空间交给DevOps和开发, 加之完善的权限分配规范, 让运维与开发能够和谐的在这个系统间协同工作. 

Jenkins Pipeline, 我觉得是Jenkins2.0以后一个革命性的更新, 那就是用一种全新的Pipeline code方式, 将我们原来意义上的手动配置每一个Jenkins Job的具体配置项变成将所有配置代码化, 并再次配合Gitlab等版本控制系统去保存我们的代码配置, 这样子无论Job在未来需要更新, 或者需要回滚到之前的某一个配置, 又或者一个新的Job需要参考之前的老Job的配置并直接套用, 又或者我们需要去批量生成若干个Job配置, 我们都可以像管理软件代码的方式去管理我们的Jenkins Job配置. 这样就极大的简化我们自动化部署的结构, 将以前需要手动配置Job的这个步骤, 直接代码化. 最终体现出我们DevOps的最终目标. 

realworld-pipeline-flow

目前来说Jenkins pipeline应该算上是一个出生不久但我觉得比较成熟的概念, 如果你要认真去了解他, 我觉得会给你带来意想不到的收获.

Jenkinsfile (Declarative Pipeline)

Jenkinsfile (Declarative Pipeline)
pipeline {
    agent any 

    stages {
        stage('Build') { 
            steps { 
                sh 'make' 
            }
        }
        stage('Test'){
            steps {
                sh 'make check'
                junit 'reports/**/*.xml' 
            }
        }
        stage('Deploy') {
            steps {
                sh 'make publish'
            }
        }
    }
}

这是一个比较简单JenkinsFile(pipeline code), 简单来说包含了三块我们日常基本的自动化部署步骤, 之所以会命名Pipeline, 可以说是因为我们可以在不同的stage下去编写我们的具体部署需求, 然后通过Pipeline将这些stage块连接起来, 不仅能够将我们的部署结构分割成块状并可以直接通过查询这个块的的日志来定位/排错我们的部署内容, 而且将一个块状内的代码方法化, 实现不同块之间的相互调用, 这样就在原有的Jenkins平行逻辑配置的基础上, 加入逻辑化的功能, 而且本身配置代码化又便于我们去做版本控制, 可以说是在原有Jenkins下做出的重大的变革. 

接下来我将利用上述代码编写一个Jenkins pipeline示例:

首先我们将上面的代码写入一个我们新建好的pipeline job

pipe2

pipe3

这里我们可以清晰的看到每一个stage的名字, 是否执行成功, 涉及到的版本控制commit变更, 以及所用到的平均时间.

pipeline1

我们也可以通过Pipeline script from SCM - Git的方式实现我刚才所说的将我们具体的pipeline code保存到git上, 利用Jenkins git将代码抓取到该job实现JenkinsFile版本控制.

pipe5

最后, 无论是我们DevOps去编写/排错job code还是开发去测试代码质量, 都可以将我们在执行这个job过程中出现的任何问题精确的定位到每一个块状stage下, 从而提高我们工作效率.

接下来我会在空间陆续更新Pipeline的一些语法及常见编写规范.

希望大家有兴趣可以尝试一下Jenkins这个新功能, 下面是具体的Pipeline语法及编写文档.

Pipeline Guide:

https://jenkins.io/doc/book/pipeline

https://jenkins.io/doc/book/pipeline/syntax

正文部分到此结束
版权声明:除非注明,本文由(showerlee)原创,转载请保留文章出处!
本文链接:http://www.showerlee.com/archives/1972

继续浏览:Jenkins Pipeline

目前有1条大神的评论

loading
  1. 沙发
    showerlee2017年7月20日上午11:08 回复

    希望大家有兴趣可以尝试一下Jenkins Pipeline.

发表评论

icon_wink.gif icon_neutral.gif icon_mad.gif icon_twisted.gif icon_smile.gif icon_eek.gif icon_sad.gif icon_rolleyes.gif icon_razz.gif icon_redface.gif icon_surprised.gif icon_mrgreen.gif icon_lol.gif icon_idea.gif icon_biggrin.gif icon_evil.gif icon_cry.gif icon_cool.gif icon_arrow.gif icon_confused.gif icon_question.gif icon_exclaim.gif