大师,
我使用windows jenkins和linux SVN使用maven构建java代码。
我的要求是验证在最近触发的作业中是否没有更改特定的文件列表后,在jenkins作业中继续执行构建执行。
如果存在特定文件,我们应该获得促销以继续工作。
我知道我可以使用命令
svn diff -r REV:HEAD --summarize | findstr /g:"filesname.list"
如何在运行时从脚本中获取jenkins最后一次成功的构建SVN修订和最新检出的修订?
jenkins工作中的pre buld脚本如何为我提供界面以让我的goahead决定继续工作?
答案 0 :(得分:1)
我用某种方式管理它 -
$ url = curl -s "http://localhost:8080/job/Rev-number/lastStableBuild/" | findstr "started by"
;
$ url =〜/([0-9] +)/;
无论如何都必须在Windows上安装curl。
答案 1 :(得分:0)
以下可能有所帮助:
echo $SVN_REVISION
svn_last_successful_build_revision=`curl $JOB_URL'lastSuccessfulBuild/api/json' | python -c 'import json,sys;obj=json.loads(sys.stdin.read());print obj["'"changeSet"'"]["'"revisions"'"][0]["'"revision"'"]'`
diff=`svn di -r$SVN_REVISION:$svn_last_successful_build_revision --summarize`
请检查此链接以获取其他建议:How to get list of changed files since last build in Jenkins/Hudson
答案 2 :(得分:0)
首先要做的事情是:Jenkins中有 no 机制来“提示”您做出决定。您可以为构建提供各种参数,并使用逻辑来决定是否继续[自动]构建,但是作业无法暂停并等待用户输入。
要获得Jenkins最后签出的修订版,您只需在Jenkins运行时使用%SVN_REVISION_1%
变量即可。 _1
表示作业配置中定义的第一个SVN模块。如果您定义了多个模块,则可以使用%SVN_REVISION_2%
等等。
要实际获得“上次成功构建”的修订,您可以使用Technext在其他答案中建议的内容。请注意,您需要在系统中使用命令行curl
,并且显然将其Linux语法更改为Windows语法。