Команда «netnet run» ядра .net не нарушает конвейер Azure Buid (bash) при ошибке - PullRequest
0 голосов
/ 11 июля 2019

Запуск конвейера сборки Azure (клиент CentOS 7) с помощью команды

# Run DB migrations dotnet run --project $(Build.Repository.LocalPath)/DBMigrations

это задание отображается как выполненное успешно, хотя было исключение System.Data.SqlClient.SqlException и я использовал

failOnStderr: true в моей конфигурации конвейера.

Код миграции:

sing DbUp;
using System;
using System.Linq;
using System.Reflection;

namespace DBMigrations
{
    class Program
    {
        private const string ConnectionString = "Server=myserver;Database=db;User Id=SA;Password=pass;";

        static int Main(string[] args)
        {
            var connectionString = args.FirstOrDefault() ?? ConnectionString;

            EnsureDatabase.For.SqlDatabase(connectionString);

            var upgrader =
                DeployChanges.To
                    .SqlDatabase(connectionString)
                    .WithScriptsEmbeddedInAssembly(Assembly.GetExecutingAssembly())
                    .LogToConsole()
                    .Build();

            var result = upgrader.PerformUpgrade();

            if (!result.Successful)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine(result.Error);
                Console.ResetColor();                

                return -1;
            }

            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine("Success!");
            Console.ResetColor();
            return 0;
        }
    }
}

Как сделать сбой задания при ошибке при запуске dotnet?

Обновление: Консольное приложение ядра .net должно писать в Console.Error Console.Error.WriteLine(errorMessage); чтобы потерпеть неудачу. return -1 недостаточно.

1 Ответ

0 голосов
/ 12 июля 2019

Проблема была в

if (!result.Successful)
{
    Console.ForegroundColor = ConsoleColor.Red;
    Console.WriteLine(result.Error); // <-- here should be Console.Error.WriteLine(result.Error);
    Console.ResetColor();                

    return -1;
}

return -1; не достаточно, чтобы прервать задание сборки bash Azure с failOnStderr: true

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...