jenkins pipeline之语法篇

目录

一、为什么使用pipeline

二、常用的指令

agent

stages

stage

steps

parameters

script

三、不太常用的指令

environment

input

post

tools

triggers

when


一、为什么使用pipeline

        我之前实现了一套完整的升级自动化构建流程,每个步骤分别对应一个Job(为了各Job之间能够方便的自由组合)。现在想根据不同的测试场景,将多个Job串联起来,准备用pipeline实现。

二、常用的指令

agent

        指定一个Jenkins节点来运行我的pipeline。

pipeline {
    agent{
        label "192.168.210.62"
    } 
}

stages

        这个部分允许在流水线上生成不同的阶段,这些阶段将在运行任务时显示为不同的段。

pipeline {
    agent any
    stages {
        ...
    }
}

stage

        必须在“stages”部分上定义至少一个“stage”部分。一个Pipeline有多个Stage组成,每个Stage包含一组Step。一个Stage可以跨多个Node执行,即Stage实际上是Step的逻辑分组。

pipeline {
    stages {
        stage ('aaa') {
            ...
        }
        stage ('bbb') {
            ...
        }
        stage ('ccc') {
            ...
        }
        stage ('ddd') {
            ...
        }
        stage ('eee') {
            ...
        }
        stage ('fff') {
            ...
        }
    }
}

steps

        “steps”被定义为在“stage”内。 在“steps”部分中必须至少定义一个步骤。

steps {
    sh 'echo "A one line step"'
    echo "A multiline step"'
}

parameters

        该指令允许您定义脚本中要使用的参数列表。一旦触发流水线,应提供参数。应该在“pipeline”级别定义它,并且整个流水线只允许一个指令。

        有效参数类型有:

布尔值参数

booleanParam

parameters { booleanParam(name: 'DEBUG_BUILD', defaultValue: true, description: '') }

选项参数

choice

parameters { choice(name: 'CHOICES', choices: ['one', 'two', 'three'], description: '') }

凭据参数

credentials

文件参数

file

parameters { file(name: 'FILE', file: 'abc' }

备注:直接使用Jenkins Pipeline的File parameter,无法将文件上传到当前job的workspace下

密码参数

password

parameters { password(name: 'PASSWORD', defaultValue: 'SECRET', description: 'A secret password') }

运行时参数

run

字符参数

string

parameters { string(name: 'DEPLOY_ENV', defaultValue: 'staging', description: '') }

文本参数

text

parameters { text(name: 'DEPLOY_TEXT', defaultValue: 'One\nTwo\nThree\n', description: '') }

pipeline {
    parameters {
        string(name: 'user', defaultValue: 'wxt_hillwill', description: 'beautiful girl')
    }
}

script

        此步骤用于将脚本化流水线语句添加到声明式流水线中,从而提供更多功能。此步骤必须包括在“stage”级别。

pipeline {
    agent any
    stages {
        stage('showme') {
            steps {
                echo "beautiful girl"
                script {
                    …
                }
            }
        }
    }
}

三、不太常用的指令

environment

        定义环境变量

input

        input指令在阶段级别定义,提供提示输入的功能。该阶段将被暂停,直到用户手动确认为止。

        以下配置选项可用于此指令:

  • message:这是必需的选项,其中指定了要显示给用户的消息。
  • id:可选标识符。 默认情况下,使用“阶段”名称。
  • ok:“确定”按钮的可选文本。
  • submitter:允许提交输入的用户或外部组名的可选列表。 默认情况下,允许任何用户。
  • submitterParameter:要使用提交者名称设置的环境变量的可选名称(如果存在)。
  • parameters:提交者将提供的可选参数列表。

post

        可以在流水线级别或每个阶段上添加 post,一旦阶段或流水线完成,便会执行其中包含的语句。可以使用几个 post 条件来控制是否执行该 post:

  • always:无论完成状态如何,都会执行步骤。
  • changed:仅当完成结果与上次运行的状态不同时才执行。
  • fixed:仅在完成结果是成功且上次运行失败时执行
  • regression:仅在当前执行失败,中止或不稳定并且上一次运行成功时执行。
  • aborted:仅在流水线或阶段中止时才执行步骤。
  • failure:仅在流水线或阶段失败时才执行步骤。
  • success:仅在流水线或阶段成功时才执行步骤。
  • unstable:仅当流水线或阶段不稳定时才执行步骤。

tools

        可以在流水线级别或阶段级别添加“tools”指令。 它允许您指定要在脚本上使用的 Maven,JDK 或 Gradle 版本。 必须在“全局工具配置” Jenkins 菜单上配置这些工具中的任何一个,在撰写本文时,这三个工具都受支持。

triggers

        触发器允许 Jenkins 通过使用以下任何一个可用的方式自动触发流水线:

  • cron:通过使用 cron 语法,它可以定义何时重新触发流水线。
  • pollSCM:通过使用 cron 语法,它允许您定义 Jenkins 何时检查新的源存储库更新。如果检测到更改,则将重新触发流水线。(从 Jenkins 2.22 开始可用)。
  • upstream:将 Jenkins 任务和阈值条件作为输入。 当列表中的任何任务符合阈值条件时,将触发流水线。

when

        可以根据“when”指令中定义的条件执行流水线步骤。如果条件匹配,将运行相应阶段中定义的步骤。它应该在阶段级别定义。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Jenkins Pipeline是一种可将软件交付过程定义为代码的方式。它使用一种基于Groovy的DSL(领域特定语言)来描述构建和部署过程。下面是一些Jenkins Pipeline语法要点: 1. 定义Pipeline:在Jenkinsfile中使用`pipeline`关键字来定义Pipeline。可以选择Declarative Pipeline或Scripted Pipeline。 2. Declarative Pipeline:使用`pipeline`块包裹整个Pipeline,并使用`stages`块来定义各个阶段。每个阶段内可以包含多个步骤。 ```groovy pipeline { agent any stages { stage('Build') { steps { // 构建步骤 } } stage('Test') { steps { // 测试步骤 } } // 可以定义更多阶段 } } ``` 3. Scripted Pipeline:使用`node`或`stage`等关键字来定义节点或阶段,并在节点或阶段内编写Groovy脚本。 ```groovy node { // 节点级别的操作 stage('Build') { // 构建步骤 } stage('Test') { // 测试步骤 } // 可以定义更多阶段 } ``` 4. 步骤(Steps):在每个阶段或节点内,可以使用各种Jenkins提供的步骤来执行具体任务,例如构建、测试、部署等。步骤可以是Jenkins内置的或插件提供的。 ```groovy stage('Build') { steps { // 执行构建任务 sh 'mvn clean install' } } ``` 5. 环境变量:可以使用`environment`块来定义Pipeline的环境变量。 ```groovy pipeline { environment { MY_VAR = 'value' } stages { // 阶段定义 } } ``` 以上是Pipeline的基本语法要点,你可以根据实际需求来组织和扩展Pipeline。更详细的语法和示例可以参考Jenkins官方文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值