Jenkins学习之Jenkins流水线when条件判断执行
流水线中如何使用条件判断来决定某个stage是否需要执行呢?
答案是 使用 when 这个闭包。 when 放到 stage 中使用,条件成立 就会执行 下面的 step是中的语句的。
Conditionals in a Declarative Pipeline Jenkinsfile
例子1123456789101112131415161718192021pipeline { agent any parameters { choice( choices: ['greeting' , 'silence'], description: '', name: 'REQUESTED_ACTION') } stages { stage ('Speak') { when { ...
Jenkins学习之Jenkins流水线parallel并发执行
动态的创建 一个 并行的 流水线。并且可以设置agent的。
例1
1234567891011121314151617181920212223242526272829303132333435363738394041pipeline { agent any stages { stage('BuildAll') { parallel { stage('build-win') { steps { sh "env | grep -i NODE_NAME" runParallel items: ("a".."d").collect { "Win-${it}" } ...
Jenkins学习之Jenkins流水线中parallel中的并发数
问题背景How can I limit number of certain pipelines running in parallel?
1234https://stackoverflow.com/questions/50578473/how-can-i-limit-number-of-certain-pipelines-running-in-parallel
have a simple way to limit the number of parallel branches that run concurrently
12345678https://issues.jenkins-ci.org/browse/JENKINS-44085https://issues.jenkins-ci.org/browse/JENKINS-26125
Throttle parallel step in pipeline script
1https://issues.jenkins-ci.org/browse/JENKINS-46236
123https://github.com/jenkinsci ...
Jenkins学习之Jenkins流水线中load其他groovy文件
123456789101112131415161718steps { script { def util = load("${env.WORKSPACE}/scripts/build_util.groovy") util.runStep1() } } steps { script { def util = load("${env.WORKSPACE}/scripts/build_util.groovy") util.runStep2() } } steps { script { def util = load("${env.WORKSPACE}/scripts/build_util.groovy") util.runStep3() ...
Jenkins学习之Jenkins流水线中怎么使用全局变量
jenkins学习之Jenkins流水线中怎么使用全局变量
问题背景例如我们在 stage1中 利用 script 代码块 设置赋值了一个 变量,然后想在 stage2中使用。应该怎么操作呢?
https://stackoverflow.com/questions/53541489/updating-environment-global-variable-in-jenkins-pipeline-from-the-stage-level/53541813
https://www.youtube.com/watch?v=KwQDxwZRZiE
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104你不能重写在environment{ ...
Jenkins学习之Jenkins流水线之声明式管道与脚本式管道
Jenkins pipeline最近由于项目需要,接触到了Jenkins 2.0版本,其中最重要的特性就是提供了对pipeline的支持。简单的来说,就是把Jenkins1.0版本中,Project中的相关配置信息,如SVN/Git的配置,Parameter的配置等都变成Code,即Pipeline as Code。这样的优势为可以通过写代码的形式配置Project,且Jenkins中内置了常用的steps。实现了构建步骤代码化、构建过程视图化。
声明性管道与脚本管道123456789101112131415声明式管道 和 脚本化管道 的主要区别在于它们的语法和灵活性声明性管道是一个相对较新的特性,它提出了pipeline as code的概念,它使管道代码更易于读写。管道代码是在 Jenkinsfile 文件中编写的,可以将其存放到源代码管理系统(如Git)。 脚本化管道是一个传统方式。在这个管道中,Jenkinsfile 被写在 Jenkins UI实例上。虽然这两条管道都是基于Groovy DSL的,但是脚本化的流水线使用更严格的基于Groovy的语法,因为它是Groo ...
Jenkins学习之Jenkins流水线语法
https://www.jenkins.io/doc/book/pipeline/syntax/
Declarative Pipeline所有有效的声明性管道都必须包含在管道块中,例如:
123pipeline { /* insert Declarative Pipeline here */}
agent代理 agent 部分指定整个pipeline或特定阶段 stage 将在 Jenkins 环境中执行的位置,具体取决于代理部分的放置位置。该部分必须在pipeline块内的顶层定义,但阶段级别的 stage 使用也是可以的的。
123456Required Yes 是否必须有,Parameters 有参数,详细说明往下看Allowed 可以在顶层 pipeline 代码块里用,也可以在 stage 代码块里面用
Top Level Agents
12345678910111213In agents declared at the outermost level of the Pipeline, the options are i ...
Jenkins学习之Jenkins历史任务构建时间引发的思考
问题背景我们在使用jenkins的过程中有没有发现 历史任务 那里的构建时间的格式 是不是怪怪的?
例如设置的晚上凌晨0点的 定时任务, 显示的时间会是 2020-10-22 上午12:00看着不习惯,感觉很怪。感觉显示的是12小时制的格式,但是又不太符合我们中国的风格?(这都是国外设计的,也怪不得我们.)
这里有个 issue 提问 , jenkins 简体中文插件中的, 参考这个 https://github.com/jenkinsci/localization-zh-cn-plugin/issues/79
由这个引发了以下的一些思考,特记录下来分享给大家.
问题1这个日期时间格式在哪里控制的呢?
12345678910111213在这个文件中控制的 core/src/main/resources/hudson/widgets/HistoryWidget/entry.jelly在48行左右: <i:formatDate value="${build.timestamp.time}" type="both" ...
Jenkins学习之Jenkins插件页面的一个报错
jenkins插件更新页面的一个报错doCheckUpdatesServer()123456789101112首先从 doCheckUpdatesServer() 这里 开始 执行 start(),在执行 start 方法之前需要初始化 updateServerRetrier 变量,FormValidation result = updateServerRetrier.start();在 Retrier.java 类中的 有个 start() 方法,中会执行 result = callable.call(); 这个。这个callable 是什么呢? 来自 java.util.concurrent.Callable;
updateServerRetrier初始化12345678910111213141516171819202122232425262728293031323334353637383940414243444546看 doCheckUpdatesServer() 中怎么初始化 updateServerRetrier的。updateServerRetrier 是 Retri ...
Jenkins学习之记master的一次报错
jenkins学习之记master的一次报错问题今天早上 打开jenkins,然后登录,然后 报错了 Oops!
A problem occurred while processing the request.Logging ID=7e123605-0518-46c7-b711-d3213948134d
主要报错如下,去掉了 其他没用的信息。
报错信息怎么 找,就是找 jenkins 关键字 的 行, 其他的 暂时忽略。从下往上找。
12345678java.lang.NullPointerException at hudson.model.ViewGroupMixIn.getView(ViewGroupMixIn.java:119) at hudson.model.ViewGroupMixIn.getPrimaryView(ViewGroupMixIn.java:172) at jenkins.model.Jenkins.getPrimaryView(Jenkins.java:1973) at jenkins.m ...
Jenkins插件学习之throttle-concurrent-builds-plugin
今天介绍一个插件 throttle-concurrent-builds-pluginhttps://github.com/jenkinsci/throttle-concurrent-builds-pluginThis plugin allows for throttling the number of concurrent builds of a project running per node or globally.
throttle 有节流的意思,也就是限制 某个任务同时并发的个数的。下面分别的讲解 这个插件在 free style project、matrix project 等项目中的应用和异同。
throttle-concurrent-builds-plugin 使用
throttle-concurrent-builds-plugin 插件是用来限制某个job并发数的. 可以限制一个job的总的并发数量, 可以限制一个job在一个节点上的并发数量.
12345678910111213141516配置 Maximum Total Concurrent Builds 为 0配置 ...
Jenkins插件学习之ssh-slaves-plugins插件
分析 slave 上的remtoe fs 目录什么时候创建, 创建的权限为什么是700??
123456789101112131415161718192021首先在hudson/plugins/sshslaves/SSHLauncher.java文件中这个方法是 启动 ssh slave的 入口public void launch(final SlaveComputer computer, final TaskListener listener) throws InterruptedException {connection = new Connection(host, port);launcherExecutorService = Executors.newSingleThreadExecutor(new NamingThreadFactory(Executors.defaultThreadFactory(), "SSHLauncher.launch for '" + computer.getName() + "' node ...