
下面的环境变量可以在配置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 目录解析等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)