В первом случае setLatestRevision
- это переменная (замыкание):
setLatestRevision = { String parameters ->
Во втором случае это метод:
setLatestRevision(String parameters) {
Класс ScriptДокументация гласит (в последнем разделе 3.4 Переменные ), что:
, если переменная объявлена как в первом примере [с определением типа], этолокальная переменная.Он будет объявлен в методе run, который сгенерирует компилятор, и не будет виден за пределами основного тела скрипта.В частности, такая переменная не будет видна в других методах скрипта
И еще: если переменная не объявлена, она переходит в привязку скрипта.Привязка видна из методов [...]
Поэтому удаление def
из setLatestRevision
исправляет ошибку:
def executeShInEnvironment = { String shFunction, String parameters ->
sh '. $SCRIPTS_DIR/build_functions.sh; ' + shFunction + " " + parameters
}
setLatestRevision = { String parameters ->
executeShInEnvironment('GET_LAST_REVISION', parameters)
}
def buildApp(svnRootUrl, propertiesDir, propertiesFileName) {
def String fromRevisionPropertiesKey = "LAST_REVISION_FOR_02"
def String toRevisionPropertiesKey = "CURRENT_SVN_REVISION"
def String svnPath = svnRootUrl + "/svn_path"
echo "Find latest SVN revision"
withEnv(['SVN_URL=' + svnPath ]) {
def shFunctionParameters = propertiesFileName + " " + toRevisionPropertiesKey
setLatestRevision(shFunctionParameters)
}
}
def prepareRun(shellSvn, propertiesSvn) {
stage 'Prepare run'
.... do checkouts
}
node
{
def workspace = pwd()
def String shellSvn = "/shell"
def String propertiesSvn = "/property_files"
def String propertiesDir = workspace + propertiesSvn
def String scriptsDir = workspace + shellSvn
def String svnRootUrl = "http://SVN_URL_goes_here"
def String propertiesFileName = "main_delivery.properties"
prepareRun(shellSvn, propertiesSvn)
withCredentials(............... {
withEnv(...........){
buildApp(svnRootUrl, propertiesDir, propertiesFileName)
}
}
}