Расширение переменной в декларативном конвейере Jenkins для Windows - PullRequest
0 голосов
/ 03 мая 2019

Рассмотрим следующий конвейер:

pipeline {
/* continuous build pipeline for jenkins */
    agent any
    environment {
        /* initialize vairables for this job */
        path_msbuild = 'C:\\Program Files (x86)\\MSBuild\\14.0\\Bin\\msbuild.exe'
        path_workspace_root = 'C:\\Program Files (x86)\\Jenkins\\workspace\\MyApplication'
        path_solutionfile = '%path_workspace_root%\\MyApplication.sln' /* this variable doesn't expand */
        databasename = 'elements'
    }
    stages {
        stage ('solution') {
            steps {
                echo 'building solution'
                bat '"%path_msbuild%" "%path_solutionfile%" /p:Configuration=Release'
            }
        }
    }
}

Это задание сборки завершается неудачно, потому что% path_workspace_root% не раскрывается, и я получаю сообщение об ошибке, что искомый файл не найден.

Я попытался объявить строки в двойных кавычках:

pipeline {
/* continuous build pipeline for jenkins */
    agent any
    environment {
        /* initialize vairables for this job */
        path_msbuild = 'C:\\Program Files (x86)\\MSBuild\\14.0\\Bin\\msbuild.exe'
        path_workspace_root = 'C:\\Program Files (x86)\\Jenkins\\workspace\\MyApplication'
        path_solutionfile = "%path_workspace_root%\\MyApplication.sln" /* this variable still doesn't expand */
        databasename = 'elements'
    }
    stages {
        stage ('solution') {
            steps {
                echo 'building solution'
                bat '"%path_msbuild%" "%path_solutionfile%" /p:Configuration=Release'
            }
        }
    }
}

Я также попытался использовать двойные кавычки и синтаксис с отложенным расширением:

pipeline {
/* continuous build pipeline for jenkins */
    agent any
    environment {
        /* initialize vairables for this job */
        path_msbuild = 'C:\\Program Files (x86)\\MSBuild\\14.0\\Bin\\msbuild.exe'
        path_workspace_root = 'C:\\Program Files (x86)\\Jenkins\\workspace\\MyApplication'
        path_solutionfile = "!path_workspace_root!\\MyApplication.sln" /* this variable still doesn't expand */
        databasename = 'elements'
    }
    stages {
        stage ('solution') {
            steps {
                echo 'building solution'
                bat '"%path_msbuild%" "%path_solutionfile%" /p:Configuration=Release'
            }
        }
    }
}
  1. Какой правильный синтаксисзаставить переменную% path_workspace_root% правильно расширяться?
  2. Я делаю этот "трудный путь" (я новичок в Дженкинс) и есть ли более простой способ выполнить то, что я делаю?Я предполагаю, что по мере увеличения моего конвейера у меня будет ряд переменных среды, которые необходимо установить.

1 Ответ

0 голосов
/ 03 мая 2019

Расширение переменной с использованием синтаксиса %% ТОЛЬКО для использования в команде BAT ''.Мне нужен стандартный синтаксис Дженкинса $ {}:

pipeline {
/* continuous build pipeline for jenkins */
    agent any
    environment {
        /* initialize vairables for this job */
        path_msbuild = 'C:\\Program Files (x86)\\MSBuild\\14.0\\Bin\\msbuild.exe'
        path_workspace_root = 'C:\\Program Files (x86)\\Jenkins\\workspace\\MyApplication'
        path_solutionfile = '${path_workspace_root}\\MyApplication.sln' /* this variable doesn't expand */
        databasename = 'elements'
    }
    stages {
        stage ('solution') {
            steps {
                echo 'building solution'
                bat '"%path_msbuild%" "%path_solutionfile%" /p:Configuration=Release'
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...