前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >新手真的别再用过时的jenkins freesytle了,10分钟教你搞定快速编写jenksinfile,快速离线调试

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

作者头像
DevOps在路上
发布2024-04-15 15:58:03
920
发布2024-04-15 15:58:03
举报
文章被收录于专栏:DevOps实践之路DevOps实践之路

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结构快速解析

  • 语法参考:https://www.jenkins.io/doc/book/pipeline/syntax/

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

  • Declarative 声明式(在Pipeline plugin 2.5中引入)
  • Scripted 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{}

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

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

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

代码语言:javascript
复制
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(代码片段生成器,语法检查器)

Replay Pipeline

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

DSL Reference 语法参考手册

  • 全局变量引用

Jenkinsfile本地校验

Jenkins Pipeline Linter Connector (vscode 插件)

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

  • 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

  • https://brokenco.de/2020/12/25/jenkins-declarative-parser.html
  • https://github.com/rtyler/jdp
代码语言:javascript
复制
❯ jdp check data/valid/complex-deployment/Jenkinsfile
Checking: data/valid/complex-deployment/Jenkinsfile
Looks valid! Great work!
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-04-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DevOps在路上 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为什么要使用pipeline
  • Pipeline结构快速解析
  • Pipeline编写的辅助工具
    • Snipper Generator(代码片段生成器,语法检查器)
      • Replay Pipeline
        • DSL Reference 语法参考手册
        • Jenkinsfile本地校验
          • Jenkins Pipeline Linter Connector (vscode 插件)
            • Jenkins Declarative Parser
            相关产品与服务
            CODING DevOps
            CODING DevOps 一站式研发管理平台,包括代码托管、项目管理、测试管理、持续集成、制品库等多款产品和服务,涵盖软件开发从构想到交付的一切所需,使研发团队在云端高效协同,实践敏捷开发与 DevOps,提升软件交付质量与速度。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档