Jenkins SVN post-commit hook不会触发子目录上的作业集

时间:2016-05-06 11:09:58

标签: vb.net svn jenkins

我在詹金斯有两个工作,一个工作副本是" subversion / repos / mainframe"另一个有" subversion / repos / mainframe / subdir"的工作副本。

然后我在主机存储库上创建了一个挂钩,以便在任何提交时调用Jenkins。这个钩子一直在触发我的第一个Job没有问题。但第二个工作根本没有被触发。唯一的区别是第二个Job设置为存储库中的子目录,我希望保持这种方式。即使我提交了一个文件" subversion / repos / mainframe / subdir"第二个Job没有被轮询,只有第一个被轮询。

如何使用post-commit钩子触发第二个Job?

post-commit.cmd in hooks:

\ ... \ post-commit.exe%1%2

post-commit.exe(已清理):

' read Parameters
sArchive = Environment.GetCommandLineArgs(1)
sRevision = Environment.GetCommandLineArgs(2)

' get UUID
Dim process As New Process()
process.StartInfo.FileName = "svnlook.exe"
process.StartInfo.Arguments = "uuid " + sArchive
process.StartInfo.UseShellExecute = False
process.StartInfo.RedirectStandardOutput = True
process.Start()

Dim reader As StreamReader = process.StandardOutput
UUID = reader.ReadLine()
wrGETURL = System.Net.WebRequest.Create(jenkinsTESTURL + UUID.Trim() + "/notifyCommit?rev=" + sRevision)
wrGETURL.Method = "POST"
Dim postData As String = "`svnlook changed --revision " + sRevision + " " + sArchive + "`"
Dim byteArray As Byte() = Text.Encoding.UTF8.GetBytes(postData)
wrGETURL.ContentType = "text/plain;charset=UTF-8"
wrGETURL.ContentLength = byteArray.Length
Dim dataStream As Stream = wrGETURL.GetRequestStream()
dataStream.Write(byteArray, 0, byteArray.Length)
dataStream.Close()

Jenkins Log(仅触发第一个Job):

Mai 10, 2016 11:37:11 AM INFO jenkins.scm.impl.subversion.SubversionSCMSource$ListenerImpl onNotify
Received post-commit hook from 0e020a5b-918e-1147-8b68-31c6afce54ec for revision 152.138 on paths [look changed --revision 152138 D:\svn\testrepos\mainframe`]

Mai 10, 2016 11:37:11 AM INFO jenkins.scm.impl.subversion.SubversionSCMSource$ListenerImpl onNotify
No subversion consumers for UUID 0e020a5b-918e-1147-8b68-31c6afce54ec

Mai 10, 2016 11:37:11 AM INFO hudson.triggers.SCMTrigger$Runner run
SCM changes detected in PostcommitHook-Test. Triggering  #52

Mai 10, 2016 11:37:20 AM INFO hudson.model.Run execute
PostcommitHook-Test #52 main build action completed: SUCCESS

编辑:

只需将第二个Job更改为指向" subversion / repos / mainframe /"作品。然后触发器调用两个Jobs。它不是一个可行的解决方案,因为对于那些不应该影响作业的提交,它会被多次调用。

2 个答案:

答案 0 :(得分:0)

为子目录触发作业不是问题。我的猜测是你的钩子代码没有设置来处理子目录。但是,我们需要查看您的提交后挂钩代码以进一步评估。

答案 1 :(得分:0)

管理以使其正常运行。首先,我将我的第二个Job设置为指向" subversion / repos / mainframe"的主存储库。要忽略未对子目录进行的任何提交,subversion插件中的高级选项只包含特定路径。通过将其设置为" / subdir /.*"只在该文件夹中提交或其子文件夹触发作业。