在访问我的SVN存储库之前,我需要先创建一个tunnel像这样的文件:
SVN
tunnel
ssh -L 9898:some_server.com:9898 user@another_server.com
在那之后,我能够在端口访问存储库9898我的localhost。在创建Jenkins作业时,我可以将SVN网址提供为localhost,并且Jenkins能够访问存储库,但是我仍然必须在服务器上手动创建隧道。有什么方法可以让Jenkins自动化,以便如果对隧道的访问失败,则可以进行隧道化,然后重试?
9898
localhost
我在用 Jenkins 1.487
Jenkins 1.487
您需要像pre-scm-buildstep这样的插件
这使您可以在SVN检出之前执行构建步骤。 使用此功能,您可以配置一个步骤,该步骤将在SVN检出开始之前为您打开隧道。
但是,我怀疑SVN轮询将在这种情况下工作。
更新: 在OP问题之后,这是另一个可能的解决方案: https : //wiki.jenkins- ci.org/display/JENKINS/ScriptTrigger+Plugin 我本人并没有使用它,但是它允许执行自定义的shell脚本而不是执行定期投票。您可以使用此自定义脚本首先建立隧道,然后轮询SVN更改。但是,您必须编写自己的脚本才能进行实际的SVN轮询。就像检查工作空间修订(svn info <LocalCheckOut>|grep Revision)并对照存储库(svn info <URL>|grep Revision)进行检查一样简单。该插件可让您以cron格式安排轮询频率。
svn info <LocalCheckOut>|grep Revision
svn info <URL>|grep Revision
另一种懒惰的方式是使用此插件,建立隧道,进行SVN更新(是否有更改),然后由工作来构建它。然后,您可以执行常规的 构建操作 ,该 操作 将在实际构建步骤之前检测实际上是否有新的签出。