如何在两个联系存储库(詹金斯)之间移动工件?
How to move artifacts between two nexus repositories (jenkins)?
我们使用 Jenkins + Gradle 脚本构建。
要将工件上传到 nexus,我们使用:
uploadArchives {
repositories {
mavenDeployer {
def auth = { authentication(userName: nexusUsername, password: nexusPassword) }
repository(url: rpmReleasesRepoUrl, auth)
pom.groupId = project.group
pom.version = project.version
pom.artifactId = project.product
}
}
}
我们需要一份工作,从一个节点获取工件并将其上传到另一个节点。
你能建议什么是更好的方法吗?如果有什么有用的articles/examples(第一次看到gradle/maven/nexus)?
1。 Jenkins神器推广插件
这是一个非 gradle 解决方案,但您可以在您的 jenkins 工作流程中使用 this jenkins plugin 将您的构建二进制文件从一个 nexus 存储库提升到另一个。
2。使用命令行参数提供 repo URL 用于发布
uploadArchives {
...
repository(url: project.getProperty('repoURL'), auth)
...
}
然后 运行 gradle uploadArchives -PrepoURL=http://nexusurl
根据需要使用不同的关系 url。
3。使用不同的任务发布到每个 repo
ext.repoURL=''
task publishToRepo1()<<{
repoURL = 'http://nexus1.url'
configureRepo(repoURL)
}
publishToRepo1.finalizedBy('uploadArchives')
task publishToRepo2()<<{
repoURL = 'http://nexus2.url'
configureRepo(repoURL)
}
publishToRepo2.finalizedBy('uploadArchives')
def configureRepo(url){
uploadArchives.repositories {
mavenDeployer {
def auth = { authentication(userName: nexusUsername, password: nexusPassword) }
repository(url: url, auth)
pom.groupId = project.group
pom.version = project.version
pom.artifactId = project.name
}
}
}
uploadArchives {
doFirst{
if (!repoURL){
println "Please use publishToRepo1 or publishToRepo1 to publish"
throw new GradleException('use of uploadArchives is restricted!')
}
}
}
如果直接使用消息调用 uploadArchives
以改用 publishToRepo1 或 publishToRepo2,这将导致 gradle 构建失败。直接调用这些任务将调用 uploadArchives 并配置适当的 repo url。
我们使用 Jenkins + Gradle 脚本构建。 要将工件上传到 nexus,我们使用:
uploadArchives {
repositories {
mavenDeployer {
def auth = { authentication(userName: nexusUsername, password: nexusPassword) }
repository(url: rpmReleasesRepoUrl, auth)
pom.groupId = project.group
pom.version = project.version
pom.artifactId = project.product
}
}
}
我们需要一份工作,从一个节点获取工件并将其上传到另一个节点。
你能建议什么是更好的方法吗?如果有什么有用的articles/examples(第一次看到gradle/maven/nexus)?
1。 Jenkins神器推广插件
这是一个非 gradle 解决方案,但您可以在您的 jenkins 工作流程中使用 this jenkins plugin 将您的构建二进制文件从一个 nexus 存储库提升到另一个。
2。使用命令行参数提供 repo URL 用于发布
uploadArchives {
...
repository(url: project.getProperty('repoURL'), auth)
...
}
然后 运行 gradle uploadArchives -PrepoURL=http://nexusurl
根据需要使用不同的关系 url。
3。使用不同的任务发布到每个 repo
ext.repoURL=''
task publishToRepo1()<<{
repoURL = 'http://nexus1.url'
configureRepo(repoURL)
}
publishToRepo1.finalizedBy('uploadArchives')
task publishToRepo2()<<{
repoURL = 'http://nexus2.url'
configureRepo(repoURL)
}
publishToRepo2.finalizedBy('uploadArchives')
def configureRepo(url){
uploadArchives.repositories {
mavenDeployer {
def auth = { authentication(userName: nexusUsername, password: nexusPassword) }
repository(url: url, auth)
pom.groupId = project.group
pom.version = project.version
pom.artifactId = project.name
}
}
}
uploadArchives {
doFirst{
if (!repoURL){
println "Please use publishToRepo1 or publishToRepo1 to publish"
throw new GradleException('use of uploadArchives is restricted!')
}
}
}
如果直接使用消息调用 uploadArchives
以改用 publishToRepo1 或 publishToRepo2,这将导致 gradle 构建失败。直接调用这些任务将调用 uploadArchives 并配置适当的 repo url。