我制作了一个简单的程序,需要每小时执行一次。我已经设置Jenkins每小时运行并在构建的后一步运行shell命令。
问题是只有在GIT上更改代码时才需要构建。如果没有任何改变,我只想在没有新版本的情况下运行后期步骤。
有什么方法可以解决这个问题吗?我只是找不到任何插件来处理这个问题。
提前致谢。
-edit -
这个简单的程序目前每小时都在我的Jenkins上运行,如下所示。
触发器(每小时) - >从Github获取代码 - >构建 - >运行post step(执行三个shell命令)
但是!我想换到
触发器(每小时) - > 从Github获取代码 - > build - > 运行post step(执行三个shell命令)
+
触发器(当Github代码改变时) - >从Github获取代码 - >构建 - >运行post step(执行三个shell命令)
答案 0 :(得分:2)
如果我正确理解了您的要求,您可以将您的工作设置为使用Git钩子构建Git push to master(或任何分支),同时保持每小时构建并在构建原因的代码中添加一个检查。类似的东西(这是在执行shell步骤中):
if [ $BUILD_CAUSE != 'TIMERTRIGGER' ]; then
build your code
fi
execute 3 commands
这种方式由计时器触发的构建将跳过代码构建,但手动或钩子触发器不会。
如果您使用的是管道,则可以使用currentBuild.rawBuild.getCauses()[0].getShortDescription().contains('text identifying git trigger')
获得类似的结果。
编辑:使用Conditional BuildStep插件的替代解决方案。
使用触发器添加条件步骤(单个)作为构建原因SCM触发器作为构建的第一步,并添加第二个构建步骤以运行shell命令。请参阅附带的屏幕截图(在图像中突出显示Post构建操作选项卡,但这在“构建”部分中完成)。