本帖最后由 eagle 于 2020-4-15 11:27 编辑
jenkins Pipline 庖丁解牛
一.Pipline语法讲解1. Pipline的组成Jenkins Pipeline(或简称为“Pipeline”,大写字母为“P”)是一套插件,支持在Jenkins中实现和集成连续交付管道
一个持续交付(CD)管道是一直到你的用户和客户的过程正从版本控制软件的自动化表达。对软件的每次更改(在源代码管理中提交)都会在发布的过程中经历一个复杂的过程。此过程涉及以可靠且可重复的方式构建软件,以及通过多个测试和部署阶段推进构建的软件(称为“构建”)。 Pipeline提供了一组可扩展的工具,用于通过管道域特定语言(DSL)语法 “作为代码”对简单到复杂的传输管道进行建模 。 Jenkins管道的定义被写入一个文本文件(称为a Jenkinsfile),该文件 又可以提交给项目的源代码控制存储库。 这是“作为代码的管道”的基础; 将CD管道视为应用程序的一部分,以便像任何其他代码一样进行版本控制和审查。 2. 为什么要使用pipeline ?Pipeline五大特性
代码: Pipeline以代码的形式实现,通常被检入源代码控制,使团队能够编辑、审查和迭代其CD流程。 可持续性:Jenklins重启或者中断后都不会影响Pipeline Job。 停顿:Pipeline可以选择停止并等待任工输入或批准,然后再继续Pipeline运行。 多功能:Pipeline支持现实世界的复杂CD要求,包括fork/join子进程,循环和并行执行工作的能力 可扩展:Pipeline插件支持其DSL的自定义扩展以及与其他插件集成的多个选项。 3. Pipeline的语法
- Declarative 声明式
- Scripted pipeline 脚本式
4. Pipline Declarative 格式pipeline { agent any stages { stage('Build') { steps { sh 'echo Build' } } stage('Test') { steps { sh 'echo Test'
} } stage('Deploy') { steps { sh 'echo Deploy' } } } } pipeline:代表整条流水线,包含整条流水线的逻辑。 • stages部分:流水线中多个stage的容器。stages部分至少包含一个stage。 • stage部分:阶段,代表流水线的阶段。每个阶段都必须有名称。本例中,build就是此阶段的名称。 • steps部分:代表阶段中的一个或多
5. Scripted PipelineScripted Pipeline对语法的要求比较宽松,顶层可以是node,也可以是stage。node可以嵌套stage,stage反过来也可以嵌套node。典型的脚本式Pipeline语法如下:
node { //node可以指定label 例如 node ('label_name') {} stage("Build") { sh 'echo Building...' }
stage("Test"){ sh 'echo Testing...' }
6. Pipline Declarative 参数详解pipeline { agent any options { buildDiscarder(logRotator(numToKeepStr: '1')) timeout(time: 1, unit: 'HOURS') } parameters { string(name: 'example', defaultValue: 'this is example', description: 'this is description') } environment { NODEJS_HOME = "${tool 'nodejs'}"
|