gpt4 book ai didi

java - 构建 git repo 时使用 Jenkins 交换密码参数

转载 作者:行者123 更新时间:2023-11-30 07:39:22 24 4
gpt4 key购买 nike

我希望有以下场景:

  • Jenkins 获取我的 github 存储库(检查!)
  • 在我的项目中查找特定文件(比如 persistence.xml)
  • 找到参数(例如 PASSWORD_PLACEHOLDER)
  • 使用我之前在运行测试之前提供的密码进行交换
  • 运行我的测试(通过 Maven),具体取决于密码所在的数据库连接

问题:这可以轻松完成吗?如果可以,如何实现?这应该是 MAVEN 的职责还是 Jenkins 的职责?

最佳答案

您可以使用 Maven filtering 来实现它在测试资源上(或者在资源上,如果您愿意的话)。

您可以按如下方式配置 POM:

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

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

并将您的 persistence.xml 文件放在 src/test/resources 下,其中包含以下示例内容:

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

然后,您可以从命令行传递此 token 的值,如下所示:

mvn clean test -DsecretPasword="p4ssw0rd"

Maven 会自动用提供的值替换 persistence.xml 文件中的 token 。根据Maven lifecycle ,此替换将在任何测试执行之前发生。

一旦该机制到位,您就可以继续进行 Jenkins 设置:

  • Jenkins 从版本控制中检查代码
  • Jenkins 在工作区上运行 Maven 执行,将所需的密码值传递给 Maven,如上例所示
  • Maven 将替换 token 并执行测试

一个常见且良好的做法也是将此行为放置在专用的 maven 配置文件中,例如具有 id ci ,然后将其作为 Jenkins 构建的一部分激活(通过 - Pci 选项,在本例中传递给 maven)。

因此,回到你的问题:

Can this be done easily and if so, how?

是的,如上所述

Should this be a MAVEN responsibility or a Jenkins one?

Maven 和 Jenkins 一起工作

<小时/>

此外,请注意,您传递的密码将成为 Jenkins 服务器上 Jenkins 构建输出的一部分(它将打印执行的 Maven 命令以及您传递的密码值的一部分)。

您可以查看 Mask Password Jenkins Plugin从构建输出中屏蔽密码。

关于java - 构建 git repo 时使用 Jenkins 交换密码参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34910515/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com