我有一个groovy脚本,我在扩展选择参数插件中用来从artifactory中获取图像名称。它抓取的图像列表取决于参数的名称。
例如,如果我们有两个参数,一个名为test-repo
,另一个名为dev-repo
groovy脚本看起来像这样:
@Grapes(
@Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.7.1')
)
import groovyx.net.http.RESTClient
// the REPO_NAME below is test-repo or dev-repo depending on the parameter name
def query = 'items.find({**<REPO_NAME>**}).limit(1)'
def artifactoryURL = // the URL for artifactory
def restClient = new RESTClient(artifactoryURL)
restClient.setHeaders(['Authorization': 'Basic ' + "jenkins:password".getBytes('iso-8859-1').encodeBase64()])
def response = restClient.post(
path: 'artifactory/api/search/aql',
body: query,
requestContentType: 'text/plain'
)
response.getData().results.name
问题是我需要引用很多不同的存储库以及我最终可能使用的不同工件URL。
所以我试图找到一种方法,我可以引用参数名称,以便能够在参数值中使用它。
像这样的东西
def query = 'items.find({ params.key }).limit(1)'
其中params.key
是此扩展选择参数部分中参数的名称。
我尝试过使用不同的方法来引用参数名称,但它们似乎无法正常工作。
我觉得我试图通过在开始构建之前使用引用参数名称的参数值来打破第4个墙。
我正在考虑以某种方式试图抓住Jenkins构建的实例并尝试查看参数名称,但任何此类努力都被证明是无用的。我还尝试使用this
或it
希望groovy会抓取参数的当前实例,这样我就可以引用this.name
或it.name
,但它们都不起作用。
编辑(点击1,000个观看标记后):
我从来没有找到解决方案。相反,对于每个扩展选择参数,我都硬编码了我想从中获取图像的存储库名称。