新手真的别再用过时的jenkins freestyle了,10分钟教你搞定快速编写jenksinfile,快速离线调试

Pipeline是一套运行于jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排与可视化。它通过Domain Specific Language(DSL)syntax定义Pipeline As Code并且实现持续交付的目的。

Pipeline是Jenkins2.X的最核心的特性,帮助Jenkins实现从CI到CD与DevOps的转变、

注:Jenkins 1.0 只能通过UI界面手动操作来"描述"流水线; Jenkins 2.0 开始支持pipeline as code.

为什么要使用pipeline

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

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

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

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

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

Pipeline结构快速解析

Jenlins Pipeline的脚本语法是由Groovy语言实现,学习成本较低,简单易学。 目前Jenlins Pipeline支持两种语法:

  • Declarative 声明式(在Pipeline plugin 2.5中引入)

  • Scripted Pipeline 脚本式

image.png

声明式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{}

Jenkins pipeline包含两类元素:stages和steps。如下图:

image.png

Stage:阶段,一个Pipeline可以划分成若干个Stage,每个Stage代表一组操作,例如:"Build","Test","Deploy"。 注意,Stage是一个逻辑分组的概念,可以跨多个Node

Step:步骤,Step是最基本的操作单元,小到创建一个目录,大到构建一个Docker镜像,由各类Jenklins Plugin提供,例如:sh 'make' Node:节点,一个Node就是一个Jenkins节点,或者是Master,或者是Agent,是执行Step的具体运行环境。

pipeline{
    agent any
    stages {
        stage('Build') {
            steps{
                echo 'This is a build step' 
            }
        }
        stage('Test') {
            steps{
                echo 'This is a test step'  
            }
        }
        stage('Deploy') {
            steps{
                echo 'This is a deploy step'    
            }
        }
    }
}

Pipeline编写的辅助工具

Snipper Generator(代码片段生成器,语法检查器)

image.png

Replay Pipeline

重放pipeline,可以修改script,修改后的不存入config.xml

DSL Reference 语法参考手册

  • 全局变量引用

image.png

Jenkinsfile本地校验

Jenkins Pipeline Linter Connector (vscode 插件)

image.png

如下图所示,插件按照后需要配置如下参数:

  • jenkins.pipeline.linter.connector.url 是 Jenkins 期望的 POST 请求地址,包含你要校验的 Jenkinsfile 文件。通常为 http://<your_jenkins_server:port>/pipeline-model-converter/validate。

  • jenkins.pipeline.linter.connector.user 允许指定你的 Jenkins 用户名。

  • jenkins.pipeline.linter.connector.pass 允许指定你的 Jenkins 密码。

  • jenkins.pipeline.linter.connector.crumbUrl 当你的 Jenkins 启用了 CRSF 时必须指定。通常为 http://<your_jenkins_server:port>/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,%22:%22,//crumb)。

Ctrl+Shift+P执行如下命令,对编写的Jenkinsfile进行校验

Jenkins Declarative Parser

相关推荐
henan程序媛1 天前
Jenkins Pipline流水线
运维·pipeline·jenkins
wudinaniya2 天前
使用rsync+jenkins实现服务自动部署全流程
运维·jenkins·自动化部署
henan程序媛2 天前
jenkins项目发布基础
运维·gitlab·ansible·jenkins
小石潭记丶2 天前
elasticsearch设置账号和密码
大数据·elasticsearch·jenkins
识途老码3 天前
Centos7安装Jenkins
运维·servlet·jenkins
奔跑吧邓邓子3 天前
Jenkins从入门到精通,构建高效自动化流程
servlet·自动化·jenkins
江南剑雨4 天前
jenkinsfile实现镜像构建、发布
linux·运维·jenkins
小韩加油呀4 天前
jenkins配置eureka、nacos发布优雅上下线服务
运维·eureka·nacos·jenkins·优雅上下线
THE WHY4 天前
Jenkins pipeline配置示例
运维·ci/cd·jenkins
寻爱的希斯克利夫4 天前
Jenkins: fontconfig head is null, check your fonts or fonts configuration;
运维·jenkins