在Octopus期间运行实体框架迁移将CI部署到Azure

我需要建立一个持续集成流程,以使用Octopus Deploy将我们的应用程序部署为Azure云服务。 该过程包括一个步骤,通过从本地Octopus触手运行migrate.exe ,对我们的Azure SQL数据库执行Entity Framework 6.1迁移。 但是,需要在Octopus机器上打开1433端口才能正常工作,而我们的管理员不会那样做。

在自动化部署过程中,您是否可以采用不同的方式来实施Entity Framework迁移?


我们最终打开了该端口,因为我们找不到任何其他解决方案。 作为参考,这里是我们正在运行的脚本(我们的Deploy.ps1脚本,由NuGet在每个部署中执行)。

# SOURCE: http://danpiessens.com/blog/2014/06/10/deploying-databases-with-octopus-deploy-part-2/

# Get the exe name based on the directory
$contentPath = (Join-Path $OctopusOriginalPackageDirectoryPath "content")
$fullPath = (Join-Path $OctopusOriginalPackageDirectoryPath "contentmigrate.exe")

Write-Host "Content Path:" $contentPath
Write-Host "Migrate Path:" $fullPath

cd $contentPath
write-host "Working Dir: "$(get-location)

# Run the migration utility

& "$fullPath" MyApp.Data.dll /startUpConfigurationFile=MyApp.Web.dll.config /connectionString=$ApplicationConnectionString /connectionProviderName="System.Data.SqlClient" /verbose | Write-Host

我使用以下代码在应用程序启动时运行迁移:

    class ApplicationDataContext : DbContext
    {
        internal static void UpdateDatabase()
        {
            Database.SetInitializer<ApplicationDataContext>(null);

            var settings = new Migrations.Configuration();
            var migrator = new DbMigrator(settings);
            migrator.Update();

        }
}
链接地址: http://www.djcxy.com/p/25341.html

上一篇: Running Entity Framework migrations during Octopus Deploy CI to Azure

下一篇: Grails 3 does not have wrapper?