Jenkins pipeline之声明式的jenkinsfile

内置的关键字

  • pipeline : 是pipeline的跟节点
  • agent: 定义piple使用哪个账号在哪个机器上执行
  • post: 定义pipeline最后执行的一组任务,支持多种条件判断always, changed, fixed, regression, aborted,failure, success, unstable, unsuccessful, and cleanup.
  • stages: 是多个stage的父节点。
  • stage: 代表整个pipleline里的一个阶段,stage里面才是具体的steps。
  • steps: 定义在stage的内部,表示具体如何执行。
  • environment: 定义公用的环境变量
  • options: 定义pipeline或者plugin的参数设置。
  • parameters: 定义了整个pipeline的外部参数,必须有默认值,用户也可以在启动时指定新的参数
  • triggers: 定义如何触发pipeline,例如cron,pollSCM,或者upstream。
  • tools: 定义需要安装的工具,且会自动加入到PATH
  • input: 允许pipeline与用户交互,等待用户确认然后继续。
  • when: 条件语句

pipeline的实例代码

其实还是非常直观易懂的:

pipeline {
agent {
node {
label 'DEBIAN8'
}
}
triggers {
cron('H */4 * * 1-5')
}
environment {
ARTIFACTORY_URL = 'https://path.to.artifacts/some-registry'
}
options {
disableConcurrentBuilds()
retry(1)
skipStagesAfterUnstable()
timeout(time: 10, unit: 'MINUTES')
skipDefaultCheckout()
buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '1'))
}
tools {
/**
* Predefined environment variables MAVEN3 and JDK-1.8
*/
maven 'MAVEN3'
jdk 'JDK-1.8'
}
stages {
/**
* Initialization check for Java and Maven
*/
stage('Initialization') {
steps {
sh '''
java -version
mvn -version
'''
}
}
/**
* Checkout source code from Github on any of the GIT nodes
*/
stage('Checkout') {
steps {
checkout scm
}
}
/**
* Compile the Maven project
*/
stage('Build') {
steps {
sh 'mvn clean install'
}
}
/**
* Trigger this in PRs, don't run on master or release branches
*/
stage('Package') {
when {
changeRequest()
}
steps {
sh 'mvn clean package -DskipTests'
}
}
/**
* Only run this on master and release branches
*/
stage('Deploy') {
when {
branch 'master'
}
environment {
DEPLOYER = credentials('deployer')
}
steps {
sh 'mvn clean deploy'
}
}
/**
* Clean workspace
*/
stage('Clean') {
steps {
cleanWs()
}
}
}
post {
always {
echo 'I will always say Hello again!'
}
}
}

常见的options

我们来解释一下上面常用的option的用途:

  • disableConcurrentBuilds():一时间最多只允许一个pipeline运行,如果前面的仍在运行, 后面的将会等待状态。
  • retry(1): 失败了,重试一次。
  • skipStagesAfterUnstable():如果某个stage为unstable状态,则忽略后面的任务,直接退出。
  • timeout(time: 10, unit: 'MINUTES'):10分钟的超时设置。
  • skipDefaultCheckout(): 忽略默认的checkout。
  • buildDiscarder(logRotator(numToKeepStr: '10', artifactNumToKeepStr: '1')): 保留最新的10个build log和1个artifact。

参考:

https://medium.com/@brianrthompson/scripted-vs-declarative-pipelines-which-to-choose-c6af403f1e97

