繁体   English   中英

Jenkins Pipeline插件—获取和建立依赖关系

[英]Jenkins Pipeline Plugin — getting and building dependencies

我是詹金斯(Jenkins)的新手,而我的搜索却很少,以至于我觉得我还没有掌握该术语。

我有一个要与Jenkins Pipelines建立的项目。 这是一个GIT存储库中的Java / Maven项目。 它依赖于我的另外两个Java / maven项目,同样在GIT存储库中。

我如何向詹金斯解释这种关系?

让我们简化一下。 假设我有依赖于ProjectB的ProjectA。 我可以让詹金斯构建ProjectB没问题。 如果需要,我甚至可以存档jar,因此ProjectB的编译副本存储在我的Jenkins服务器中。

但是无论我做什么,ProjectA都无法使用

[错误]无法在项目ProjectA上执行目标:无法解析项目ProjectA的依赖项:无法解析以下工件:ProjectB:jar:0.9:无法在https://repo.maven中找到ProjectB:jar:0.9 。 apache.org/maven2已缓存在本地存储库中,直到中心的更新间隔过去或强制执行更新后,解决方案才会重新尝试-> [帮助1]

这非常简单,我什至不知道自己需要搜索什么。

我在ProjectA中的Jenkinsfile现在看起来像这样:

pipeline {
agent {
    docker {
        image 'maven:3-alpine'
        args '-v /root/.m2:/root/.m2'
    }
}
stages {
    stage('Build') {
        steps {
            build 'ProjectB'
            sh 'mvn -B -DskipTests clean package'
        }
    }
}

}

项目A独立于项目B。在Jenkins中归档它们不会将它们放在Maven可以识别并将其用作依赖项的任何位置。 您必须确保自己的Maven工作知道如何找到他们。 有两种选择。

您可以发布到类似工件的存储库。 然后,只需将Maven配置为查看该存储库即可。

您可以使用Jenkins REST API,甚至可以使用uri查找新工件并将其下载到工作区中。

您可以使用Copy Artifact插件将工件从另一个版本中拉入您的工作空间,以便可以使用它。

或者,由于它是管道,因此您可以在同一管道的不同阶段构建这两块。

如果您在作业B中构建的库仅专门用于作业A,则可以考虑将它们全部构建在同一管道中。 但是有时候使用某种外部存储库来发布您的库仍然更有意义,然后只需配置Maven以查看该存储库即可找到您的依赖项。 我通常会使用该选项,但是它确实需要更多的软件和更多的设置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM