Выходной код sqlcmd Обработка для .... l oop (Jenkinsfile) и обработка аутентификации на основе домена - PullRequest
2 голосов
/ 16 января 2020

У меня есть команда ниже, которая выполняет все сценарии sql в папке. Я использую Jenkins Pipeline для выполнения следующей команды.

Проблема: в текущем сценарии у меня есть 4 сценария

Пример: 01. sql, 02. sql, 03. sql, 04. sql

Если какой-либо сценарий завершается неудачно в первых трех и последний успешно выполняется, он не вызывает предупреждения о сбое в Jenkins, так как последний код выхода - Успех.

Есть ли другой способ справиться с этим? Ниже приведен раздел "Конвейер".

// Execute SQL Scripts
        stage('Execution Scripts Section') {
            steps {
                script
                    {
                    bat """
                    cd src\\sql_scripts"
                    set target_db=${db}
                    for /R %%i in (*) do sqlcmd -S%db% -E -b -i"%%i"
                    """
                    }
            }
        }

Дополнения: SQL Имя пользователя и пароль сервера работают нормально с -E (системный пользователь). Как передать доменного пользователя с паролем в sqlcmd? Я попробовал приведенную ниже команду, она не работает.

sqlcmd -S%db%  -U%user% -P'%pass%' -b -i"01.sql" 

1 Ответ

0 голосов
/ 11 февраля 2020

Обходной путь - разделить вашу многострочную команду bat на серию однострочных команд bat.

bat """"
    cd src\\sql_scripts
"""
bat """"
    set target_db=${db}
"""
bat """"
    for /R %%i in (*) do sqlcmd -S%db% -E -b -i"%%i"
"""

Каждая из этих команд выдаст ошибку, если команда завершится с ненулевым значением код (что не обязательно относится к многострочным командам bat)

...