Переменная Дженкинса в отличном сценарии - PullRequest
0 голосов
/ 22 ноября 2018

Я хотел бы использовать переменную "$ WORSKPACE" в файле groovy, который вызывается скриптом jenkins.Но все решения, найденные на SO, не сработали:

// KO : Wks = build.getEnvironment(listener).get('WORKSPACE')
// KO : Wks = "${WORKSPACE}"
/* KO :
def thr = Thread.currentThread()
def build = thr?.executable
def envVarsMap = build.parent.builds[0].properties.get("WORKSPACE")
*/

// KO : def build = this.getProperty('binding').getVariable('build')
// KO : Wks = "%WORKSPACE%"

Сообщение, которое я получил: Сценарии не могут использовать метод groovy.lang.GroovyObject setProperty java.lang.String java.lang.Object (JenkinsHelper.name).Администраторы могут решить, утвердить или отклонить эту подпись.

Есть ли какие-либо идеи о коде или параметре, позволяющие разрешить работу сценария Jenkins?

Мой пример:

Файл JenkinsHelper.groovy:

    class JenkinsHelper {
     def init(String sln) { 
      Wks = "%WORKSPACE%"
     }
    }
return new JenkinsHelper();

Вызов из сценария Дженкинса:

def helper = load 'C:/.../test.groovy'
helper.init("Mon SLN")

Спасибо:)

Ответы [ 2 ]

0 голосов
/ 24 ноября 2018

Это вызвано тем, что Jenkins In-process Script Approval является защитой от возможного выполнения вредоносных скриптов.

Если вы являетесь администратором, зарегистрируйте коды конвейера в Управление Jenkins > Настройка системы > Глобальные библиотеки конвейеров , чтобы избежать этого сценария.

Ссылки:

  1. https://jenkins.io/doc/book/pipeline/shared-libraries/#global-shared-libraries - Подробно описывается написание библиотеки.
  2. https://jenkins.io/doc/book/managing/script-approval
0 голосов
/ 22 ноября 2018

Вы должны использовать переменную формата среды среды Groovy, а не Windows-стиль:

class JenkinsHelper {
 def init(String sln) { 
  Wks = "${WORSKPACE}"
 }
}
...