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;
        }
Beispiel #4
0
 private void CreateBackupFolderIfNotExists()
 {
     if (!Directory.Exists(Parameters.BackupFolder))
     {
         Directory.CreateDirectory(Parameters.BackupFolder);
         Status.AppendDetailsLine("Creating backup folder: " + Parameters.BackupFolder);
     }
 }
Beispiel #5
0
        private DirectoryInfo CreateTempDirectory()
        {
            var tempDirectory = _fileSystemManager.CreateTempDirectory();

            Parameters.TempDirectoryPath = tempDirectory.FullName;
            Status.AppendDetailsLine("Created temp directory " + tempDirectory.FullName);
            return(tempDirectory);
        }
Beispiel #6
0
        private void Backup()
        {
            var backupFilePath = GenerateBackupFilePath();

            Status.AppendDetailsLine("Backup file: " + backupFilePath);
            using (var zipOutputStream = new ZipOutputStream(File.Create(backupFilePath)))
            {
                ZipFolder(Parameters.DestinationFolder, zipOutputStream);
            }
        }
Beispiel #7
0
        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);
            }
        }
Beispiel #8
0
 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);
     }
 }
Beispiel #11
0
 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);
 }
Beispiel #12
0
 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);
     }
 }
Beispiel #13
0
 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);
             }
         }
     }
 }
Beispiel #14
0
 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);
 }
Beispiel #15
0
        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);
        }