private void HandleException(Exception e) { Status.AppendDetailsLine("Migration failed"); Status.AppendDetailsLine(e.ToString()); Status.Status = DeploymentStepStatus.Fail; Status.CanProceed = false; }
private void CleanDestinationFolder() { Status.AppendDetailsLine("Cleaning " + Parameters.DestinationFolder); var destinationFolder = new DirectoryInfo(Parameters.DestinationFolder); CleanRecursive(destinationFolder); }
private void Migrate() { var databaseType = Parameters.Profile.MigrateDatabaseSettings.DatabaseType; var connectionString = Parameters.Profile.MigrateDatabaseSettings.ConnectionString; var migrationFile = GetMigrationFile(); if (migrationFile == null) { Status.AppendDetailsLine("Could not find migration file " + Parameters.Profile.MigrateDatabaseSettings.MigrationAssemblyName); Status.Status = DeploymentStepStatus.Fail; Status.CanProceed = false; return; } var migrationAssembly = Assembly.LoadFrom(migrationFile.FullName); var migratorLogger = new Migrator.Framework.Loggers.Logger(true, new MigratorToDeployStatusAdapter(Status)); var migrator = new Migrator.Migrator(databaseType, connectionString, migrationAssembly, true, migratorLogger); migrator.MigrateToLastVersion(); AppendMigrationInfo(migrator.AppliedMigrations); Status.Status = DeploymentStepStatus.Ok; }
private void CreateBackupFolderIfNotExists() { if (!Directory.Exists(Parameters.BackupFolder)) { Directory.CreateDirectory(Parameters.BackupFolder); Status.AppendDetailsLine("Creating backup folder: " + Parameters.BackupFolder); } }
private DirectoryInfo CreateTempDirectory() { var tempDirectory = _fileSystemManager.CreateTempDirectory(); Parameters.TempDirectoryPath = tempDirectory.FullName; Status.AppendDetailsLine("Created temp directory " + tempDirectory.FullName); return(tempDirectory); }
private void Backup() { var backupFilePath = GenerateBackupFilePath(); Status.AppendDetailsLine("Backup file: " + backupFilePath); using (var zipOutputStream = new ZipOutputStream(File.Create(backupFilePath))) { ZipFolder(Parameters.DestinationFolder, zipOutputStream); } }
private void CreateDirectoryFor(FileSystemInfo tempDirectory, ZipEntry entry) { var directoryPath = Path.Combine(tempDirectory.FullName, Path.GetDirectoryName(entry.Name)); if (!Directory.Exists(directoryPath)) { Status.AppendDetailsLine("Creating directory " + directoryPath); Directory.CreateDirectory(directoryPath); } }
protected override DeploymentStepStatus DoExecute() { if (Parameters.Profile.WebConfigSettings.Skip) { SetStatusSkipped(); return(Status); } File.Copy(Parameters.NewWebConfigPath, _webConfigPath, true); Status.AppendDetailsLine("Copying " + Parameters.NewWebConfigPath + " to " + _webConfigPath); Status.Status = DeploymentStepStatus.Ok; return(Status); }
private void AppendMigrationInfo(ICollection <long> appliedMigrations) { Status.AppendDetailsLine("Migration successful. "); if (appliedMigrations == null || appliedMigrations.Count < 1) { Status.AppendDetailsLine("No migrations to run."); return; } var lastAppliedMigration = appliedMigrations.Last(); Status.AppendDetailsLine("Last applied migration version: " + lastAppliedMigration); }
private void TryMigrate() { Status.AppendDetailsLine("Migrating database"); try { Migrate(); } catch (Exception e) { HandleException(e); } }
protected override DeploymentStepStatus DoExecute() { if (_fileSystemManager.DirectoryExists(Parameters.TempDirectoryPath)) { var tempDirectory = new DirectoryInfo(Parameters.TempDirectoryPath); Status.AppendDetailsLine("Removing tempdir " + tempDirectory.FullName); _fileSystemManager.DeleteDirectory(tempDirectory); } else { Status.AppendDetailsLine(Parameters.TempDirectoryPath + " does not exitst. Nothing to remove."); } return(Status); }
private void SetNormalAttributes(DirectoryInfo directory) { Status.AppendDetailsLine("Applying normal attributes to directory " + directory.FullName); directory.Attributes = FileAttributes.Normal; foreach (var file in directory.GetFiles()) { Status.AppendDetailsLine("Applying normal attributes to file " + file.FullName); File.SetAttributes(file.FullName, FileAttributes.Normal); } foreach (var subDir in directory.GetDirectories()) { SetNormalAttributes(subDir); } }
private void WriteAllEntriesTo(DirectoryInfo tempDirectory) { Status.AppendDetailsLine("Extracting " + Parameters.PackagePath + " to tempdir " + tempDirectory.FullName); using (var fileStream = new FileStream(Parameters.PackagePath, FileMode.Open, FileAccess.Read)) { using (var zipInStream = new ZipInputStream(fileStream)) { ZipEntry entry; while ((entry = zipInStream.GetNextEntry()) != null) { WriteEntry(zipInStream, entry, tempDirectory); } } } }
protected override DeploymentStepStatus DoExecute() { if (Parameters.Profile.DestinationSettings.Skip) { SetStatusSkipped(); return(Status); } try { var tempDirectory = CreateTempDirectory(); WriteAllEntriesTo(tempDirectory); Status.Status = DeploymentStepStatus.Ok; } catch (Exception e) { Status.AppendDetailsLine("Extract package failed"); Status.AppendDetailsLine(e.ToString()); Status.Status = DeploymentStepStatus.Fail; Status.CanProceed = false; } return(Status); }
protected override DeploymentStepStatus DoExecute() { if (Parameters.Profile.DestinationSettings.Skip) { SetStatusSkipped(); return(Status); } var tempDirectory = new DirectoryInfo(Parameters.TempDirectoryPath); var rootDirectory = GetWebRootDirectory(tempDirectory); if (rootDirectory == null) { Status.AppendDetailsLine("Could not find web root directory in " + tempDirectory.FullName); Status.Status = DeploymentStepStatus.Fail; return(Status); } Status.AppendDetailsLine("Copying contents of " + rootDirectory.FullName + " to " + Parameters.DestinationFolder); _fileSystemManager.CopyContentsOf(rootDirectory).To(Parameters.DestinationFolder); Status.Status = DeploymentStepStatus.Ok; return(Status); }