devops系列002——jenkins-pipeline介绍
至于安装jenkins 这里就不多说了 ,如果熟悉docker 的话 一条命令就解决了。
docker run -d -u root -p8080:8080-p5000:5000--name jenkins -e JAVA_OPTS=-Duser.timezone=Asia/Shanghai -v /data/jenkins_home/:/var/jenkins_home $(cat /etc/hosts|awk -F{if(NR>2){print "--add-host "$2":"$1}}) -v /etc/localtime:/etc/localtime -v /var/run/docker.sock:/var/run/docker.sock jenkinsci/blueocean:1.19.0
说到Jenkins 不可避免的就是pipeline ,即pipeline as code。Groovy语言被选择作为基础来实现pipeline,为用户提供了巨大的灵活性和可扩展性。
流水线的运行系统
1.主节点master :
是一个Jenkins实例的主要控制系统,它能够完全访问所有Jenkins配置选项和任务列表,如果没有指定其他系统,它也是默认的任务执行节点。
不过不推荐在主节点上执行高负载任务,任何需要大量处理的任务都应该在主节点之外的系统上运行。
这样做的另外一个原因是,凡是在主节点上执行的任务,都有权限访问所有的数据,配置和操作,这样会造成安全风险。
2.节点node :
在Jenkins2中,节点是一个概念,代表了任何可以执行Jenkins任务的系统。节点包括了主节点和从节点,也可以指一个容器,如Docker。
在任何Jenkins实例中主节点都会存在。
3.代理节点agent
在早先的版本的Jenkins中,代理节点被称为从节点(slave),其代表了所有非主节点系统。这类系统由主系统管理,按需分配或者指定执行特定的任务。
随着代理节点和节点之间关系的演进,代理节点在节点上运行。在脚本式流水线中,节点特指一个运行代理节点的系统,而在声明式流水线中,其指代一个
特定的代理节点来分配节点。
4.执行器executor
简单的说,执行器就是节点/代理节点用于执行任务的一个插槽。一个节点可以有任意多个执行器。执行器的数量定义了该节点可以执行的并发任务的数量。
当主节点将任务分配给特定节点时,该节点上必须有可用的执行器插槽来立即执行该任务,否则任务会一直处于等待状态,直到一个执行器变为可用。
执行器的数量和其他参数可以在创建节点的时候进行配置。
新建pipeline
新建任务现在流水线
执行pipeline方式
直接使用pipeline script 方式在页面写
使用Jenkinsfile
pipeline 语法选择
脚本式:语法灵活、可扩展,但是也意味着更复杂。
优点:
- 更少的代码段落和弱规范要求
- 更强大的程序代码能力
- 更灵活的自定义代码操作
- 能够构建更复杂的工作流和流水线
缺点:
- 要求更高的编程水平
- 语法受限于goovy语法和环境
- 比声明式语法更复杂
node {
stage("build") {// 执行构建}
stage("test") {// 执行测试}
stage("deploy") {try{// 执行部署}catch(err){
currentBuild.result ="FAILURE"mail body:"project build error is here:${env.BUILD_URL}",from:xxx@yy.com,
replyTo:xxxx@yy.com,
subject:project build failed,
to:xxxxx@yy.com}
}
}
声明式:简单、结构化
优点:
- 更结构化、贴近传统的jenkins web表单形式
- 可以通过Blue Ocean图形化界面自动生成
- 更友好的语法检测和错误识别
缺点:
- 对迭代逻辑比较弱
- 部分功能缺乏支持
- 对于复杂的流水线支持弱
pipeline{agentanystages{stage("build"){steps{echobuilding...}}stage("test"){steps{echotesting...}}stage("deploy"){stpes{echodeploying...}}}post{failure{mailto: xx@yy.com, subject: the pipeline failed}}}
下一节开始 pipeline 语法
如果对您有帮助,记得不要忘了给个关注哦!!!上海IT故事
还可以关注我之前的文章: