Декларативный конвейер Jenkins: Как использовать аргументы, переданные в функцию в команде Windows bat? - PullRequest
0 голосов
/ 11 января 2019

У меня есть конвейер, в котором я определяю функцию, которая принимает строковые аргументы, а затем пытаюсь использовать эту функцию / параметры в шаге, который содержит команду bat. Я не могу понять, как получить эти строковые параметры в команде bat.

Вот функция-

// publish step
def publish(String projectName, String publishProfile) {
    echo "${projectName}"
    echo "${publishProfile}"
    bat ''' sqlpackage.exe /Action:Publish /SourceFile:%WORKSPACE%\\%projectName%\\bin\\Debug\\%projectName%.dacpac /Profile:%WORKSPACE%\\%projectName%\\Publish\\%publishProfile% '''
}

В выводе консоли я вижу правильные данные projectName и publishProfile, которые были переданы при выводе. % WORKSPACE% правильно выставлен в команде bat. Однако% projectName% и% publishProfile% просто пустые. Я пробовал много комбинаций двойных кавычек, одинарных кавычек и т. Д. Как мне их показать в команде bat?

1 Ответ

0 голосов
/ 11 января 2019

Наконец-то решил это. Использование «» (двойные кавычки) вместо «» для команды bat позволяет выставлять аргументы. Затем я использовал set в команде bat, чтобы установить их как переменные, чтобы они хорошо играли с файловыми путями / расширениями файлов.

def publish(String projectName, String publishProfile) {
    bat """ set PROJNAME=$projectName
    set PUBPROF=$publishProfile
    \"C:\\Program Files (x86)\\Microsoft SQL Server\\140\\DAC\\bin\\sqlpackage.exe\" /Action:Publish /SourceFile:%WORKSPACE%\\%PROJNAME%\\bin\\Debug\\%PROJNAME%.dacpac /Profile:%WORKSPACE%\\%PROJNAME%\\Publish\\%PUBPROF% """
}
...