Jenkins pipeline之声明式的jenkinsfile的更多相关文章

  1. jenkins pipeline的声明式与脚本式

    自从Jenkins 2.0 版本升级之后,支持了通过代码(Groovy DSL)来描述一个构建流水线,灵活方便地实现持续交付,大大提升 Jenkins Job 维护的效率,实现从 CI 到 CD 到转 ...

  2. Jenkins 在声明式 pipeline 中并行执行任务

    在持续集成的过程中,并行的执行那些没有依赖关系的任务可以缩短整个执行过程.Jenkins 的 pipeline 功能支持我们用代码来配置持续集成的过程.本文将介绍在 Jenkins 中使用声明式 pi ...

  3. Jenkins教程——从安装到部署Docker服务(二)声明式流水线HelloWorld

    前言 本文通过一个声明式流水线的HelloWorld程序做一下流水线基础入门,对常用的流水线参数进行简要说明 什么是流水线 现实中的流水线 流水线比较好理解,类比于现实生活中的生产流水线,每个流程只做 ...

  4. devops持续集成,Centos7.6下gitlab+jenkins(pipeline)实现代码自动上线

    持续集成 gitlab+jenkins(pipeline)实现代码自动上线 环境准备:Centos7.6版本ip:192.168.0.13 主机名:gitip:192.168.0.23 主机名:jen ...

  5. Jenkins + pipeline + Git + PHP (九)

    一.准备环境介绍 192.168.5.71 # gitlab 仓库IP 192.168.5.72 # 开发环境,用于提交代码等 192.168.5.150 # www.leon.com 运行wordp ...

  6. Jenkins pipeline声明式语法

    目录 一.最简结构 二.简单例子 一.最简结构 pipeline {     agent any     stages {         stage('pull') {             st ...

  7. Jenkins pipeline:pipeline 语法详解

    jenkins  pipeline 总体介绍 pipeline 是一套运行于jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排与可视化. ...

  8. Jenkins pipeline 语法详解

    原文地址http://www.cnblogs.com/fengjian2016/p/8227532.html pipeline 是一套运行于jenkins上的工作流框架,将原本独立运行于单个或者多个节 ...

  9. Jenkins Pipeline 参数详解

    Pipeline 是什么 Jenkins Pipeline 实际上是基于 Groovy 实现的 CI/CD 领域特定语言(DSL),主要分为两类,一类叫做 Declarative Pipeline,一 ...

  10. DEVOPS技术实践_08:声明式管道语法

    简介 前面简单的做了管道的实验,看了一下的它的效果 声明式管道是Groovy语法中的一个更简单和结构化的语法.下面主要学习明式管道语法. 一 声明式管道的基本结构 以上节的代码为例 node { de ...

随机推荐

  1. 如何快速的开发一个完整的iOS直播app(创建房间)

    直播(创建房间) 1.进入主播界面,首先创建房间 2.设计房间模型(key,名称),key作为房间的唯一标识,用来找到房间 3.用socket创建房间,导入socket.io框架 4.一般一个客户端一 ...

  2. https证书一键自动续期,帮你解放90天限制

    前言 前几天网站证书到期,发觉证书颁发每次只能90天有效期,这谁能忍受,于是乎发觉网上有免费的一键续期脚本,真正解放我们的双手.项目如下acme.sh. 期间由于"墙"的原因,踩了 ...

  3. C 2017笔试题

    1.下面程序的输出结果是 int x=3; do { printf("%d\n",x-=2); }while(!(--x)); 输出:1 -2 解析:x初始值为3,第一次循环中运行 ...

  4. linux:问题诊断

    查看带宽 1.安装 iftop 工具(iftop 工具为 Linux 服务器下的流量监控小工具) yum install iftop -y 说明:若是是 Ubuntu 系统,请执行 apt-get i ...

  5. kNN(K- Nearest Neighbor)基本原理

  6. python ModuleNotFoundError_ No module named 'xxx'的解决方案

    本文主要针对的自己写的包无法正常import的情况,如果是第三方包的话正常来说没有问题. 第三方包 主要考虑没有安装对应的版本以及包名写错了等奇葩情况,具体可参考ModuleNotFoundError ...

  7. 巧用 CSS 实现高频出现的复杂怪状按钮 - 镂空的内凹圆角边框

    在之前,我们有些过这么一篇文章 - 使用 CSS 轻松实现高频出现的各类奇形怪状按钮. 里面包含了如下这些图形: 你可以在这里看到:CodePen Demo -- CSS Various Button ...

  8. VScode中C/C++调试文件配置

    VScode中C/C++调试文件配置 //launch.json { "version": "2.0.0", "configurations" ...

  9. .NET 9.0 全栈技术的高效开源低代码平台(Vue3+Element-Plus)

    前言 推荐一款基于.NET 9.0 全栈框架的新一代技术架构(Vue3+Element-Plus),开源低代码平台-Microi吾码. 平台不仅无限制地支持用户数.表单数.数据量及数据库数量,还通过跨 ...

  10. 分布式锁—6.Redisson的同步器组件

    大纲 1.Redisson的分布式锁简单总结 2.Redisson的Semaphore简介 3.Redisson的Semaphore源码剖析 4.Redisson的CountDownLatch简介 5 ...