2016-01-20 121 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以掩盖构建输出中的密码。