【问题标题】:Jenkins variable to fetch SVN checkin numberJenkins 变量来获取 SVN 签入号
【发布时间】:2014-08-20 21:10:17
【问题描述】:

大师,

我正在使用 windows jenkins 和 linux SVN 使用 maven 构建 java 代码。

我的要求是在验证最新触发的作业中没有更改特定文件列表后,验证在 jenkins 作业中继续执行构建。

如果存在特定文件,我们应该得到提升以继续工作。

我知道我可以使用命令
svn diff -r REV:HEAD --summarize | findstr /g:"filesname.list"

如何在运行时从脚本中的 jenkins 获取最后一次成功的构建 SVN 修订版和最新签出的修订版?

jenkins job 中的 pre buld script 如何为我提供界面以让我的 goahead 决定继续工作?

【问题讨论】:

    标签: svn scripting jenkins


    【解决方案1】:

    我以某种方式使用 -

    $url=curl -s "http://localhost:8080/job/Rev-number/lastStableBuild/" | findstr "started by"; $url =~ /([0-9]+)/;

    无论如何都要在windows上安装curl。

    【讨论】:

      【解决方案2】:

      以下可能会有所帮助:

      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

      【讨论】:

        【解决方案3】:

        首先要做的事:Jenkins 中有 no 机制来“提示”您做出决定。您可以为构建提供各种参数,以及决定是否继续[自动]构建的逻辑,但没有办法让作业暂停并等待用户输入

        要获得 Jenkins 上一次签出的修订版,您只需在 Jenkins 运行时使用 %SVN_REVISION_1% 变量即可。 _1 代表您的作业配置中定义的第一个 SVN 模块。如果定义了多个模块,可以使用%SVN_REVISION_2% 等。

        要真正获得“最后一次成功构建”的修订版,您可以使用 Technext 在另一个答案中建议的内容。请注意,您需要系统中可用的命令行curl,并且显然将他的 Linux 语法更改为 Windows 语法。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-02-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-09-27
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多