我正在使用Jenkins、Gradle和Artifactory对一个新的构建系统进行原型设计。在指定构建工件及其目的地方面,这些工具中似乎存在冲突或重叠的功能。我看到了三个前进的道路:
- 使用Jenkins Artifactory 插件在 Jenkins 中指定特定任务的工件设置。
- 使用Gradle Artifactory 插件在 Gradle 构建脚本中指定工件设置。
- 使用标准Gradle“maven”插件在 Gradle 构建脚本中指定通用 maven repo 设置。
我看到了所有这些方法的优点和缺点,但据我所知,我们的构建没有缺少关键功能。
为了让我更加困惑,Gradle Artifactory 插件 wiki指出:
构建服务器集成 - 在持续集成构建服务器中运行 Gradle 构建时,建议使用适用于 Jenkins、TeamCity 或 Bamboo 的 Artifactory 插件之一通过构建服务器 UI 配置分辨率并通过构建信息捕获发布到 Artifactory。
因此,一些问题可以让对话继续进行:
- 用工件逻辑混淆构建脚本是否有意义?添加开发人员不部署可能会有所帮助。目前,我只看到从 Jenkins 任务上传的构建工件。
- 如果 CI 服务器关闭,将所有这些构建逻辑留在任务配置中是否会使我们面临问题?
- 通过 CI 接口完成的工件更改的版本控制如何?
- 我见过简单的 Bamboo 配置,它们通过 CI 服务器 UI 而不是 pom 指定构建工件。这只是一个糟糕的构建实践吗?
- 是否有一个杀手级工具集成功能将这些方法中的一种与另一种分开?
- 构建信息对象有多大用处?这仅在 Jenkins Artifactory 插件中可用,而不在 Gradle Artifactory 插件中可用?
我真的希望听到这些工具的现有用户的意见,以及哪些陷阱/要求可能导致他们采用上述方法之一(或者甚至可能是我尚未考虑过的更好的方法)。