devops系列002——jenkins-pipeline介绍

至于安装jenkins 这里就不多说了 ,如果熟悉docker 的话 一条命令就解决了。

<code>docker run -d -u root -p 8080:8080 -p 5000: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/<code>

说到Jenkins 不可避免的就是pipeline ,即pipeline as code。Groovy语言被选择作为基础来实现pipeline,为用户提供了巨大的灵活性和可扩展性。

流水线的运行系统

1.主节点master :

是一个Jenkins实例的主要控制系统,它能够完全访问所有Jenkins配置选项和任务列表,如果没有指定其他系统,它也是默认的任务执行节点。

不过不推荐在主节点上执行高负载任务,任何需要大量处理的任务都应该在主节点之外的系统上运行。

这样做的另外一个原因是,凡是在主节点上执行的任务,都有权限访问所有的数据,配置和操作,这样会造成安全风险。


2.节点node :

在Jenkins2中,节点是一个概念,代表了任何可以执行Jenkins任务的系统。节点包括了主节点和从节点,也可以指一个容器,如Docker。

在任何Jenkins实例中主节点都会存在。


3.代理节点agent

在早先的版本的Jenkins中,代理节点被称为从节点(slave),其代表了所有非主节点系统。这类系统由主系统管理,按需分配或者指定执行特定的任务。

随着代理节点和节点之间关系的演进,代理节点在节点上运行。在脚本式流水线中,'节点'特指一个运行代理节点的系统,而在声明式流水线中,其指代一个

特定的代理节点来分配节点。


4.执行器executor

简单的说,执行器就是节点/代理节点用于执行任务的一个插槽。一个节点可以有任意多个执行器。执行器的数量定义了该节点可以执行的并发任务的数量。

当主节点将任务分配给特定节点时,该节点上必须有可用的执行器插槽来立即执行该任务,否则任务会一直处于等待状态,直到一个执行器变为可用。

执行器的数量和其他参数可以在创建节点的时候进行配置。

新建pipeline

新建任务现在流水线


devops系列002——jenkins-pipeline介绍

执行pipeline方式

直接使用pipeline>


devops系列002——jenkins-pipeline介绍

使用Jenkinsfile


devops系列002——jenkins-pipeline介绍


pipeline 语法选择

脚本式:语法灵活、可扩展,但是也意味着更复杂。

优点:

  • 更少的代码段落和弱规范要求
  • 更强大的程序代码能力
  • 更灵活的自定义代码操作
  • 能够构建更复杂的工作流和流水线

缺点:

  • 要求更高的编程水平
  • 语法受限于goovy语法和环境
  • 比声明式语法更复杂
<code>node {    stage("build") {        // 执行构建     }    stage("test") {        // 执行测试     }    stage("deploy") {        try {            // 执行部署         }catch(err){            currentBuild.result = "FAILURE"            mail body: "project build error is here:${env.BUILD_URL}",            from: '[email protected]',            replyTo: '[email protected]',            subject: 'project build failed',            to: '[email protected]'        }    }}/<code>

优点:

  • 更结构化、贴近传统的jenkins web表单形式
  • 可以通过Blue Ocean图形化界面自动生成
  • 更友好的语法检测和错误识别

缺点:

  • 对迭代逻辑比较弱
  • 部分功能缺乏支持
  • 对于复杂的流水线支持弱
<code>pipeline {    agent any    stages {        stage("build") {            steps {                echo 'building...'            }        }        stage("test") {            steps {                echo 'testing...'            }        }        stage("deploy") {            stpes {                echo 'deploying...'            }        }    }    post {        failure {            mail to: '[email protected]', subject: 'the pipeline failed'        }    }}/<code>

下一节开始 pipeline 语法

如果对您有帮助,记得不要忘了给个关注哦!!!

还可以关注我之前的文章:


分享到:


相關文章: