2016-01-20 122 views
1

當交換密碼參數超出我想有以下情形:(!檢查)使用詹金斯建設混帳回購協議

  • 詹金斯搶我的github回購
  • 找到我的項目中的特定文件(persistence.xml中假設)
  • 定位參數(例如PASSWORD_PLACEHOLDER)
  • 與我跑我的測試
  • 運行我的測試(通過Maven的)前已經預先設置一個密碼交換它依賴該DB連接的密碼是

問題:這可以很容易地完成,如果是這樣,如何?這應該是MAVEN的責任還是詹金斯的責任?

回答

1

您可以使用Maven filtering在測試資源上(或在資源上,如果您願意的話)實現它。

你可以配置你的POM如下:

<properties> 
    <secretPassword>xxxx</secretPassword> 
</properties> 

<build> 
    <testResources> 
     <testResource> 
      <filtering>true</filtering> 
      <directory>src/test/resources</directory> 
     </testResource> 
    </testResources> 
</build> 

而且具有下列樣品含量有src/test/resources在你persistence.xml文件:

<test> 
    <password>${secretPassword}</password> 
</test> 

然後,在命令行中,你可以傳遞一個值此令牌如下:

mvn clean test -DsecretPasword="p4ssw0rd" 

And Mave n會自動使用提供的值替換persistence.xml文件中的令牌。根據Maven lifecycle,此替換將在任何測試執行之前發生。

一旦這個機制已經就位,然後可以與詹金斯繼續設定:

  • 詹金斯從版本控制
  • 詹金斯出檢查代碼運行在傳遞到Maven所需工作區一個Maven執行密碼值作爲上述
  • 的Maven的例子將取代令牌和執行測試

一個共同的和好的做法也是把這個behavio r在一個專門的maven配置文件中,例如id爲ci,然後激活它作爲Jenkins版本的一部分(通過-Pci選項,在這種情況下,傳遞給maven)。

因此,回到你的問題:

可以這樣很容易做到,如果是這樣,如何?

是,上述

描述如果這是一個Maven責任或詹金斯一個?

Maven和詹金斯一起工作


此外,要注意的是你通過將是詹金斯的詹金斯服務器上建立輸出部分的密碼(這將打印Maven的命令來執行,並作爲部分它是您爲密碼傳遞的值,清楚地表明)。

您可以檢查Mask Password Jenkins Plugin以掩蓋構建輸出中的密碼。