Jenkins可以根据代理OS有条件地执行shell或Windows命令吗?

时间:2017-03-24 15:31:16

标签: linux windows shell batch-file jenkins

我正在尝试构建一个将在远程代理上执行程序的作业。当代理在Windows上时,程序是exe,或者在Linux上是shell脚本。该程序已部署在代理计算机上。我正在寻找一种解决方案,允许我有条件地运行exe(执行Windows批处理命令)或shell(执行shell),具体取决于代理的操作系统。

到目前为止,我发现有一个运行条件插件(https://wiki.jenkins-ci.org/display/JENKINS/Run+Condition+Plugin),这将是非常好的,不幸的是它没有检查代理的操作系统。

有没有办法实现这一目标?谷歌什么都没告诉我。

2 个答案:

答案 0 :(得分:3)

找到了似乎有用的东西:

https://www.techiepie.com/2016/04/14/how-to-identify-jenkins-slave-operating-system-in-a-build/

  • 添加条件构建步骤 - 单个或多个。
  • 在奔跑?条件选择“执行Shell”并输入命令echo" IsShell"
  • 提供Linux Shell命令作为满足条件时运行的步骤。
  • 添加另一个条件构建步骤 - 单个或多个。
  • 在奔跑?条件选择“执行Windows批处理命令”并输入命令echo" IsWindows"
  • 提供Windows批处理命令作为满足条件时运行的步骤。

答案 1 :(得分:0)

我发现避免输出中出现任何异常的解决方案是:

对于Windows,比较以下字符串是否匹配:

${ENV,var="OS"}
Windows_NT

对于Linux,比较以下字符串是否匹配:

${ENV,var="OS"}

(第二个字符串留空。)