Jenkins在windows平台下,让Powershell和批处理可以拉起进程并保持

  • 📢欢迎点赞 :👍 收藏 ⭐留言 📝 如有错误敬请指正,赐人玫瑰,手留余香!

  • 📢本文作者:由webmote 原创

  • 📢作者格言:无尽的折腾后,终于又回到了起点,工控,我来了 !

523ab41110f2e0ef0111c4caee46e1ca.png

前言

没有人喜欢windows平台下的自动化构建,一如多年前没人喜欢linux的桌面一样。不过由于windows平台具有巨大的客户群体和开发公司的死忠粉,因此Jenkins工具还是具有相当大的用户群体的,因此作为开发者的一员,有时候,不得不去了解下运维工作的内容,甚至自己也需要兼职干些什么。最近在考虑windows下ci集成,又拉起了jenkins的手,毕竟虽然界面难看,可是手真的很暖。

问题

Jenkins是一个可扩展的持续集成软件平台,也是CI的工具箱中的重要一员,持续集成,就是通常所说的CI(Continues Integration),可以说是现代软件技术开发的基础。

持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员至少集成一次,也意味着每天可能会发生多次集成。这应该是开发经理能想到的事情,不过在我向我的领导说起这事时,他竟然说根本没有的事,哎,奈何如此?

如果每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,那么从而能尽快地发现集成错误。团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件,这个说法竟然不能说服领导,有时候在低认知的团队做事情真的比较难。

刚说了一堆Jenkins的介绍,而我遇到的问题是:

Jenkins对批处理或powershell进行了输出跟踪,并且可以跟踪子进程,它在批处理结束后,会对整个进程树进行扫描,关闭所有拉起的其他进程

这真是个好特性!当然是对资源利用来说的。

对于我这种想保持拉起的子进程,一直运行而不被关闭的做法而言,简直是灾难,经过了好多个小时的尝试,最终我发现了这个问题。

Jenkins杀死了 批处理拉起的进程!

解决

为了避免拉起来的进行被杀死,Jenkins提供了一些hack技术。
主要是设置2个环境变量,因此不管你是什么脚本,理论上都可以进行设置,以保持子进程继续运行。

下面是在Powershell脚本下写的代码:

# my_powershell_script.ps1 content
$ENV:BUILD_ID="dontKillMe"
$ENV:JENKINS_NODE_COOKIE="dontKillMe"

总结

又浪费了几天的时间,领导特别不喜欢,哎~~~~
自动化就是这么难落地!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值