Jenkins 流水线语法 01 pipeline作业

什么是Pipeline ?


Pipeline

Jenkins的核心是Pipeline(流水线项目),实现了Pipeline As Code即我们将构建部署测试等步骤全部以代码的形式写到Jenkinsfile中。Jenkins在运行Pipeline任务的时候会按照Jenkinsfile中定义的代码顺序执行。写Jenkinsfile是一项很重的工作,如果稍不注意很容易造成Jenkins的流水线任务失败。Jenkinsfile类似于Dockerfile,具有一套特定的语法。

Stage

在Jenkins pipeline中,一条流水线是由多个阶段组成的,每个阶段一个stage。例如:构建、测试、部署等等。

Agent

Jenkins采用分布式架构,分为server节点和agent节点。server节点也是可以运行构建任务的,但我们一般使其主要来做任务的调度。(毕竟server节点挂了就都...)agent节点专门用于任务的执行。随着现在容器的盛行,我们可以将server节点和agent节点在容器或者基于Kubernetes中部署。关于agent节点借助容器可以实现动态的资源分配等等好处。agent节点可以分为静态节点和动态节点。

  • 静态节点是固定的一台vm虚机或者容器。
  • 动态节点是随着任务的构建来自动创建agent节点。

我们可以根据地铁线路图来理解pipeline :

  • pipeline  等同于 13号线
  • agent    等同于  13号线地铁🚇
  • stages   等同于  13号线完整的站点路线
  • stage    等同于   13号线中的一个站点

image.png

image.png

Pipeline作业


安装Pipeline插件

在创建Pipeline类型的作业的时候,需要提前安装好pipeline插件,不然可能会出现找不到pipeline类型的作业。

进入插件管理, 搜索关键字"pipeline" 。安装后重启一下。

image.png

当Jenkins重启成功后,我们创建一个流水线类型的作业。

image.png

点击创建,会进入作业的配置页面。此时我们可以对比一下pipeline类型的项目和自由风格的项目的区别。

Jenkins file两种不同的管理方式


一种是将代码写到pipeline里面去运行还有一种是下载这个脚本,比如将脚本放在了版本控制库里面,在这里面。一种是直接写到作业里面,还有一个是放在版本系统里面去做控制。

与自由风格项目对比


流水线类型作业

image.png

自由风格类型作业

image.png

总结: General和构建触发器都是相同的, 自由风格的作业需要在UI页面配置详细的构建过程和构建后操作,而流水线类型的作业是直接将构建过程和操作放到了"流水线"中配置,以代码的方式描述流水线。

流水线回放功能(调试pipeline)


 借助回放可以修改上次构建所使用的Jenkinsfile代码, 进行更改后可以立即运行进行调试。

image.png

Jenkinsfile


Jenkinsfile的是实现Pipeline as Code的核心功能。 该文件用于描述流水线的过程。以下是一个简单的实例:(声明式语法有局限性,比如想写一些if else是不行的,那么需要加上script,里面写上脚本,下面就是声明式里面又嵌入了脚本式的script标签,这样就很灵活了)

pipeline{
    //指定运行此流水线的节点
    agent { node { label "build"}}
    
    //管道运行选项
    options {
        skipStagesAfterUnstable()
    }
    //流水线的阶段
    
    stages{
        //阶段1 获取代码
        
        stage("CheckOut"){
            steps{
                script{
                    println("获取代码")
                }
            }
        }
        
        stage("Build"){
            steps{
                script{
                    println("运行构建")
                }
            }
        }
   
    }
    
    
    post {
        always{
            script{
                println("流水线结束后,经常做的事情")
            }
        }
        
        success{
            script{
                println("流水线成功后,要做的事情")
            }
        
        }
        failure{
            script{
                println("流水线失败后,要做的事情")
            }
        }
        
        aborted{
            script{
                println("流水线取消后,要做的事情")
            }
        
        }
    }
}

  • 使用agent{},指定流水线要运行的节点(可以使用名称或者标签
  • 指定options{} 定义流水线运行时的一些选项
  • 指定stages{}(stages包含多个stage,stage包含steps。是流水线的每个步骤)
  • 指定post{}(定义好此流水线运行成功或者失败后,根据状态做一些任务

解释一下上面的pipeline

在pipeLine里面需要指定构建节点,构建节点里面有些性质,比如名称,名称可以确定唯一的节点,名称是一个,标签是一组,一个标签下面可以包含多个不同的节点。使用标签会找该标签下面可用的节点

Options这个是构建时候的选项,比如参数,丢弃旧的构建

post就是构建后的操作,post就是根据流水线的状态去做一些事情,always是不管怎么样总是要做的一些事情

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值