2016-07-06 103 views
1

我是詹金斯的新手,雖然我發現了一些類似的問題,但沒有一種解決方案似乎能夠按照我需要的方式工作。對一些人來說,這可能看起來像是一個基本問題,但對我來說,這是一個非常大的交易,我正在努力。如何使Jenkins中的Java控制檯輸出環境變量?

基本上,我構建了一個執行Java Selenium代碼的項目,它在Jenkins的控制檯輸出中顯示會話ID,這就是我需要添加到環境變量中以便在完成此項目後觸發的項目中使用的環境變量。

我嘗試了一些Groovy腳本,但我不認爲我足夠理解如何使用它,所以無論我給了什麼,都不是我希望得到的。

有沒有人做過類似的事情,提供一些關於如何實現這一點的提示?

非常感謝

+0

是對_session ID_的打印你的控制之下或者你有跟蹤的控制檯輸出呢? –

+0

你可以改變硒代碼來將你需要的值寫入屬性文件嗎?或者也許寫一個腳本來解析構建日誌併爲你解壓? – Revive

+1

@ I-LOVE-2-REVIVE你的第一句話正是我在評論的第一部分中想到的。關於你的第二句話,有一個插件可以做到這一點。 –

回答

2

有兩個選項取決於打印是否是你的控制或不符合(在理論上,他們中的一個不能正常工作,請參見下面2)。

  1. 印刷是你的控制之下:

    • 寫會話ID屬性文件,例如from-build-log.properties

      sessionId=... 
      
    • 添加生成後行動Trigger parameterized build on other projects

      這個插件觸發建立在其他項目上,與預定義的參數,或由成品供應建立。

      即使目標沒有參數化,或者沒有定義該名稱的屬性,每個參數都會傳遞給目標項目。

      • 添加參數參數從屬性從文件文件
        • 使用性質:from-build-log.properties
  2. 印刷是你的控制之下:

    • 添加生成後行動Post build task

      此功能允許您關聯shell或批處理腳本根據構建日誌輸出,在Hudson上構建一些任務。如果日誌文本與構建日誌文件中的某處匹配,則腳本將執行。 [...]

      Java正則表達式是允許的,組可以用作腳本參數。如果文本是「Last Build:#(\ d +)」並且腳本是「script.sh」,那麼如果日誌包含一行「Last Build:#4」,腳本「script.sh 4」將被調用。

      • 任務腳本

        [...]參考%1,...%N是允許的,並且將通過相匹配的基團取代正則表達式。 %0是整個比賽。


      不幸的是這並沒有工作,因爲那裏是自2013年以來已知的問題:[JENKINS-17268] Post build task plugin: Passing arguments does not work as documented

      • 構建執行Windows批處理命令命令

        @echo(& echo CMD: sessionId=123456789 
        
      • 後生成任務任務

        • 記錄文本sessionId=(\d+)
        • 腳本

          @echo(& echo sessionId='%1'(!) of '%0' 
          

      控制檯輸出:

      ... 
      [Freestyle-project] $ cmd /c call C:\Windows\TEMP\hudson4684581005071706054.bat 
      
          CMD: sessionId=123456789 
      
      C:\Program Files (x86)\Jenkins\workspace\Freestyle-project>exit 0 
      Performing Post build task... 
      Match found for :sessionId=(\d+) : True 
      Logical operation result is TRUE 
      Running script : @echo(& echo sessionId='%1'(!) of '%0' 
      
      [Freestyle-project] $ cmd /c call C:\Windows\TEMP\hudson1525182929053902824.bat 
      
          sessionId=''(!) of 'C:\Windows\TEMP\hudson1525182929053902824.bat' 
      
      C:\Program Files (x86)\Jenkins\workspace\Freestyle-project>exit 0 
      POST BUILD TASK : SUCCESS 
      END OF POST BUILD TASK : 0 
      Finished: SUCCESS 
      

      %0是不是「整個匹配」但腳本的名字,像往常一樣用Windows命令行。 %1爲空。


      一種解決方法是:

    • 添加構建步驟執行shell命令

      sed -En 's/.*(sessionId=[0-9]+)/\1/p' \ 
          ../../jobs/${JOB_NAME}/builds/${BUILD_NUMBER}/log > from-build-log.properties 
      
    • 添加生成後行動觸發參數構建在其他項目上

      • 添加參數參數從屬性文件從文件
        • 使用性質from-build-log.properties