虚拟化容器,大数据,DBA,中间件,监控。

Jenkins 流水线语法 01 pipeline作业

21 12月
作者:admin|分类:系统运维

什么是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的核心功能。 该文件用于描述流水线的过程。以下是一个简单的实例:

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是不管怎么样总是要做的一些事情

浏览439 评论0
返回
目录
返回
首页
Jenkins 流水线语法 02 片段生成器和声明式语法生成器 Jenkins 基础 05 系统权限管理