我需要设置一个Jenkins作业,从表面上看,它可以简单地构建一些Java源代码。
然而,通常情况下,源依赖于来自第三方的一组JAR文件,并且这些JAR的不同版本可以作为持续集成过程使用 - 因此Jenkins。
我的源代码有一个build.gradle文件,其内容的格式部分由第三方决定,并将其更改为我自己的风格会有问题。这是一个匿名样本:
/* Module Build File */
apply from: "${System.getenv("third_party_home")}/etc/gradle/thirdParty.gradle"
ext {
name = "myModule"
project.group = "ProjectD"
project.version = "1.2.1"
}
dependencies {
compile "ThirdParty:jarNameA:4.2"
compile "ThirdParty:jarNameB:4.2"
compile "ThirdParty:jarNameC:4.0"
}
问题是,虽然源代码在逻辑上属于它自己的git repo,但是作为编译的一部分包含的第三方代码也是如此 - 并且由'third_party_home'环境变量控制。所以这里需要两个git repos,但是一个简单的Jenkins工作不支持这样的多个互连回购。
显然,最好的解决方案是使用Jenkins Pipeline插件,但我知道它很复杂。
有人能为我提供一些简单的指示,解释我如何配置插件来实现这种gradle构建吗?
非常感谢
答案 0 :(得分:1)
如果您可以在Gradle内部实现您的整个目标,那么您真的会简化一些事情。我不太了解Gradle,不知道它会如何起作用。
或者,使用工件存储库服务器将第三方代码部署到。然后Jenkins和Gradle都不需要单独的repos来检查和编译。
由于您要求提供Jenkins解决方案,这是我的建议:
管道中的多个存储库实际上是微不足道的。在dir()闭包中,您可以查看另一个存储库。
pipeline {
environment {
third_party_home = "${WORKSPACE}/third_party_home"
}
stages {
stage('Checkout') {
steps {
dir('third_party_home') {
git credentialsId: 'git-jenkins', url: 'git@git-server:third-party-repo'
}
}
}
stage('Build') {
// run gradle here
}
// more stages
}
}
你可以使用带有多个结账的单个dir()或多个dir(),每个结账都有一个结账。