jfrog artifactoryにzipファイルを公開するためのjenkinsパイプラインを設定しようとしています。gradle artifactorypublish:jenkinsパイプラインはプロパティを公開しません。
私はcom.jfrog.artifactory
プラグインを使用しています。これはコマンドライングラデルからうまく機能し、artifactoryPublishタスクを実行してアーティファクトを公開し、モジュールに戻してアーティファクトに結びつけることができます。
アーティファクトは、プロパティを表示:
build.name = `projectname`
build.number = `some large number`
そして私は、ビルド/モジュールとバックアーティファクトににそれらからクリックすることができます。
しかし、これをjenkinsfileパイプラインから実行すると、アーティファクトが公開されてモジュールに戻されますが、モジュールは正常にモジュールをアーティファクトに結び付けません。
アーティファクトはbuild.nameとbuild.numberプロパティを受け取らず、モジュールがアーティファクトへのパスを見つけたり解決したりすることができないため、モジュールからアーティファクトに戻ることはできません(zipファイルと生成されたポム)。
他のプロジェクトで動作するように思われる ORG_GRADLE_PROJECT_buildInfo.build.number=${env.BUILD_NUMBER}
のようなjenkinsのパラメータを渡していますが、何らかの理由で私はそれを振ることができません。
デバッグに役立つ場合はjenkinsfileをさらに含めることができますが、実際にはリポジトリをチェックアウトして公開しようとしています。
私は頻繁にここにドキュメント読んでされています:
https://www.jfrog.com/confluence/display/RTF/Gradle+Artifactory+Plugin
をし、それが-Pproject
ものを介して動作させることができていません。
他にも何ができるのでしょうか?私は実際にジェンキンスパイプラインのartifactoryプラグインを直接使用したくはありません。なぜならコマンドラインからも展開できることがとてもいいからです。
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のスニップ:
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"
}
}