Java 建筑管道项目詹金斯
我有一个要求,Java 建筑管道项目詹金斯,java,maven,jenkins,jenkins-pipeline,Java,Maven,Jenkins,Jenkins Pipeline,我有一个要求, 创建生成作业 部署到Artifactory 从artifactory下载工件并部署到测试服务器 我在构建管道中配置了所有3个作业。 此外,所有人都拥有共享的构建路径 这基本上是一个Java作业,我已经创建了构建作业,它工作得很好。我使用了下游作业来触发部署到工件作业。它使用Maven构建 在第二个作业中,需要手动触发(我已经这样配置),它运行良好,并且正在部署到我配置的相应存储库中。我使用了通用的artifactory集成插件,并使用发布的工件推送到artifactory存储库
请帮忙 我想你错过了管道的要点。最初的自由式作业开始变得过于复杂,并且在将它们链接在一起时具有困难的依赖关系(例如如何将此url从该作业获取到该作业)。解决方案是创建一个带有阶段的管道
stages{
stage('build') {
steps {
//build some stuff
}
}
stage('publish') {
steps {
//publish the stuff
}
}
stage('deploy) {
steps {
// download and deploy the stuff
}
}
在我看来,在您的情况下,只部署您已经拥有的东西而不重新下载这些东西可能更有用。查看
隐藏/取消隐藏步骤。这些将在不同阶段之间发挥作用 我通过下面的方法实现了这一点。
1.创建了生成作业-->这将从存储库下载代码并执行maven生成。对Pom.xml进行了调整,使我得到一个tar.gz文件作为输出。构建编号和分支名称的信息保存在同一工作区的文件中
2.创建了Artifactory上载作业-->我使用mvn deploy:deploy file命令将工件部署到Artifactory中的特定远程存储库。这有一个版本参数,我在其中传递构建号,它有groupID&artifactID。因此,一旦maven deploy文件上传该文件,它将在artifactory中上传确定的路径。既然我已经掌握了所有的细节,
我构建了artifactoryurl的框架,它保存在我获取构建编号和分支名称的同一个文件中
3.创建了到特定服务器的部署作业-->我创建了一个部署脚本,并将该脚本保存在服务器中,该服务器将URL作为参数。从工作区上的文件中,我能够检索URL,并对服务器进行了ssh。加载bash配置文件并将URL传递给部署脚本。之后,它下载工件并部署到服务器
创建这些作业后,我将构建作业配置为获取构建后手动项目,并将Artifactory upload作为作业名称。对于Artifactory作业,我将部署作为构建后的手动项目作业
通过这种方式,我创建了一个Build Pipeline视图,其中所有这些项目都是上游/下游项目。谢谢Rob。但我们需要这些作为单独的工作。我们当前的设置在单个作业中完成了所有步骤。想法是我们将经常运行构建作业,一旦测试步骤通过,就应该上传工件。有没有办法访问已部署的工件url存储区中的一些变量?若这是不可能的,那个么我需要使用复制工件插件n deploy作为单独的任务来测试服务器。我们正在使用build pipeline视图来可视化构建。我错过了你在文章中提到的最后一点,即你无法获取artifactory URL。因为如果你能得到它,那么用一个参数传递应该很容易。但是如果你不能得到它。。。有点难。我不知道如何从artifactory插件获取这些信息。如果你能找到buildInfo对象中的某个地方,那么它必须在buildInfo对象中的某个地方。你仍然可以将stages设置为有条件的。如果“构建”阶段没有执行您希望它执行的操作,则不要运行“发布”阶段。查看管道的“何时”条款。但我知道有时有其他原因需要单独的作业。看起来您可能可以使用buildInfo.getDeployableArtifacts()或buildInfo.deployableArtifacts,或者尝试使用getDeployedArtifacts(取决于插件的版本)。第一个将返回一个列表,第二个将返回一个映射。但是,我无法让它在沙盒脚本中运行,以查看它是否能满足您的需求。您可能必须从全局库或其他非沙盒脚本运行它。