Как получить доступ к git url в шаге свойств jenkinsfile? - PullRequest
0 голосов
/ 01 июля 2019

Я использую плагин Active Choices. Как получить доступ к URL-адресу git в разделе сценариев раздела свойств файла jenkinsfile?

Например, в следующем разделе с пометкой «script», как быЯ получаю доступ к env.GIT_URL ???

Чтобы было ясно, я могу получить доступ к "$ {env.GIT_URL}" в пределах этапов конвейера просто отлично, но это возвращает нуль в сценарии свойств ...

Также пытался просмотреть jenkinsProject в скрипте, но возвращает: «Нет такого свойства: jenkinsProject для класса: Script1»

Также пробовал scm.getUserRemoteConfigs()[0].getUrl(), но возвращает: «Нет такого свойства:scm для класса: Script1 "

Также пробовал build.getBuildVariables().get('GIT_URL'), но возвращает" Нет такого свойства: сборка для класса: Script1 "

Также пробовал System.getenv('GIT_URL'), но возвращает ноль

Также пробовал: def thr = Thread.currentThread() def build = thr?.executable def envVarsMap = build.parent.builds[0].properties.get("envVars"), но возвращает «Нет такого свойства: исполняемый файл для класса: java.lang.Thread»

Также пробовал: def build = this.getProperty('binding').getVariable('build') def listener = this.getProperty('binding').getVariable('listener') def env = build.getEnvironment(listener) , но возвращает «Нет такого свойства: сборка для класса:groovy.lang.Binding "

node{
  properties([
      parameters([
          [$class: 'ChoiceParameter',
              choiceType: 'PT_SINGLE_SELECT',
              description: 'The names',
              filterable: false,
              name: 'Name',
              randomName: 'choice-parameter-5631314439613978',
              script: [
                  $class: 'GroovyScript',
                  script: [
                      classpath: [],
                      sandbox: false,
                      // note, changes to this script need script approval in Jenkins (see jenkins/scriptApproval)
                      script: """
                                 // how to get env.git_url at this point?
                                 return "anything"
                              """
                  ]
              ]
          ],
      ])
  ])
}
pipeline {
  ...
}

Я использую Jenkins v2.121.2, wплагин Active Choices v2.1

1 Ответ

0 голосов
/ 01 июля 2019

Я думаю, что мне удалось получить ответ ... избежать всего этого, похоже, работает ...

\ "$ {scm.userRemoteConfigs [0] .url} \"

Так что мои свойства в моем Jenkinsfile выглядят следующим образом ... Обратите внимание, это также необходимо поместить в блок узла.

node{
properties([
    parameters([
        [$class: 'ChoiceParameter',
            choiceType: 'PT_SINGLE_SELECT',
            description: 'All tags',
            filterable: false,
            name: 'Tag',
            randomName: 'choice-parameter-5631314439613999',
            script: [
                $class: 'GroovyScript',
                script: [
                    classpath: [],
                    sandbox: false,
                    script: """
                              def sout = new StringBuilder(), serr = new StringBuilder()
                              def proc = String.format(\"git ls-remote --tags %s\", \"${scm.userRemoteConfigs[0].url}\").execute()
                              proc.consumeProcessOutput(sout, serr)
                              proc.waitForOrKill(30000)

                              def tagList = sout.tokenize().findAll { it.endsWith(\"{}\") }
                              return tagList.sort()
                            """
                ]
            ]
        ],
        [$class: 'ChoiceParameter',
            choiceType: 'PT_SINGLE_SELECT',
            description: 'Build Configuration - whether to build the solution/project as either a Debug or Release build.',
            filterable: false,
            name: 'Config',
            randomName: 'choice-parameter-5631314439615999',
            script: [
                $class: 'GroovyScript',
                script: [
                    classpath: [],
                    sandbox: false,
                    // note, changes to this script need script approval in Jenkins (see jenkins/scriptApproval)
                    script: """
                              return ['Debug:selected', 'Release']
                            """
                ]
            ]
        ],
    ])
])
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...