【问题标题】:Jenkins - get latest artifact version from remote repositoryJenkins - 从远程存储库获取最新的工件版本
【发布时间】:2015-01-26 12:06:02
【问题描述】:

我正在尝试在 Jenkins 中创建部署作业。到目前为止,我一直在通过 maven install 目标构建我的工件,然后使用 shell 脚本将它部署在应用程序服务器上。但是,我现在想跳过安装部分,只从我的 nexus 存储库中获取工件。

我知道有 maven 依赖项:get,我可以使用它从存储库中检索工件,但是有什么方法可以确保在不将其作为构建参数传递的情况下获得最新版本?

【问题讨论】:

  • 如果您想从 Nexus 获取它,您需要先发送deploy,其中包括“安装”(Maven 生命周期)。
  • 我正在另一个 Jenkins 工作中进行部署。我希望第二份工作从 Nexus 存储库中获取最新的工件,然后将其部署到应用程序服务器上。
  • 如果您通过 dependency:get 使用 Maven 的补充选项 -U 执行此操作,它将检查 Nexus 是否有新工件。
  • 使用 Copy Artifact Plugin (wiki.jenkins-ci.org/display/JENKINS/Copy+Artifact+Plugin) 来明确使用其他作业的输出可能更“Jenkins-wayish”

标签: maven jenkins


【解决方案1】:

你有不同的选择:

1) 使用Repository Connector Plugin。使用此插件,您可以获得额外的“工件解析器”构建步骤,您可以在其中将工件从集中配置的(管理 Jenkins)存储库下载到部署作业的工作区(具有不同的选项,例如重命名等)。

如果您使用版本LATEST,您始终会获得最新版本。同样,您可以将RELEASE 用于最新版本或[1.0,1.1) 等范围。

但是有两个警告:

在最新版本的插件中,LATEST 已损坏(请参阅https://issues.jenkins-ci.org/browse/JENKINS-20263),因此您现在需要使用 0.8.2 版本。

您应该手动对下载的工件进行指纹识别,因为目前这不会自动完成。

2) 按照建议使用dependency:get,但如上所述使用LATESTRELEASE。但是,我不认为这是一个非常优雅的解决方案。 (如果您只是使用具有相同基本版本的 SNAPSHOT,请遵循 khmarbaise 的建议,只需将 -U 添加到命令行)

3) 使用 Maven Deployment Linker Plugin 插件,这是一个相当优雅的替代方案,因为您可以从其他作业(如 Copy-Artifact)复制工件,但它们仍会从您的工件存储库中检索(因此您不会浪费磁盘空间和时间)。该插件最大的问题是它目前不支持身份验证。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-25
    • 2023-02-17
    • 1970-01-01
    • 2019-01-03
    • 2016-03-25
    相关资源
    最近更新 更多