1
0
mirror of https://github.com/bitwarden/server.git synced 2025-06-30 15:42:48 -05:00

[DEVOPS-1215] Build migrator CLI project (#2747)

* Add migrator cli

* Ran format

* Acc build workflow

* Change paths in push and pr triggers

* Add build migrator cli to build workflow

* Remove build migrator cli workflow

* Add different levels of logs for verbose

* Rename migratorCLI to MsSqlMigratorUtility

* Add MsSqlMigratorUtility to solution file

* Remove the clean command

* Fix name and path in build workflow

* Add retry logic to DbMigrator instead of invocation

* Add migrator with retry mechanism as a new method

* Log the migration start log to migrate database method

* Fix name in build

* Fix cli leftovers

* Fix exception var name

* String interpolation

* Remove redundant check for number

* Remove CommandDotNet

* dotnet format

* Remove CommandDotNet from packages lock

* Remove all cli

* Trying to remove usings to see if this fixes linter

* Add usings back again - uild is failing

* Remove implicit usings

* Trying to fix linter issues

* Trying to fix linter
This commit is contained in:
Michał Chęciński
2023-03-06 15:39:30 +01:00
committed by GitHub
parent 27adaf59b4
commit 9cbf254fef
7 changed files with 2912 additions and 34 deletions

View File

@ -23,10 +23,40 @@ public class DbMigrator
}.ConnectionString;
}
public bool MigrateMsSqlDatabase(bool enableLogging = true,
public bool MigrateMsSqlDatabaseWithRetries(bool enableLogging = true,
CancellationToken cancellationToken = default(CancellationToken))
{
if (enableLogging && _logger != null)
var attempt = 1;
while (attempt < 10)
{
try
{
var success = MigrateDatabase(enableLogging, cancellationToken);
return success;
}
catch (SqlException ex)
{
if (ex.Message.Contains("Server is in script upgrade mode"))
{
attempt++;
_logger.LogInformation("Database is in script upgrade mode. " +
$"Trying again (attempt #{attempt})...");
Thread.Sleep(20000);
}
else
{
throw;
}
}
}
return false;
}
public bool MigrateDatabase(bool enableLogging = true,
CancellationToken cancellationToken = default(CancellationToken))
{
if (_logger != null)
{
_logger.LogInformation(Constants.BypassFiltersEventId, "Migrating database.");
}
@ -89,7 +119,7 @@ public class DbMigrator
var upgrader = builder.Build();
var result = upgrader.PerformUpgrade();
if (enableLogging && _logger != null)
if (_logger != null)
{
if (result.Successful)
{