从nexus部署工件的正确方法

jc1992

我正在尝试构建 CI 环境,我认为它有效,因为我可以自动将 jar 发布到 Nexus 中。

Git
BitBucket
Jenkins
Nexus OSS

我正在寻找有关 maven 项目在发布到 nexus 时自动部署的信息,但我不确定我的最初想法。

我最初的想法是从 Nexus3 下载最新的工件并使用 mvn spring-boot:run 但我不确定我的决定。

我阅读了有关 Puppet 的信息,但我不确定这个选项,有人可以帮助我了解这个过程吗?或者向我发送 StackOverflow 中有关此问题的另一个链接。

问候 !

斯坦尼斯拉夫·巴什基尔采夫

在 Jenkins 中构建管道:

  • 第一项工作构建工件并将其上传到存储(在您的情况下是 Nexus)。它必须确定它上传的版本 - 最简单的方法是通过作业本身设置版本,然后上传已知版本(请参阅底部的示例脚本)。
  • 然后将已知版本传递给下游作业(例如部署到 envs)。您需要告诉 Jenkins 您刚刚部署的是哪个版本 - 可以将其写入键值文件,然后使用类似 EnvInject 插件的东西将其作为 env var 读取。
  • 要从 Nexus 下载工件,请使用 wget/curl:

    http://nexus.domain/nexus/service/local/artifact/maven/redirect?r={repository}&g={groupId}&a={artifactId}&v={version}&p={type}

  • Jenkins 有几个用于构建管道的插件,但您可以从简单的内置作业可能性开始,以调用其他作业。

几个注意事项:

  • 不要使用 Maven 进行部署。Maven 是一个构建工具,它不适合部署。编写 bash 脚本并可能使用 Docker 进行部署自动化。
  • 不要使用 LATEST/SNAPSHOT/RELEASE 版本 - 你需要有一个确定性的部署(如果它用相同的参数重复,它会部署相同的工件)。

设置类似快照的版本的示例脚本(因此可以将工件上传到快照 Maven 存储库):

VERSION=`mvn help:evaluate -Dexpression=project.version | grep -v "^\["| grep -v Download`
VERSION=${VERSION/%-SNAPSHOT/} #get rid of -SNAPSHOT if it's there
VERSION="$VERSION-"`date +"%Y%m%d.%H%M%S"`"-$BUILD_NUMBER"
mvn versions:set -DnewVersion=$VERSION

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章