5

5-1 Jenkins Pipeline语法

 2 years ago
source link: https://zeyangli.github.io/chapter5/1/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Jenkins2 Pipeline Docs

Version 0.0.1

☁️☀️🌫🌩

5-1 Jenkins Pipeline语法

1. 认识Pipleine

1.1 Pipeline是什么?

  • Pipeline是Jenkins的核心功能,提供一组可扩展的工具。
  • 通过Pipeline 的DSL语法可以完成从简单到复杂的交付流水线实现。
  • jenkins的Pipeline是通过Jenkinsfile(文本文件)来实现的。
  • 这个文件可以定义Jenkins的执行步骤,例如检出代码。

1.2 Jenkinsfile

  • Jenkinsfile使用两种语法进行编写,分别是声明式和脚本式。
  • 声明式和脚本式的流水线从根本上是不同的。
  • 声明式是jenkins流水线更友好的特性。
  • 脚本式的流水线语法,提供更丰富的语法特性。
  • 声明式流水线使编写和读取流水线代码更容易设计。

1.3 为什么使用Pipeline?

本质上,jenkins是一个自动化引擎,它支持许多自动模式。流水线向Jenkins添加了一组强大的工具,支持用例、简单的持续集成到全面的持续交付流水线。 通过对一系列的发布任务建立标准的模板,用户可以利用更多流水线的特性,比如: - 代码化: 流水线是在代码中实现的,通常会存放到源代码控制,使团队具有编辑、审查和更新他们项目的交付流水线的能力。 - 耐用性:流水线可以从Jenkins的master节点重启后继续运行。 - 可暂停的:流水线可以由人功输入或批准继续执行流水线。 - 解决复杂发布: 支持复杂的交付流程。例如循环、并行执行。 - 可扩展性: 支持扩展DSL和其他插件集成。

构建一个可扩展是Jenkins的核心价值,流水线可以通过ShareLibrary的方式来扩展。 下面是一个CD的场景实例

管理页面

2. Pipeline概念

参考文档:https://jenkins.io/zh/doc/book/pipeline/

2.1 node/agent(节点)

节点是一个机器,可以是Jenkins的master节点也可以是slave节点。通过node指定当前job运行的机器(这个是脚本式语法)。

  • 声明式Pipeline: 使用agent指定运行的slave节点可以是label。

    pipeline{
    agent any
    stages{
       //    
    }
    
    }
  • 脚本式Pipleine: 使用node指定运行slave可以是label。

    node("slave"){
    stage("GetCode"){
        //
    }
    }

2.2 stage(阶段)

stage定义了在整个流水线的执行任务的概念性的不同的阶段。例如: GetCode、Build、Test、Deploy、CodeScan每个阶段。

  • 声明式pipeline: 定义stages->stage。

    pipeline{
    agent any
    stages{
        stage("GetCode"){
            //steps  
        }
            
        stage("build"){
           //step
        }
        
    }
    
    }
  • 脚本式Pipeline: 直接使用stage。

    node("slave"){
    stage("GetCode"){
        //
    }
        
    stage("build"){
        //
    }
    }

2.3 step(步骤)

step是每个阶段中要执行的每个步骤。例如: 在执行GetCode的时候需要判断用户提供的参数srcType的值是Git还是svn。

  • 声明式Pipeline: stage->steps。

    pipeline{
    agent any
    stages{
        stage("GetCode"){
            steps{ 
                sh "ls "    //step
            }
            
        }    
    }
    
    }
  • 脚本式Pipeline: 不需要step关键字。

    node("slave"){
    stage("GetCode"){
        //step
        if("${srcType}" == "Git"){
            //用git方式代码检出
        } else if ("${srcType}" == "SVN"){
            //用svn方式代码检出
        } else {
            error "srcType is not in [Git|SVN]"
        }
    }
    }

3. Jenkinsfile生成与管理

3.1 BlueOcean(生成)

如果你是新手,Blue Ocean可以帮助你设置流水线,通过图形化流水线编辑器自动创建和编写Jenkinsfile。(需要安装blueocean 插件)

3.2 WEBUI(管理)

项目->配置 管理页面

3.3 SCM(管理)

Jenkinsfile编写完成后上传到gitlab进行版本控制。 管理页面

使用时,通过项目的配置gitlab仓库地址和分支信息以及文件名称信息。 管理页面

Last updated on 17 Oct 2017


Published on 17 Oct 2017
Edit on GitHub

Prev - 第五章 JenkinsPipeline [待更新😄] Next - 5-2 Jenkins 声明式与脚本式语法

Powered by Hugo. Theme by TechDoc. Designed by Thingsym.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK