热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

jenkins实现多用户同时触发任务+修改job的config.xml不重启服务生效

可以参考对应的API,下面是关于我的任务场景的不同jenkins内置命令的使用。任务1:实现多用户同时触发任务分析:常见情况是我们只需要一个人触发jenkins出包给其它人用,但是如果想结合个

可以参考对应的API,下面是关于我的任务场景的不同jenkins内置命令的使用。

任务1:实现多用户同时触发任务

分析:常见情况是我们只需要一个人触发jenkins出包给其它人用,但是如果想结合个人构建,那么明显一个任务多个人触发时,必须要等上一次构建结束,才能开始下一次的构建,因为只有一个任务入口,举个例子,比如一个餐厅,只有一个服务员一张餐桌,只能容下一个客人,那么其它客人就必须排队,等这个客人吃完了,多用户的模式就是有一个点单员和多个服务员和多张桌子,客人只要告诉点单员,接下来就有其它服务员来一对一服务你,不会像第一种情况那样,完全卡在一个人。

方法:还是要保持有一个job做入口,但是这个job的用时要尽量控制到最短,然后下发任务到其它下游job执行,下游job的特点就是要跟用户相关,能够标识用户。我的步骤:

1.入口job主要的任务是获取当前是哪个用户触发的,以及该次触发的num是多少,并保存用的配置; 

  需要的插件'user build vars plugin'  在任务配置中勾选如下:

然后使用如下命令就可以获取到user和num

echo jenkins var as follow:
echo build_num=$BUILD_NUMBER
echo build_user=$BUILD_USER

2.创建一个模板任务,根据自己的需要做好设置,目的主要是为了获取一个简单标准的config.xml文件,后面要用到,我的模板任务设置如下:

处理上面1的设置,还有就是执行脚本的设置,其中上面的“sh /usr/local/scripts/build_scripts/build_mode.sh build_branch push_action build_channel build_tvar build_code build_job ”这一窜随便写,里面对应的build_mode.sh实际也是不存在的,这串会被记录在job的config.xml中,后面我会用自己实际的脚本名来替换,马上你就可以看到了。

3.(1)在入口job,比如mul_user作为入口job,在mul_user的job调用curl -u admin:123456  $jenkins_url/job/Build_Template/config.xml -o config.xml -v 获取模板Build_Template的config.xml,(-o 后面的是下载到本地的文件名)参考我上面的模板配置,这个config.xml文件如下,我只截取了我需要改动的部分,就是构建部分,就是步骤2的那段字符串sh /usr/local/scripts/build_scripts/build_mode.sh build_branch push_action build_channel build_tvar build_code build_job,然后根据自己的需要修改这个本地的这个config.xml中的构建字段,我的修改如下:

sed -i 's/build_mode/push_tag/g' config.xml
sed -i s/build_branch/$1/g config.xml
sed -i s/push_action/$2/g config.xml
sed -i s/build_channel/$3/g config.xml
sed -i s/build_tvar/$4/g config.xml
sed -i s/build_code/$build_module/g config.xml
sed -i s/build_job/$build_name/g config.xml

(2)使用curl -u admin:123456 -X POST $jenkins_url/createItem?name=$build_name  -d @config.xml -H "Content-Type: text/xml" 创建一个新的任务,其中build_name,我使用的是$user_$name_模块的组合,能够唯一表示是哪个用户的哪次的哪个模块的构建,再看@config.xml 说明我们需要依赖这个配置文件,才能生成新的job,由于这个config.xml文件是来自于我们事先设置的模板的模板文件,所以这个新的job和模板job的结构是一样的,除了那串构建被替换成了我们需要的脚本。

(3)使用curl -u admin:123456 -X POST $jenkins_url/job/$build_name/build 来触发新的job的构建,到此,入口job mul_user的任务就完成了,我自己的设置发现,十几秒这个入口job就结束了,触发构建后,下游job会自己跑起来。

4.在下游job跑完以后,调用curl -u admin:123456 -X POST $jenkins_url/job/$6/doDelete 来删除刚才新建的job,这个动作可以在新建job中调用脚本是实现。

由于任务删除后,新建的job构建日志就看不到了,所以建议将步骤2的模板job的构建阶段修改为sh /usr/local/scripts/build_scripts/build_mode.sh build_branch push_action build_channel build_tvar build_code build_job |tee console_log,使用tee 命令 将log保存下来,然后存放到其它位置,方便出错时检查问题。

任务2:修改job的config.xm后不重启服务生效

描述:有时候,我们的构建是带参数构建的,但是参数内容会经常有变化,就需要手动去修改参数,比如某一个模块的代码经常会迁分支,也会合入主线,每次有新的分支增加的时候就需要去界面配置,有分支合入的时候,又要去界面删除,这样很麻烦。

分析:既然界面的配置都会被保存在任务的$jenkins_path/jobs/$job/config.xml文件中,那么只要修改这个config.xml文件就可以了。

难点:发现,修改了这个文件以后,再去刷jenkins界面,修改并没有生效,查资料说,需要重启服务器才能生效,重启后果然生效了,但是这并不使用,有没什么方法不需要重启就能生效呢。

解决:使用jenkins的内置命令reload即可,命令为:curl -u admin:1234456 -X POST $jenkins_url/$job_name/reload 。

  这样,不需要重启就能生效。


推荐阅读
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文介绍了在wepy中运用小顺序页面受权的计划,包含了用户点击作废后的从新受权计划。 ... [详细]
  • 本文记录了在vue cli 3.x中移除console的一些采坑经验,通过使用uglifyjs-webpack-plugin插件,在vue.config.js中进行相关配置,包括设置minimizer、UglifyJsPlugin和compress等参数,最终成功移除了console。同时,还包括了一些可能出现的报错情况和解决方法。 ... [详细]
  • 使用eclipse创建一个Java项目的步骤
    本文介绍了使用eclipse创建一个Java项目的步骤,包括启动eclipse、选择New Project命令、在对话框中输入项目名称等。同时还介绍了Java Settings对话框中的一些选项,以及如何修改Java程序的输出目录。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 单页面应用 VS 多页面应用的区别和适用场景
    本文主要介绍了单页面应用(SPA)和多页面应用(MPA)的区别和适用场景。单页面应用只有一个主页面,所有内容都包含在主页面中,页面切换快但需要做相关的调优;多页面应用有多个独立的页面,每个页面都要加载相关资源,页面切换慢但适用于对SEO要求较高的应用。文章还提到了两者在资源加载、过渡动画、路由模式和数据传递方面的差异。 ... [详细]
author-avatar
坏尐骇MB_549
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有