Jenkins 持续集成 Pipeline 教程

Jenkins Pipeline总体介绍
1.Pipeline 是Jenkins 2.X核心特性,帮助Jenkins实现从CI到CD与DevOps的转变
2.Pipeline 简而言之,就是一套运行于Jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排与可视化。
什么是Jenkins Pipeline
1.Jenkins Pipeline是一组插件,让Jenkins可以实现持续交付管道的落地和实施。
2.持续交付管道(CD Pipeline)是将软件从版本控制阶段到交付给用户或客户的完整过程的自动化表现。
3.软件的每一次更改(提交到源代码管理系统)都要经过一个复杂的过程才能被发布
Why Pipeline?
本质上,Jenkins 是一个自动化引擎,它支持许多自动模式。 Pipeline向Jenkins中添加了一组强大的工具, 支持用例 简单的CI到全面的CD pipeline。通过对一系列的相关任务进行建模, 用户可以利用pipeline的很多特性:
• 代码:Pipeline以代码的形式实现,通常被检入源代码控制,使团队能够编辑,审查和迭代其CD流程。
• 可持续性:Jenkins重启或者中断后都不会影响Pipeline Job。
• 停顿:Pipeline可以选择停止并等待人工输入或批准,然后再继续Pipeline运行。
• 多功能:Pipeline支持现实世界的复杂CD要求,包括fork/join子进程,循环和
并行执行工作的能力。
• 可扩展:Pipeline插件支持其DSL的自定义扩展以及与其他插件集成的多个选项。
Pipeline与freestyle区别
1.Job调度方式
pipeline:通过结构化pipeline 语法进行调度,易于理解与阅读
freestyle:通过jenkins api或者cli进行调度
2.Job显示形式
pipline:提供上帝视角(全局视图)
freestyle:没有视图
Jenkins Pipeline 基础语法
官网链接:https://jenkins.io/doc/
Pipeline 支持两种语法
1.声明式(jenkins2.5新加入的语法)
特点:
1.最外层必须由pipline{ //do something }来进行包裹
2.不需要分好作为分隔符,每个语句必须在一行内
3.不能直接使用groovy语句(例如循环判断等),需要被script {}包裹
2.脚本式
特点:
1.最外层有node{}包裹
2.可直接使用groovy语句
Declarative Pipeline(声明式)核心概念
核心概念用来组织pipeline的运行流程
1.pipeline :声明其内容为一个声明式的pipeline脚本
2.agent:执行节点(job运行的slave或者master节点)
3.stages:阶段集合,包裹所有的阶段(例如:打包,部署等各个阶段)
4.stage:阶段,被stages包裹,一个stages可以有多个stage
5.steps:步骤,为每个阶段的最小执行单元,被stage包裹
6.post:执行构建后的操作,根据构建结果来执行对应的操作
根据上面几个概念就能够轻易的创建一个简单的pipeline

pipeline{
   
    agent any
    stages{
   
        stage("first stage"){
   
            steps("first steps"){
   
                echo "this is first step"
            }
        }
    }
    post{
   
        always{
   
            echo "this is ending..."
        }
    }
}

下面针对几个核心概念,逐一进行说明

1.pipeline
作用域:应用于全局最外层,表明该脚本为声明式pipeline
是否必须:必须
参数:无
2.agent
作用域:可用在全局与stage内
是否必须:是,
参数:any,none, label, node,docker,dockerfile

pipeline{
   
    agent any  //全局必须带有agent表明此pipeline执行节点
    stages{
   
        stage("first stage"){
    
            agent {
    
                label 'master' 
            } //具体执行的步骤节点,非必须 steps{ echo "this is first step" } 
        } 
    } 
} 

参数示例:

//运行在任意的可用节点上 agent any //全局不指定运行节点,由各自stage来决定 agent none
//运行在指定标签的机器上,具体标签名称由agent配置决定 agent { label ‘master’ }
//node参数可以扩展节点信息 agent { node { label ‘master’ customWorkspace ‘xxx’ }
} //使用指定运行的容器 agent { docker ‘python’ }
3.stages
作用域:全局或者stage阶段内,每个作用域内只能使用一次
是否必须:全局必须
参数:无

pipeline{
   
    agent any
    stages{
   
        stage("first stage"
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值