Запуск конвейера сборки 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
недостаточно.