Jenkins pipeline:pipeline 语法详解

Posted fengjian2016

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jenkins pipeline:pipeline 语法详解相关的知识,希望对你有一定的参考价值。

jenkins  pipeline 总体介绍

 

pipeline 是一套运行于jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排与可视化。

pipeline 是jenkins2.X 最核心的特性, 帮助jenkins 实现从CI 到 CD与 DevOps的转变

 

pipeline 提供一组可扩展的工具, 通过 pipeline domain specific language syntax 可以到达pipeline as code 目的

pipiline as code :  jenkinsfile 存储在项目的 源代码库

 

为什么要使用pipeline

1. 代码: pipeline 以代码的形式实现,通过被捡入源代码控制, 使团队能够编译,审查和迭代其cd流程

2 可连续性: jenkins 重启 或者中断后都不会影响pipeline job

3.停顿: pipeline 可以选择停止并等待人工输入或者批准,然后在继续pipeline运行

4.多功能:  pipeline 支持现实世界的复杂CD要求, 包括fork、join子进程,循环和并行执行工作的能力

5.可扩展: pipeline 插件支持其DSL的自动扩展以及其插件集成的多个选项。

 

 

jenkins pipeline 入门

pipeline 脚本是有groovy 语言实现的

-无需专门学习 groovy

 

pipeline 支持两种语法

  -  Declarative 声明式

  -  Scripted pipeline  脚本式

 

如何创建基本的pipeline

  -  直接在jenkins web ui 网页界面输入脚本

  -  通过常见一个jenkins 可以检入项目的源代码管理库

 

 

Declarativ 声明式 pipeline

声明式pipeline 基本语法和表达式遵循 groovy语法,但是有以下例外:

  -  声明式pipeline 必须包含在固定格式的pipeline{} 块内

  -  每个声明语句必须独立一行, 行尾无需使用分号

  -   块(Blocks{}) 只能包含章节(Sections),指令(Directives),步骤(Steps),或者赋值语句

  -  属性引用语句被视为无参数方法调用。 如input()

 

块(Blocks{})

  -  由大括号括起来的语句: 如 Pipeline{}, Sections{}, parameters{}, script{}

章节(Sections)

  -  通常包括一个或者多个指令或步骤 如 agent,post,stages,steps

指令(Directives)

  -  environment, options, parameters, triggers, stage, tools, when

步骤(steps)

  -  执行脚本式pipeline, 如script{}

 

 

agent

需要 必须存在,agent必须在pipeline块内的顶层定义,但是stage内是否使用为可选
参数 any/none/label/node/docker/dockerfile
常用参数 label/customWorkspace/reuseNode
展示:
agent { label ‘this k8s-api-label‘} 

agent {

    node{

      label ‘ this is k8sapi-label‘

      customWorkspace ‘/some/other/path‘

    }

}

agent {

     docker {

        image ‘im-web‘

        label ‘this is k8sapi-label‘

        args ‘-v /tmp:/tmp‘

      }

}

 

# customWorkspace  node节点的工作空间

post

需要 否,用于pipeline的最外层或者stage{}中
参数
常用选项

构建后操作的内置判定条件

always,changed,failure,sucess,unstable,aborted

展示:
pipeline {
    agent any
    stages {
        stage(Example) {
            steps {
                echo Hello World
            }
        }
    }
    post {
        always {
            echo I will ........!
        }
    }
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

stages

需要 是,包括顺序执行的一个或者多个stage命令
参数
常用选项

构建后操作的内置判定条件

always,changed,failure,sucess,unstable,aborted

展示:
pipeline {
    agent any
    stages {
        stage(‘Example‘) {
            steps {
                echo ‘Hello World‘
            }
        }
    }
      stage(‘echo‘) {
          steps {
              echo ‘I will ........!‘
          }
      }
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

steps

需要 是,steps位于stage指令块内部,包括一个或者多个step
参数
说明

仅有一个step的情况下可以忽略关键字step及其{}

展示:
pipeline {
    agent any
    stages {
        stage(‘Example‘) {
            steps {
                echo ‘Hello World‘
            }
        }
    }
      stage(‘echo‘) {
          steps {
              echo ‘I will ........!‘
          }
      }
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Directives (指令)

 

environment

需要 是,environment 定义了一组全局的环境变量键值对
参数
说明

存在于pipeline{} 或者stage指令内,

注意特殊方法credentials() ,可以获取jenkins中预定义的凭证明文内容

展示:
pipeline {
    agent any
    stages {
        stage(‘Example‘) {
            steps {
                echo ‘Hello World‘
            }
        }
    }
      stage(‘echo‘) {
          steps {
              echo ‘I will ........!‘
          }
      }
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

11111

以上是关于Jenkins pipeline:pipeline 语法详解的主要内容,如果未能解决你的问题,请参考以下文章

jenkins之-创建第一个pipeline

Jenkins pipeline的优点

Jenkins pipeline:pipeline 使用之语法详解

Jenkins 配合Pipeline使用Docker

jenkins pipeline 制品相关步骤

13-Jenkins-创建Pipeline项目