我试图建立一个jenkins管道,用于将zip文件发布到jfrog artifactory。
我正在使用com.jfrog.artifactory
插件来执行此操作。这在命令行gradle中运行良好,我可以运行artifactoryPublish任务来发布工件并将它们绑定回模块,然后模块与工件绑定。
工件显示属性:
build.name = `projectname`
build.number = `some large number`
我可以从它们点击构建/模块并返回工件。
但是,当我从jenkinsfile管道运行它时,工件会被发布并被绑定回模块,但是模块没有成功地将模块绑定回工件。
工件不接收build.name和build.number属性,我无法从模块单击回到工件,因为模块无法找到或解析返回工件的路径(zip文件和生成的pom )。
我从jenkins那里传递了这些:
ORG_GRADLE_PROJECT_buildInfo.build.number=${env.BUILD_NUMBER}
这似乎适用于其他项目...但无论出于何种原因,我无法动摇它。
我可以包含更多jenkins文件,如果这有助于调试,但我真的只是检查存储库并尝试发布它。
我在这里阅读了大量文档:
https://www.jfrog.com/confluence/display/RTF/Gradle+Artifactory+Plugin
并且无法通过-Pproject
内容使其发挥作用。
有谁知道我还能尝试什么?我并不想直接使用jenkins管道工件插件,因为它能够从命令行部署也很好。
的build.gradle:
publishing {
publications {
ManualUpdaterPackage(MavenPublication){
artifact assembleManualUpdaterPackage
}
}
}
artifactory {
contextUrl = "${artifactoryUrl}" //The base Artifactory URL if not overridden by the publisher/resolver
publish {
defaults {
publications('ManualUpdaterPackage')
}
repository {
repoKey = project.version.endsWith('-SNAPSHOT') ? snapshotRepo : releaseRepo
username = "${artifactory_user}"
password = "${artifactory_password}"
maven = true
}
}
}
task assembleManualUpdaterPackage (type: Zip){
dependsOn anotherTask
from (packageDir + "/")
include '**'
// archiveName "manualUpdaterPackage-${version}.zip"
destinationDir(file(manualUpdaterZipDir))
}
jenkinsfile snip:
withCredentials(
[
[
$class : 'UsernamePasswordMultiBinding',
credentialsId : 'validcreds',
passwordVariable: 'ORG_GRADLE_PROJECT_artifactory_password',
usernameVariable: 'ORG_GRADLE_PROJECT_artifactory_user'
]
]
) {
withEnv(
[
"ORG_GRADLE_PROJECT_buildInfo.build.number=${env.BUILD_NUMBER}",
"ORG_GRADLE_PROJECT_buildInfo.build.name=${artifactName}",
"ORG_GRADLE_PROJECT_buildInfo.build.url=${env.JOB_URL}"
]
) {
sh 'chmod +x gradlew'
sh "./gradlew --no-daemon clean artifactoryPublish"
}
}
答案 0 :(得分:1)
最终,我的同事推荐查看Artifactory Pipeline Gradle插件。与他人合作是非常好的,我们用它可以更快地取得成功。