使用 DSL 脚本从 Jenkins 中提取人工信息
Pulling Artifactory Information From Jenkins Using DSL Script
前言:
我在 Jenkins\Artifactory\DSL space 中还很新手,所以我可能听起来像是在笨手笨脚。
我正在开发 Jenkins DSL 脚本来提取信息 on\about 我们的 Artifactory 设置。
我没有 Jenkins 或 Artifactory 的管理员权限,只有正常的登录凭据和 运行 东西。
Jenkins 服务器有 Artifactory 凭据并安装了插件。
所以我的问题是...
我正在使用这段代码;
// Get Default Artifactory Info
import jenkins.model.*
def instance = Jenkins.get()
def defaultServer = Jenkins.instance.getDescriptor('org.jfrog.hudson.ArtifactoryBuilder').getArtifactoryServers()[0]
def defaultArtifactoryName = defaultServer.getName()
def defaultArtifactoryUrl = defaultServer.getUrl()
def defaultArtifactoryCredId = defaultServer.getDeployerCredentialsConfig().getCredentialsId()
提取关于我们的 Artifactory 服务器的信息,然后作为变量传递。
它以前工作正常,但在(由我们的管理员)更新后,它不再工作了。
它在 Jenkins 控制台中抛出的错误是...
No signature of method: org.jfrog.hudson.ArtifactoryBuilder$DescriptorImpl.getArtifactoryServers() is applicable for argument types: () values: []
我尝试搜索 getArtifactoryServers 方法但似乎找不到任何东西时,有人能给我指出任何文档的方向吗?
版本:
- 詹金斯 2.289.1
- Artifactory 插件 3.11.4
- 工作 DSL 1.77
提前致谢!
看起来你是 运行 内部 Jenkins Artifactory 插件代码。
getArtifactoryServers
最近更改为 getJfrogInstances
。
我不确定您要做什么,但要获得与以前相同的结果,您应该按以下方式修改脚本:
import jenkins.model.*
def instance = Jenkins.get()
def defaultServer = Jenkins.instance.getDescriptor('org.jfrog.hudson.ArtifactoryBuilder').getJfrogInstances()[0]
def jfrogInstanceId = defaultServer.getId()
def defaultArtifactoryUrl = defaultServer.getArtifactoryUrl()
def defaultArtifactoryCredId = defaultServer.getDeployerCredentialsConfig().getCredentialsId()
谢谢,成功了!
我认为它发生了变化,我只是找不到任何说它发生过或指出它发生变化的内容。
你会不会碰巧有一个 link 到我可以阅读 getJfrogInstances 的所有 methods\descriptors 的地方?
我在看这里:
https://javadoc.jenkins-ci.org/hudson/model/Descriptor.html
但是他们没有列出 getArtifactoryUrl(),所以我猜我找错地方了。
再次感谢!
作为@yahavi ,你不应该使用插件的代码,除非你同意你的 code/pipeline 在插件更新时中断。
您可以使用 DSL 步骤 getArtifactoryServer
来获取您想要的信息。
在脚本管道中:
script {
def artifactoryServer = getArtifactoryServer 'jfrog_instance_id'
// To see all properties (Please note that this might expose the credentials!)
artifactoryServer.properties.each { println "$it.key -> $it.value" }
// To get URL
echo artifactoryServer.url
// To get credentialsId
echo artifactoryServer.credentialsId
// etc...
}
在声明性管道中:在声明性管道中,如果没有 script
块,您将无法分配变量,但您可以在声明性管道中将属性作为字符串获取。例如,您可以使用 ${getArtifactoryServer('jfrog_instance_id').url}
获取 Artifactory URL
PS:jfrog_instance_id
是您的管理员在 Jenkins 中提供的实例 ID。你应该可以向他们索取身份证件。 Refer Configuring Jenkins Artifactory Plug-in
前言: 我在 Jenkins\Artifactory\DSL space 中还很新手,所以我可能听起来像是在笨手笨脚。
我正在开发 Jenkins DSL 脚本来提取信息 on\about 我们的 Artifactory 设置。
我没有 Jenkins 或 Artifactory 的管理员权限,只有正常的登录凭据和 运行 东西。
Jenkins 服务器有 Artifactory 凭据并安装了插件。
所以我的问题是...
我正在使用这段代码;
// Get Default Artifactory Info
import jenkins.model.*
def instance = Jenkins.get()
def defaultServer = Jenkins.instance.getDescriptor('org.jfrog.hudson.ArtifactoryBuilder').getArtifactoryServers()[0]
def defaultArtifactoryName = defaultServer.getName()
def defaultArtifactoryUrl = defaultServer.getUrl()
def defaultArtifactoryCredId = defaultServer.getDeployerCredentialsConfig().getCredentialsId()
提取关于我们的 Artifactory 服务器的信息,然后作为变量传递。
它以前工作正常,但在(由我们的管理员)更新后,它不再工作了。
它在 Jenkins 控制台中抛出的错误是...
No signature of method: org.jfrog.hudson.ArtifactoryBuilder$DescriptorImpl.getArtifactoryServers() is applicable for argument types: () values: []
我尝试搜索 getArtifactoryServers 方法但似乎找不到任何东西时,有人能给我指出任何文档的方向吗?
版本:
- 詹金斯 2.289.1
- Artifactory 插件 3.11.4
- 工作 DSL 1.77
提前致谢!
看起来你是 运行 内部 Jenkins Artifactory 插件代码。
getArtifactoryServers
最近更改为 getJfrogInstances
。
我不确定您要做什么,但要获得与以前相同的结果,您应该按以下方式修改脚本:
import jenkins.model.*
def instance = Jenkins.get()
def defaultServer = Jenkins.instance.getDescriptor('org.jfrog.hudson.ArtifactoryBuilder').getJfrogInstances()[0]
def jfrogInstanceId = defaultServer.getId()
def defaultArtifactoryUrl = defaultServer.getArtifactoryUrl()
def defaultArtifactoryCredId = defaultServer.getDeployerCredentialsConfig().getCredentialsId()
谢谢,成功了!
我认为它发生了变化,我只是找不到任何说它发生过或指出它发生变化的内容。
你会不会碰巧有一个 link 到我可以阅读 getJfrogInstances 的所有 methods\descriptors 的地方?
我在看这里: https://javadoc.jenkins-ci.org/hudson/model/Descriptor.html
但是他们没有列出 getArtifactoryUrl(),所以我猜我找错地方了。
再次感谢!
作为@yahavi
您可以使用 DSL 步骤 getArtifactoryServer
来获取您想要的信息。
在脚本管道中:
script {
def artifactoryServer = getArtifactoryServer 'jfrog_instance_id'
// To see all properties (Please note that this might expose the credentials!)
artifactoryServer.properties.each { println "$it.key -> $it.value" }
// To get URL
echo artifactoryServer.url
// To get credentialsId
echo artifactoryServer.credentialsId
// etc...
}
在声明性管道中:在声明性管道中,如果没有 script
块,您将无法分配变量,但您可以在声明性管道中将属性作为字符串获取。例如,您可以使用 ${getArtifactoryServer('jfrog_instance_id').url}
PS:jfrog_instance_id
是您的管理员在 Jenkins 中提供的实例 ID。你应该可以向他们索取身份证件。 Refer Configuring Jenkins Artifactory Plug-in