Jenkins pipeline之声明式的jenkinsfile
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的更多相关文章
- jenkins pipeline的声明式与脚本式
自从Jenkins 2.0 版本升级之后,支持了通过代码(Groovy DSL)来描述一个构建流水线,灵活方便地实现持续交付,大大提升 Jenkins Job 维护的效率,实现从 CI 到 CD 到转 ...
- Jenkins 在声明式 pipeline 中并行执行任务
在持续集成的过程中,并行的执行那些没有依赖关系的任务可以缩短整个执行过程.Jenkins 的 pipeline 功能支持我们用代码来配置持续集成的过程.本文将介绍在 Jenkins 中使用声明式 pi ...
- Jenkins教程——从安装到部署Docker服务(二)声明式流水线HelloWorld
前言 本文通过一个声明式流水线的HelloWorld程序做一下流水线基础入门,对常用的流水线参数进行简要说明 什么是流水线 现实中的流水线 流水线比较好理解,类比于现实生活中的生产流水线,每个流程只做 ...
- devops持续集成,Centos7.6下gitlab+jenkins(pipeline)实现代码自动上线
持续集成 gitlab+jenkins(pipeline)实现代码自动上线 环境准备:Centos7.6版本ip:192.168.0.13 主机名:gitip:192.168.0.23 主机名:jen ...
- Jenkins + pipeline + Git + PHP (九)
一.准备环境介绍 192.168.5.71 # gitlab 仓库IP 192.168.5.72 # 开发环境,用于提交代码等 192.168.5.150 # www.leon.com 运行wordp ...
- Jenkins pipeline声明式语法
目录 一.最简结构 二.简单例子 一.最简结构 pipeline { agent any stages { stage('pull') { st ...
- Jenkins pipeline:pipeline 语法详解
jenkins pipeline 总体介绍 pipeline 是一套运行于jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排与可视化. ...
- Jenkins pipeline 语法详解
原文地址http://www.cnblogs.com/fengjian2016/p/8227532.html pipeline 是一套运行于jenkins上的工作流框架,将原本独立运行于单个或者多个节 ...
- Jenkins Pipeline 参数详解
Pipeline 是什么 Jenkins Pipeline 实际上是基于 Groovy 实现的 CI/CD 领域特定语言(DSL),主要分为两类,一类叫做 Declarative Pipeline,一 ...
- DEVOPS技术实践_08:声明式管道语法
简介 前面简单的做了管道的实验,看了一下的它的效果 声明式管道是Groovy语法中的一个更简单和结构化的语法.下面主要学习明式管道语法. 一 声明式管道的基本结构 以上节的代码为例 node { de ...
随机推荐
- Netty3 核心代码-copy
Netty Hello Word-copy 概述https://github.com/csy512889371/learndemo/netty/NettyHellonetty版本大致版本分为 ne ...
- 将Ldap组织结构及用户信息同步到MySQL,用Spring Boot项目操作
从上一篇<将Mybatis引入Spring Boot项目连接数据库操作>知道了如何在Spring Boot项目操作数据库,学会了增删查改基本操作方法.本节记录如何从Ldap获取组织结构及用 ...
- Paillier算法
介绍 1999年欧密会上,首次提出Paillier算法,2001年,Damgard等人对该方案简化,推出当前最优的Paillier方案. 加密方案 Carmichael函数 困难问题 合数剩余类问题( ...
- MySQL数据定义语言
原文链接:https://blog.liuzijian.com/post/83cdb010-fa97-e8ff-5b28-22da08e739e9.html 1.库操作 1.1 创建数据库 CREAT ...
- ctfshow 红包题第七弹 .git
.git源码泄露 发现有后们 flag在上级目录里面 直接Letmein=show_source('../flag.txt');就出来了
- 微信小程序安全开发、测试的一些记录
目录 开发原则 漏洞类型--越权 漏洞类型--信息泄露 漏洞类型--爬虫遍历 漏洞类型--授权用户信息变更不跟进 漏洞类型--注入类 漏洞类型--上传.下载类 Reference 本文基于微信开发者平 ...
- PostgreSQL 数据备份与恢复:掌握 pg_dump 和 pg_restore 的最佳实践
title: PostgreSQL 数据备份与恢复:掌握 pg_dump 和 pg_restore 的最佳实践 date: 2025/1/28 updated: 2025/1/28 author: c ...
- druid 连接池参数说明
一.参数配置说明 属性 说明 建议值 url 数据库的jdbc连接地址.一般为连接oracle/mysql.示例如下: mysql : jdbc:mysql://ip:port/dbname? ...
- Arduino语法--运算符
本节介绍最常用的一些Arduino运算符,包括赋值运算符.算数运算符.关系运算符.逻辑运算符和递增/减运算符. 一. 赋值运算符 =(等于)为指定某个变量的值,例如:A=x,将x变量的值放入A变量. ...
- autMan奥特曼机器人-出现argument list too long报错的解决方法
当你运行一段时间autMan后,可能会出现argument list too long的报错,那是你主机系统限制了autMan运行插件的参数长度,导致的报错,如下: 查看当前ARG_MAX的值 在 L ...