1987WEB视界-分享互联网热门产品和行业

您现在的位置是:首页 > WEB开发 > 正文

WEB开发

devops系列002——jenkins-pipeline介绍

1987web2023-10-06WEB开发112
至于安装jenkins这里就不多说了,如果熟悉docker的话一条命令就解决了。

至于安装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故事

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

监控系列 Prometheus

公司IT系统账号大统一体系