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. Netty3 核心代码-copy

    Netty Hello Word-copy   概述https://github.com/csy512889371/learndemo/netty/NettyHellonetty版本大致版本分为 ne ...

  2. 将Ldap组织结构及用户信息同步到MySQL,用Spring Boot项目操作

    从上一篇<将Mybatis引入Spring Boot项目连接数据库操作>知道了如何在Spring Boot项目操作数据库,学会了增删查改基本操作方法.本节记录如何从Ldap获取组织结构及用 ...

  3. Paillier算法

    介绍 1999年欧密会上,首次提出Paillier算法,2001年,Damgard等人对该方案简化,推出当前最优的Paillier方案. 加密方案 Carmichael函数 困难问题 合数剩余类问题( ...

  4. MySQL数据定义语言

    原文链接:https://blog.liuzijian.com/post/83cdb010-fa97-e8ff-5b28-22da08e739e9.html 1.库操作 1.1 创建数据库 CREAT ...

  5. ctfshow 红包题第七弹 .git

    .git源码泄露 发现有后们 flag在上级目录里面 直接Letmein=show_source('../flag.txt');就出来了

  6. 微信小程序安全开发、测试的一些记录

    目录 开发原则 漏洞类型--越权 漏洞类型--信息泄露 漏洞类型--爬虫遍历 漏洞类型--授权用户信息变更不跟进 漏洞类型--注入类 漏洞类型--上传.下载类 Reference 本文基于微信开发者平 ...

  7. PostgreSQL 数据备份与恢复:掌握 pg_dump 和 pg_restore 的最佳实践

    title: PostgreSQL 数据备份与恢复:掌握 pg_dump 和 pg_restore 的最佳实践 date: 2025/1/28 updated: 2025/1/28 author: c ...

  8. druid 连接池参数说明

    一.参数配置说明 属性 说明 建议值 url 数据库的jdbc连接地址.一般为连接oracle/mysql.示例如下:     mysql : jdbc:mysql://ip:port/dbname? ...

  9. Arduino语法--运算符

    本节介绍最常用的一些Arduino运算符,包括赋值运算符.算数运算符.关系运算符.逻辑运算符和递增/减运算符. 一. 赋值运算符 =(等于)为指定某个变量的值,例如:A=x,将x变量的值放入A变量. ...

  10. autMan奥特曼机器人-出现argument list too long报错的解决方法

    当你运行一段时间autMan后,可能会出现argument list too long的报错,那是你主机系统限制了autMan运行插件的参数长度,导致的报错,如下: 查看当前ARG_MAX的值 在 L ...