jenkins基础

声明性限制了用户具有更严格和预定义结构的可用性,使其成为更简单连续输送Pipeline的理想选择。

脚本化提供了极少的限制,因为Groovy本身只能对结构和语法进行限制,而不是任何Pipeline专用系统 。

顾名思义,Declarative Pipeline鼓励声明式编程模型。 尽管Scripted Pipeline遵循更命令性的编程模型 。

1、 声明式 VS 脚本式  steps

声明式特点:

1.最外层必须由pipline{ //do something }来进行包裹

2.不需要分好作为分隔符,每个语句必须在一行内

3.不能直接使用groovy语句(例如循环判断等),需要被script {}包裹

脚本式特点:

1.最外层有node{}包裹

2.可直接使用groovy语句

2、 超时重试 Jenkins 运行多个步骤_w3cschool

部署”阶段重试flakey-deploy.sh脚本3次,然后等待health-check.sh脚本执行最多3分钟

3、 post  当Pipeline完成执行后,您可能需要运行清理步骤或根据Pipeline的结果执行某些操作。可以在本post节中执行这些操作。 Jenkins 运行多个步骤_w3cschool

always

运行,无论Pipeline运行的完成状态如何。

changed

只有当前Pipeline运行的状态与先前完成的Pipeline的状态不同时,才能运行。

failure

仅当当前Pipeline处于“失败”状态时才运行,通常在Web UI中用红色指示表示。

success

仅当当前Pipeline具有“成功”状态时才运行,通常在具有蓝色或绿色指示的Web UI中表示。

unstable

只有当前Pipeline具有“不稳定”状态,通常由测试失败,代码违例等引起,才能运行。通常在具有黄色指示的Web UI中表示。

aborted

只有当前Pipeline处于“中止”状态时,才会运行,通常是由于Pipeline被手动中止。通常在具有灰色指示的Web UI中表示。

4、执行环境   Jenkins 定义执行环境_w3cschool

当Pipeline执行时,Jenkins将自动启动指定的容器并执行其中定义的步骤

5、 环境变量

  1. // 变量定义
  2. def DEPLOY_ENVIRONMENT = "dev"
  3. // 变量定义
  4. def DEPLOY_VER = "1.1"
  5. // if对变量进行判断。
  6. if (DEPLOY_ENVIRONMENT == "dev") {
  7.     CURRENT_ENVIRONMENT="development"
  8.     // else if 的写法。
  9. } else if (DEPLOY_ENVIRONMENT == "test"){
  10.     CURRENT_ENVIRONMENT="test"
  11. }
  12. // 变量定义
  13. def CURRENT_VER = "${CURRENT_ENVIRONMENT}-${DEPLOY_VER}"
  14. node {
  15.    echo "当前的部署环境为:${CURRENT_ENVIRONMENT}"
  16.    echo "当前的部署版本为:${CURRENT_VER}"
  17. }

6、证书 密码 Jenkins 使用环境变量_w3cschool

7、 通知  post

8、 agent的使用  Pipeline 语法_w3cschool

any

在任何可用的代理上执行Pipeline或舞台。例如: agent any

none

当在 pipeline块的顶层应用时,将不会为整个Pipeline运行分配全局代理,并且每个 stage部分将需要包含其自己的 agent部分。例如: agent none

label

使用提供的标签在Jenkins环境中可用的代理上执行Pipeline或阶段性执行。例如: agent { label 'my-defined-label' }

node

agent { node { label 'labelName' } }

行为相同  agent { label 'labelName' },但 node允许其他选项(如 customWorkspace)。

docker

  Pipeline,或阶段执行,用给定的容器将被动态地供应一个节点预先配置成接受基于Docker-based Pipelines,或匹配的任选定义的节点上  label的参数。  docker还可以接受一个 args可能包含直接传递给 docker run调用的参数的参数。例如: agent { docker 'maven:3-alpine' }

: agent none在Pipeline顶层定义确保执行者不会被不必要地分配。使用 agent none也强制每个 stage部分包含自己的 agent部分

9 options  Pipeline 语法_w3cschool

options指令能够提供给脚本更多的选项

    1. buildDiscarder:指定build history与console的保存数量
    2. 用法:options { buildDiscarder(logRotator(numToKeepStr: '1')) }
    3. disableConcurrentBuilds:设置job不能够同时运行
    4. 用法:options { disableConcurrentBuilds() }
    5. skipDefaultCheckout:跳过默认设置的代码check out
    6. 用法:options { skipDefaultCheckout() }
    7. skipStagesAfterUnstable:一旦构建状态变得UNSTABLE,跳过该阶段
    8. 用法:options { skipStagesAfterUnstable() }
    9. checkoutToSubdirectory:在工作空间的子目录进行check out
    10. 用法:options { checkoutToSubdirectory('children_path') }
    11. timeout:设置jenkins运行的超时时间,超过超时时间,job会自动被终止
    12. 用法:options { timeout(time: 1, unit: 'MINUTES') }
    13. retry :设置retry作用域范围的重试次数
    14. 用法:options { retry(3) }
    15. timestamps:为控制台输出增加时间戳
    16. 用法:options { timestamps() }

备注:当options作用在stage内部的时候,可选的只能是跟stage相关的选项(skipDefaultCheckout、timeout、retry、timestamps)

10、 parameters  Pipeline 语法_w3cschool

可用参数

字符串类型的参数,例如:  parameters { string(name: 'DEPLOY_ENV', defaultValue: 'staging', description: '') }

booleanParam

一个布尔参数,例如:  parameters { booleanParam(name: 'DEBUG_BUILD', defaultValue: true, description: '') }

实战案例 版本分支参数:

声明式:

  1. // Using git without checkout
  2. pipeline {
  3.   agent any
  4.   parameters {
  5.     gitParameter branchFilter: 'origin/(.*)', defaultValue: 'master', name: 'BRANCH', type: 'PT_BRANCH'
  6.   }
  7.   stages {
  8.     stage('Example') {
  9.       steps {
  10.         git branch: "${params.BRANCH}", url: 'https://github.com/jenkinsci/git-parameter-plugin.git'
  11.       }
  12.     }
  13.   }
  14. }

脚本:

  1. properties([
  2.     parameters([
  3.         gitParameter(branch: '',
  4.                      branchFilter: 'origin/(.*)',
  5.                      defaultValue: 'master',
  6.                      description: '',
  7.                      name: 'BRANCH',
  8.                      quickFilterEnabled: false,
  9.                      selectedValue: 'NONE',
  10.                      sortMode: 'NONE',
  11.                      tagFilter: '*',
  12.                      type: 'PT_BRANCH')
  13.     ])
  14. ])
  15. node {
  16.     git branch: "${params.BRANCH}", url: 'https://github.com/jenkinsci/git-parameter-plugin.git'
  17. }

11、 触发器  

cron

作用:以指定的时间来运行pipeline

  triggers { cron('H 4/* 0 0 1-5') }

pollSCM

作用:以固定的时间检查代码仓库更新(或者当代码仓库有更新时)自动触发pipeline构建

   triggers { pollSCM('H 4/* 0 0 1-5') }

12 tools

支持的工具

maven

jdk

gradle

13  when   Pipeline 语法_w3cschool

该when指令允许Pipeline根据给定的条件确定是否执行该阶段

作用: stage指令内

内置条件

branch

当正在构建的分支与给出的分支模式匹配时执行阶段,例如:when { branch 'master' }。请注意,这仅适用于多分支Pipeline。

environment

当指定的环境变量设置为给定值时执行阶段,例如: when { environment name: 'DEPLOY_TO', value: 'production' }

expression

当指定的Groovy表达式求值为true时执行阶段,例如: when { expression { return params.DEBUG_BUILD } }

not

当嵌套条件为false时执行阶段。必须包含一个条件。例如:when { not { branch 'master' } }

allOf

当所有嵌套条件都为真时,执行舞台。必须至少包含一个条件。例如:when { allOf { branch 'master'; environment name: 'DEPLOY_TO', value: 'production' } }

anyOf

当至少一个嵌套条件为真时执行舞台。必须至少包含一个条件。例如:when { anyOf { branch 'master'; branch 'staging' } }

14 script  在声明式 pipeline 中 使用脚本式语法

15 if else   流控

16 input:input指令允许暂时中断pipeline执行,等待用户输入,根据用户输入进行下一步动作

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_36013896

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值