使用Jenkins Artifactory插件和Gradle,我可以成功部署到我的Artifactory实例。但是,我无法使用输入到Jenkins配置中的凭据来解析来自同一存储库的工件。Jenkins Artifactory插件如何将解析器凭证传递给Gradle?
以下是Artifactory中Artifactory的“生成构建脚本”功能所采用的build.gradle
。对詹金斯
apply plugin: 'java'
sourceCompatibility = 1.5
version = '1.0'
buildscript {
repositories {
maven {
url 'http://artifactory.myorg.com:8081/artifactory/plugins-release'
credentials {
username = "${artifactory_user}"
password = "${artifactory_password}"
}
}
}
dependencies {
//Check for the latest version here: http://plugins.gradle.org/plugin/com.jfrog.artifactory
classpath "org.jfrog.buildinfo:build-info-extractor-gradle:3.0.3"
}
}
allprojects {
apply plugin: "com.jfrog.artifactory"
}
artifactory {
contextUrl = "${artifactory_contextUrl}" //The base Artifactory URL if not overridden by the publisher/resolver
publish {
repository {
repoKey = 'libs-release-local'
username = "${artifactory_user}"
password = "${artifactory_password}"
maven = true
}
}
resolve {
repository {
repoKey = 'libs-release'
username = "${artifactory_user}"
password = "${artifactory_password}"
maven = true
}
}
}
dependencies {
compile group: "com.myorg", name: "internal-library", version: '1.0'
testCompile group: 'junit', name: 'junit', version: '4.11'
}
作业配置:
詹金斯Artifactory的插件配置:
错误:
FAILURE: Build failed with an exception.
* Where:
Build file '/var/lib/jenkins/jobs/deleteme/workspace/build.gradle' line: 10
* What went wrong:
A problem occurred evaluating root project 'untitled2'.
> Could not find property 'artifactory_user' on Credentials [username: null].
在当地,解决文物工作(artifactory_user
等等都解决了,因为我在我的配置他们cal ~/.gradle/gradle.properties
)。但是,构建失败,因为artifactory_user
未定义。当然,我可以配置一个gradle.properties
供Jenkins使用(而且这个工作),但是假设是如何工作的?看起来Jenkins Artifactory插件Gradle集成应该以某种方式传达解析器凭证。有没有办法做到这一点,而不需要在Jenkins的两个地方复制证书?
伟大的信息和观察...不幸的是,它不能在詹金斯工作。你提到的buildinfo文件包含artifactory的_output_“buildinfo”任务,然后将其上传到artifactory。这些属性名称在构建任务期间似乎不可用,但仍不确定它们在何处或如何被注入。进一步的研究代码完成后,在构建脚本中查看https://github.com/JFrogDev/build-info,https://github.com/JFrogDev/jenkins-artifactory-plugin和printlns。现在,手动设置'〜jenkins/.gradle/gradle.properties'的解决方法可以正常工作。 – derekv
对我最后一条评论的修正,buildInfo会做_read in_属性。实际上,你可以简单地在build.info中为'publish'和'resolve'指定'username'和'password',并且像你提到的那样设置'gradle.properties',这是可行的。剩下的唯一东西就是buildscript部分的插件repo,并且在当前的实现中似乎有一个catch22,这些属性由buildInfo插件设置,但是需要属性才能加载buildinfo插件。 – derekv