【问题标题】:How to implement continuous deployment with Nexus and Jenkins如何使用 Nexus 和 Jenkins 实现持续部署
【发布时间】:2012-07-11 14:47:22
【问题描述】:

我正在尝试实施一个持续部署系统,但我似乎无法为我们的问题找到一个好的答案。 我们使用 Jenkins 运行 maven 构建来生成我们的工件并将它们部署到 Nexus。我看到一些项目将所有内容捆绑到单个 war 或 tar 文件中,按名称从 Nexus 中提取每个请求的一个文件并将其部署到应用程序服务器,但这需要他们事先知道他们有哪些版本可用。 我的项目在其他工件中有很多 jars/wars/binaries,它们没有使用应用程序服务器进行部署。我们想要做的是能够从nexus 中提取软件的任何快照或发布版本,然后生成安装包或将其直接传送到远程服务器。

澄清:我希望 QA 或开发能够从 Jenkins 中选择一个版本; Jenkins 将在其中轮询 Nexus 以获取可用版本,然后从 Nexus 自动部署到服务器。

是否有一种简单的 nexus/maven 方法可以将软件输出到测试系统?

那么,有没有办法通过 ant/ivy、Jenkins、maven、gradle 轮询 nexus 以确定哪些修订可用?如果有帮助,我会写别的。

我看到有人在这里问过类似的问题:How do I choose an artifact from Nexus in a Hudson / Jenkins job?,但 9 个月后仍未得到答复。

【问题讨论】:

标签: hudson jenkins nexus continuous-deployment


【解决方案1】:

Nexus 为您提供标准的 HTTP 浏览功能。您可以通过 HTTP 浏览存储库并查看可用的内容。

我仍然不明白你的用例。如果你知道你想要哪个版本的项目,那么问题是什么?

最简单的方法是编写一个安装程序 pom.xml,其中包含您想要的工件版本的 ${} 占位符,然后使用 mvn package -Dproduct.version=1.0.0 调用 mvn

如果您使用容器,PAX 的插件允许您访问特定的工件,例如 mvn:myGroup/myArtifact/myVersion,它会自动从 Maven 中提取。

Nexus 没有任何魔法。这是 groups/artifactId/versions 的 URL 上的所有众所周知的路径

【讨论】:

  • 我可能应该说 Maven 实际上并不管理整个项目。因此,所有 java 文件的依赖项都在 maven 中设置,但所有 c++ 和配置都通过不同的构建系统进行管理。运行 mvn package 是否意味着我必须创建一个新的依赖集,其中包含我来自两个系统的所有包?
  • 我最终只是用 maven 生成了完整的安装包并将其作为工件上传到 Nexus。在 jenkins 上,执行包构建的作业会解析 nexus 安装包 url 以提取所有可用包作为 QA/dev 选项来执行部署。然后我写了一个自定义部署器,用 wget 拉取正确的包。
猜你喜欢
  • 1970-01-01
  • 2022-06-22
  • 1970-01-01
  • 2012-12-08
  • 1970-01-01
  • 2016-09-26
  • 2016-08-28
  • 2017-09-09
  • 2013-04-02
相关资源
最近更新 更多