Jenkins可用环境变量以及使用方法

Jenkins可用环境变量以及使用方法,第1张

下面的环境变量可以在配置Jenkins Job的时候用得到,可以用在Execute shell、Execute Windows batch command、文本框 上加上编辑好的的shell脚本

倘若是自己定义的参数化(Parameter)在调用时可以直接用,比如调用这个时直接$endPoint

JOB_NAME中的所有正斜杠(/)都用破折号( - )替换。方便地放入资源文件,jar文件等,以便于识别。

在 Jenkins Job 中,添加一个 pre script 来提高自动化程度,将这个脚本的输出作为其他主要流程build的参数,因此,build 参数的逻辑由 pre script 来控制,而不改变main job的逻辑。

下面的 sample 是通过获取一个 python 脚本的 console output 到 pipeline,然后再传递给其他 step 使用。

python script 中 print 或 sysstdoutwrite 的输出,Jenkins 都可以获取到。只需要在pipeline script 中使用下面的方法,会获取到 script 的所有 output

func test_value 是为了说明 return value 但并不输出到console,脚本执行结束后 Jenkins 并获取不到。下面的脚本,Jenkins 获取到的是 “Value: 2 3”。为了 pipeline 处理方便,可以在脚本中控制输出。

sample pipeline 中设置了三个stage,Preparation中定义一个变量,Get number 执行python 脚本,获取输出,Result 中使用该变量。

Administering Jenkins - Jenkins - Jenkins Wiki

Explaining $JENKINS_HOME (cloudbeescom)

>

Same Parameters Jenkins Job

解决

Jenkins中,有这样的一个规则:

当有一个任务,正在排队(排队等待正在进行的任务);这时候,重新开始一个新的任务,而这个任务的参数,完全跟正在排队的任务的参数(Parameters)一样时,这个新的任务,将不会进入排队,也就是直接被忽略了。

既然知道了原理,解决方法很简单,只要添加一个参数项,填入与其它Job不一样的参数,任务的参数判断不一样,就不会被忽略掉了。

有两种建议的方法:

方法1:添加一个参数项叫DESCRIPTION,让触发任务的同学把“为什么要进行这个任务”写上去。 这样也方便了后边进行任务的追踪。

方法2:使用Jenkins插件 Random String Parameter ,然后添加参数类别选择Random String Parameter。这样,每次触发任务,都会生成一个随机字符串的参数,来避免相同参数的任务被过滤。

对于我,是两种方法都同时使用了

参考文章:

>

Jenkins 刚开始搭建的时候,我们惊叹,这也太方便了吧?功能还这么强,慢慢的,我们会发现对方的缺点了,嗯,恋爱的味道,不对,似乎扯远了,还是说回来 Jenkins 了。

我们很难想象 Jenkins ,这么庞大的一个应用,居然没有数据库。那配置在哪保存呢?运行日志了?构建数据了?等等这些都是需要保存的啊。

屏幕快照 2019-12-19 下午82910png 屏幕快照 2019-12-19 下午82910png

当jenkins job数量达到一定量级,访问量大时候,会非常卡顿,仿佛回到了零几年的时候,网页那么卡。

查原因我们会发现瓶颈在 I/O 。因为jenkins每次访问,都需要读取配置,都需要读写日志,这些都是以文件方式写入磁盘的,是 所有slave 节点 一台master 通信。

可是我们是没有办法做负载均衡的

当我们部署后端服务时候,肯定做 LB(负载均衡) , Jenkins master 因为只能单节点,啊,挂了master,所有slave都掉链子了。

配置 存储 master节点磁盘,嗯,还好,比较小

构建日志 存储在master节点磁盘,这个,百万行代码的编译日志几百M大小,每天N个业务构建M次,存储在master,哈哈,每天上班第一件事清磁盘?

构建产物 存储在master节点磁盘,这个,占磁盘,不安全

针对这种情况了,日志用 ELK ,产物放到到 对象存储

调度,一个好高深的话题,教材上学过 *** 作系统对进程的各种调度算法,什么 先入先出 最短耗时 最高优先级(PRI,NI) 等等,而类似的集群调度, k8s 可能是最常见的了,但是 Jenkins 对于任务调度这块,实际来讲,确实很弱, 虽然 调度 也是 Jenkins 的核心能力之一

k8s 里面有 node节点 概念, Jenkins 也有

k8s 里面有 pod 概念, Jenkins 没有,类似的, Jenkins 是限制 node 的最大并行个数

k8s 里面有调度器, 进行 Predicates Priorities 两个过程, Jenkins 算法很简单,默认就是调度到 最近一次成功节点 上。

这样会带来一个比较严重的问题,会导致 部分机器处于极度打满,部分机器确空转,资源利用率严重两级分化

针对这点,我们其实有两种小的补救。

一种是降低node节点并行数量,比如原来是最大限制是10,下降到2后,第三个任务,比如调度另一个节点了,缺点就是可能造成更多排队情况

一种就是利用插件了,比如插件 throttle-concurrents 会比较均匀分配 >

Jenkins中如何批量停止队列中卡主的jobs?

一、Jenkins-系统管理-脚本命令行,通过执行以下脚本进行批量停止

二、Jenkins-系统管理-Jenkins命令行接口

直接只用上图中的命令执行,会报如下的权限错误

可以通过 -auth 参数进行身份验证

业务需求 现将web项目中的分支从xiongan改为rongdong

方法一:手动登录到jenkins中找到项目一个一个的去配置中修改

方法二:通过sed批量修改job目录西面的configxml文件

既然我们在jenkins界面修改的是项目的配置,那么在jenkins服务器中肯定也存在了每个项目对应的配置文件

通过find去找项目发现不仅在workspace里面发现了项目目录在jobs里面也发现了相同的目录 进入后果然发现了configxml文件

进入jobs目录批量修改项目中的分支

确认没有之后进行修改,在修改的时候尽量备份一下 以免修改错误

已经全部修改为rongdong

重启jenkins是配置文件生效

登录jenkins查看修改成功

以上就是关于Jenkins可用环境变量以及使用方法全部的内容,包括:Jenkins可用环境变量以及使用方法、Jenkins pipeline demo - 获取python script 输出、JENKINS_HOME 目录解析等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9647587.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存