在Jenkins中构建帖子后执行Shell脚本


80

如果在Jenkins中进行构建后构建通过或失败,我将尝试执行Shell脚本。除了运行目标外,我在后期构建中看不到此选项来执行一些Shell脚本。

Answers:


67

使用Post build task插件非常容易完成。

詹金斯-“后期制作任务”选项


48
我建议使用PostBuildScript插件,而不是简单地运行脚本。如果您不需要以日志输出为条件,则它更简单,更强大。例如,它允许在构建后操作中运行任何构建步骤。
Sampo

9
另请注意,Post Build Task插件将整个控制台输出放入内存中以进行条件测试...如果有数百个作业产生大量输出,则可能占用大量内存...我们的jenkins主机因崩溃而崩溃这个插件...
grayaii 2015年

1
PostBuildScript插件已被暂停。
Upen

@Upen您可以提供一个证明这一点的链接吗?
瓦迪姆·科托夫

10

您还可以使用Groovy Post Build运行任意命令-这将使您对它们何时运行等有很多控制。在构建失败或不稳定的情况下,我们使用它来运行“非指责” shell脚本。

if (manager.build.result.isWorseThan(hudson.model.Result.SUCCESS)) {
  item = hudson.model.Hudson.instance.getItem("PROJECTNAMEHERE")
  lastStableBuild = item.getLastStableBuild()
  lastStableDate = lastStableBuild.getTime()
  formattedLastStableDate = lastStableDate.format("MM/dd/yyyy h:mm:ss a")
  now = new Date()
  formattedNow = now.format("MM/dd/yyyy h:mm:ss a")
  command = ['/appframe/jenkins/appframework/fob.ksh', "${formattedLastStableDate}", "${formattedNow}"]
  manager.listener.logger.println "FOB Command: ${command}"
  manager.listener.logger.println command.execute().text
}

(我们的命令将最后一个稳定的构建日期和当前时间作为参数,以便可以调查可能破坏了构建的人,但是您可以以类似的方式运行所需的任何命令)


6

如果我没看错您的问题,那么您想在构建的构建后操作部分中运行脚本。

我自己用的PostBuildScript插件运行git clean -fxd构建具有存档文物和公布的测试结果之后。我的Jenkins从属服务器具有SSD磁盘,因此我没有将生成的文件保留在工作空间中的空间。



1

您必须将构建后的Shell脚本设置为单独的Jenkins作业,并在构建后的步骤中触发它。看起来您将需要使用参数化触发器插件,因为只有在触发构建成功的情况下,标准的“构建其他项目”选项才有效。


如果构建完全基于我在工作任务下拥有的两个可执行Shell脚本而失败,该如何触发脚本?谢谢
topgun 2012年

考虑到这一点,可能更容易在构建脚本本身中进行控制。您正在使用什么构建框架?
gareth_bowles
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.