我想创建从git参数标记中提取的单个字符串参数值

uxhixvfz  于 2022-10-06  发布在  Git
关注(0)|答案(1)|浏览(214)

我有标记版本,但我想选择最新的标记,然后让人们有那个选择,因为我希望他们在运行管道时使用最新的标记版本。从那时起,我尝试了两种方法。
首先:尝试定义另一个参数,该参数将接受git参数,并最终将其转换为字符串并使用该值。问题是失败的原因如下:

def version = params.TAG.toString()

parameters {
        gitParameter(name: 'TAG', tagFilter: '2.1*', type: 'PT_TAG', sortMode: 'DESCENDING_SMART', description: '[Mandatory] Which version will be deployed.')
        string(name: 'VERSION', defaultValue: version, description: '[Mandatory] Which version will be deployed.')
...
org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: Scripts not permitted to use staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods getAt java.lang.Object java.lang.String
14:48:01    at org.jenkinsci.plugins.scriptsecurity.sandbox.whitelists.StaticWhitelist.rejectStaticMethod(StaticWhitelist.java:243)
14:48:01    at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onGetArray(SandboxInterceptor.java:418)

第二种方法我不确定怎么可能设置git参数,以某种方式过滤标签,并在有人知道如何设置的情况下只显示最新的标签?

第一种方法的问题是,我想隐藏git参数,如果我有第二个参数,我不想让参数携带相同的值或其他什么?

iovurdzv

iovurdzv1#

我在ActiveChoices参数(示例)中使用了类似以下内容:

list="git ls-remote --tags https://github.com/SAP/jenkins-library"
    .execute()
    .text
    .split()
    .toList()
    .findAll{
      it.startsWith("refs/tags/")
    }
    .findAll{
      it.contains("v")
    }
.collect{
  it.replace("refs/tags/", "")
  .replace("^{}","")
}

def mostRecentVersion(versions){
    return versions.collectEntries{ 
        [(it=~/d+|D+/).findAll().collect{it.padLeft(3,'0')}.join(),it]
    }.sort().values()[-1]
}

return [mostRecentVersion(list)]

这将返回基于答案here的最新版本,作为直接从git存储库中读取的单一选项。

相关问题