Email jenkins中的FSTrigger触发器不正确

Email jenkins中的FSTrigger触发器不正确,email,jenkins,triggers,outlook,continuous-integration,Email,Jenkins,Triggers,Outlook,Continuous Integration,我在outlook中设置了一条规则 使用到达后应用此规则 “xyz” 在主题中并将其移动到 “构建我” 文件夹“buildme”作为数据文件创建于 C:\Users\myid\AppData\Local\Microsoft\Outlook\builme.pst 在项目下的Jenkin中,我创建了构建触发器,如下所示: [FSTrigger]-监视文件文件路径: C:\Users\myid\AppData\Local\Microsoft\Outlook\builme.pst 附表:55***1-5

我在outlook中设置了一条规则

使用到达后应用此规则
“xyz” 在主题中
并将其移动到 “构建我”

文件夹“buildme”作为数据文件创建于

C:\Users\myid\AppData\Local\Microsoft\Outlook\builme.pst

在项目下的Jenkin中,我创建了构建触发器,如下所示:

[FSTrigger]-监视文件
文件路径: C:\Users\myid\AppData\Local\Microsoft\Outlook\builme.pst
附表:55***1-5

我发了一封主题为“xyz”的电子邮件。 然后,电子邮件被移动到“buildme”文件夹中,因此文件C:\Users\myid\AppData\Local\Microsoft\Outlook\builme.pst将在“3/24/2016 11:24 AM”更新

上午11:55,生成被正确触发

然而,在下午12:55,另一个构建被意外地再次触发,尽管没有发送新的电子邮件。这种情况每小时都在发生


我做错了什么?

Outlook可能以某种方式触及了该文件,修改了导致FSTrigger启动构建的时间戳

出于健壮性考虑,我建议不要依赖于监视outlook文件夹文件的更改,因为它可能会意外更改。而是修改规则以直接触发jenkins服务器上的构建作业

即伪代码化:
如果主题包含关键字访问jenkinsurl,则启动构建

如何基于outlook规则运行脚本似乎是一个复杂的问题 解释了如何通过jenkins url上的http请求触发构建的信息


您甚至可以在将来扩展它,将参数从电子邮件传递到构建中,因为这些参数也可以通过url访问进行设置。有关此部分的更多信息,启动带有参数的生成时,Outlook可能以某种方式触及了文件,修改了导致FSTrigger启动生成的时间戳

出于健壮性考虑,我建议不要依赖于监视outlook文件夹文件的更改,因为它可能会意外更改。而是修改规则以直接触发jenkins服务器上的构建作业

即伪代码化:
如果主题包含关键字访问jenkinsurl,则启动构建

如何基于outlook规则运行脚本似乎是一个复杂的问题 解释了如何通过jenkins url上的http请求触发构建的信息

您甚至可以在将来扩展它,将参数从电子邮件传递到构建中,因为这些参数也可以通过url访问进行设置。有关此部分的更多信息,请使用参数启动构建我将规则更改为:

apply this rule after arrives 
with "xyz" in the subject 
run projetcs.ThisOutlookSession.WriteStringToFile
以及VBA脚本:

Sub WriteStringToFile1(MyMail As MailItem)
    Const FILEPATH = "c:\buildtrigger\testtest.txt"

    Dim strSubject As String
    Dim strSender As String
    Dim strText As String
    Dim strID As String
    Dim objMail As Outlook.MailItem

    strID = MyMail.EntryID
    Set objMail = Application.Session.GetItemFromID(strID)

    strSubject = objMail.Subject
    strSender = objMail.SenderName


    Open FILEPATH For Output As 1
    Print #1, "SET XYZ = " & strSubject & ";" & strSender & "--" & Now
    Close #1

End Sub
此VBA脚本将向testtest.txt写入一行

在Jenkins中,创建生成触发器:

[FSTrigger] - Monitor folder
Path = c:\buildtrigger
Includes = testtest.txt
Exclude check lastModification date = true
Exclude check content = false
Exclude check fewer or more files = true
schedule: * * * * 1-5
使用主题中的xyz发送电子邮件,将成功触发生成,未收到电子邮件时不会触发生成

作为旁注,文件的时间戳似乎是由FSTrigger修改的,而不是由Outlook或Windows修改的。

我将规则更改为:

apply this rule after arrives 
with "xyz" in the subject 
run projetcs.ThisOutlookSession.WriteStringToFile
以及VBA脚本:

Sub WriteStringToFile1(MyMail As MailItem)
    Const FILEPATH = "c:\buildtrigger\testtest.txt"

    Dim strSubject As String
    Dim strSender As String
    Dim strText As String
    Dim strID As String
    Dim objMail As Outlook.MailItem

    strID = MyMail.EntryID
    Set objMail = Application.Session.GetItemFromID(strID)

    strSubject = objMail.Subject
    strSender = objMail.SenderName


    Open FILEPATH For Output As 1
    Print #1, "SET XYZ = " & strSubject & ";" & strSender & "--" & Now
    Close #1

End Sub
此VBA脚本将向testtest.txt写入一行

在Jenkins中,创建生成触发器:

[FSTrigger] - Monitor folder
Path = c:\buildtrigger
Includes = testtest.txt
Exclude check lastModification date = true
Exclude check content = false
Exclude check fewer or more files = true
schedule: * * * * 1-5
使用主题中的xyz发送电子邮件,将成功触发生成,未收到电子邮件时不会触发生成


另外,文件的时间戳似乎是由FSTrigger修改的,而不是由Outlook或Windows修改的。

谢谢Dominik。我试图发出HTTP请求,但它似乎没有触发构建。以下是我所做的:
在VBA脚本中,添加代码:
code
Set-objHTTP=CreateObject(“Microsoft.XMLHTTP”)URL=”“objHTTP.Open“POST”、URL、False-objHTTP.setRequestHeader“User-Agent”、“Mozilla/4.0(兼容;MSIE 6.0;Windows NT 5.0)”objHTTP.Send(“”)。执行此代码后,未触发任何生成。请先将url放入Firefox中,验证url是否正确。东西需要正确的URL转义(firefox会自动执行此操作),您只需要在构建选项中设置它。将“56.xxx.xxx.xxx:8080/job/testenv/build?token=go”更改为“56.xxx.xxx.xxx:8080/job/testenv/buildWithParameters?token=go”后,它就可以工作了。我试图发出HTTP请求,但它似乎没有触发构建。以下是我所做的:
在VBA脚本中,添加代码:
code
Set-objHTTP=CreateObject(“Microsoft.XMLHTTP”)URL=”“objHTTP.Open“POST”、URL、False-objHTTP.setRequestHeader“User-Agent”、“Mozilla/4.0(兼容;MSIE 6.0;Windows NT 5.0)”objHTTP.Send(“”)。执行此代码后,未触发任何生成。请先将url放入Firefox中,验证url是否正确。这些东西需要正确地进行URL转义(firefox会自动执行此操作),您只需要在构建选项中设置它。将“56.xxx.xxx.xxx:8080/job/testenv/build?token=go”更改为“56.xxx.xxx.xxx:8080/job/testenv/buildWithParameters?token=go”后,它就可以工作了