ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

pipeline是什么?

2021-12-13 09:00:12  阅读:405  来源: 互联网

标签:pipeline 代码 插件 echo 语法 Jenkins 什么


目录

一.pipeline是什么?

pipeline是部署流水线(Deployment pipeline),指从软件版本控制库到用户手中这一过程的自动化表现形式。

Jenkins 1.x只能通过界面手动配置来配置描述过程,让Jenkins完成任务,例如选择自由风格的项目,通过选项等操作进行配置,让jenkins可以下载代码、编译构建、然后部署到远程服务器上。
file

而Jenkins 2.x终于支持pipeline as code了,可以通过代码来描述部署流水线,还是同样的功能,部分操作通过代码配置运行后,也会在界面里显示出来。

Pipeline 简而言之,就是一套运行于Jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排与可视化。
file

pipeline的功能由pipeline插件提供,有的jenkins会自带,若没有则需要安装。

使用代码而不是UI的意义在于:

  • 更好的版本化:将pipeline提交到版本库中进行版本控制
  • 更好地协作:pipeline的每次修改对所有人都是可见的。除此之外,还可以对pipeline进行代码审查
  • 更好的重用性:手动操作没法重用,但是代码可以重用

二.jenkinsfile是什么

Jenkinsfile就是一个文本文件,里面记录着逻辑,在执行jenkins job的时候,会读取这个文件按照上面的描述来进行各种操作。像Dockerfile之于Docker,Playbook之于Ansible。

Jenkinsfile有2种方式,可以直接在web配置中进行编写,这样只适合临时项目调试或简短的内容。
file

更多的是将pipeline的脚本在远程仓库上进行管理,这里配置远程仓库地址,让job每次执行的时候拉取这个项目,然后执行其中的某个文件。
file

可以将脚本放到一个仓库集中管理,也可以放到每个项目中,和代码在一起进行维护,具体方式可以根据公司情况来安排。

三.pipeline语法选择

Jenkins pipeline有2种语法:脚本式(Scripted)语法和声明式(Declar-ative)语法。pipeline插件从2.5版本开始,才同时支持两种格式的语法,推荐使用声明式语法,它的使用人群更广泛,也更好表达维护。

Jenkins团队在一开始实现Jenkins pipeline时,Groovy语言被选择作为基础来实现pipeline。所以,在写pipeline脚本时,就是在写groovy脚本。但区别是,pipeline是在上面封装了一层,需要用固定格式,jenkins才可以识别。

pipeline {
    agent any

    stages {
        stage('pull') {
            steps {
                git branch: 'master', credentialsId: 'jenkins', url: 'http://代码'
                echo '开始拉取代码'
            }
        }
    }
}

按照格式编写,在其中可以加入groovy的脚本,例如循环、判断、添加变量等等。这样的好处是降低了学习成本,例如上面的下载代码的git指令,用groovy单纯实现就如下方式。

"git clone http://代码".execute().text

那如果根据不同分支拉取、配置秘钥等操作,这里还要再增加切换的操作,要单独学习groovy相关的知识。

四.脚本式和声明式

脚本式语法比较灵活,编写清晰简单,groovy的语法可以直接使用套用,例如直接定义个变量。

node () {
def branch = 'test'

    stage 'pull'
        sh " echo 拉取代码"
	
	stage 'build'
        sh " echo 构建代码"
}

声明式的语法在内容多的时候会更清晰

pipeline {
    agent any

    stages {
        stage('pull') {
            steps {
                echo '拉取代码'
            }
        }
		
		stage('build') {
            steps {
                echo '构建代码'
            }
        }
    }
}

对比2个例子,可以发现声明式好像才是复杂的那个。但其实在后续使用中,可以发现脚本式会比较凌乱,就像没用函数的感觉,没有一个标准和结构。脚本式和声明式只是语法上有些区别,对于方法和功能大多都是一样支持的。

五.插件与pipeline

pipeline基本结构决定的是pipeline整体流程,stage代表每个阶段,但实际具体做操作的是pipeline中的每一个步骤。步骤是pipeline中已经不能再拆分的最小操作。像echo执行echo指令,sh执行shell命令。

那是不是说,Jenkins pipeline内置了所有可能需要用到的步骤呢?显然没有必要,因为很多步骤可能永远不会用到。

就像自由Jenkins的插件,安装各种插件后,可以在自由风格的项目里,看到多出来的选项,进行配置。pipeline也是如此,安装某些插件后,就可以在pipeline中用代码调用插件了。

哪些插件适配了Jenkins pipelien,官方有列表方便检索,步骤具体说明可以查看官方步骤参考文档

标签:pipeline,代码,插件,echo,语法,Jenkins,什么
来源: https://www.cnblogs.com/rxysg/p/15681526.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有