【问题标题】:FSTrigger triggers incorrectly in jenkinsFSTrigger 在詹金斯中触发错误
【发布时间】:2016-03-29 06:17:02
【问题描述】:

我在前景中设定了一条规则

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

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

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

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

[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,虽然没有发送新的电子邮件,但意外再次触发了另一个构建。每小时都这样。

我做错了什么?

【问题讨论】:

    标签: email jenkins triggers outlook continuous-integration


    【解决方案1】:

    Outlook 可能以某种方式触及了文件,修改了导致 FSTrigger 开始构建的一些时间戳。

    为了稳健起见,我建议不要依赖监视 Outlook 文件夹文件的更改,因为它可能会意外更改。而是修改您的规则以直接触发 jenkins 服务器上的构建作业。

    即伪代码:IF subject CONTAINS keyword ACCESS jenkinsurl_that_starts_build

    如何根据 Outlook 规则运行脚本似乎已布局here 和 有关如何通过 jenkins url 上的 http 请求触发构建的信息在 here

    中进行了解释

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

    【讨论】:

    • 谢谢多米尼克。我尝试发出 HTTP 请求,但似乎没有触发构建。这是我所做的:
      在 VBA 脚本中,添加代码:code Set objHTTP = CreateObject("Microsoft.XMLHTTP") URL = "56.xxx.xxx.xxx:8080/job/testenv/build?token=go" objHTTP.Open "POST", URL, False objHTTP .setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" objHTTP.Send ("")。执行此代码后,未触发任何构建。
    • 首先尝试通过将 url 放入 Firefox 中来验证该 url 确实正确。东西需要正确地转义(firefox 会自动执行此操作),只有在构建选项中设置它时才需要令牌。
    • 将“56.xxx.xxx.xxx:8080/job/testenv/build?token=go”更改为“56.xxx.xxx.xxx:8080/job/testenv/buildWithParameters?token”后=go”,它的工作原理
    【解决方案2】:

    我将规则更改为:

    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 修改的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-31
      • 2019-11-11
      • 2019-05-23
      • 1970-01-01
      • 1970-01-01
      • 2016-10-10
      相关资源
      最近更新 更多