将ASP.NET MVC 6网站部署到Azure的脚本

3
我正在寻找一个脚本(例如PowerShell)来部署ASP.NET 5 / MVC 6应用程序到Azure网站。理想情况下,它应该是一个单一的脚本,可以构建项目并将其部署到Azure。此外,我还想在脚本中运行Entity Framework 7迁移,并进行一些自定义JavaScript缩小/捆绑。
如果你们有任何想法如何实现这个脚本,我会非常感激!谢谢!
2个回答

2
让我们先分开讨论话题。
对于将 Web 应用部署到 Azure,为什么不使用 持续集成?如果您将您的 Web 应用与代码库关联,您可以选择一个分支,每当您推送该分支时,它就会在 Azure 上部署。
您还可以进一步配置部署槽(特别是暂存槽),并配置自动交换以减少冷启动。
对于 JavaScript 最小化,您可以使用 Gulp/Grunt 任务,在您的开发环境中运行(并将最小化输出提交到您的代码库)或者您可以将这些任务作为 "postrestore" 操作定义在您的project.json 文件中。一个简单的:
{
  "scripts": {
    "postrestore": ["npm install", "bower install","gulp default"]
  }
}

会通过拉取您定义的 bower 包并运行默认 gulp 任务来完成任务。
您的默认 gulp 任务可能是这样的:
var gulp = require('gulp');  
var mainBowerFiles = require('main-bower-files');
var bower = require('gulp-bower');  
var uglify = require('gulp-uglify');
var ignore = require('gulp-ignore');
var del = require('del');

var project = require('./project.json');  
var lib = project.webroot + '/dist'; 

gulp.task('clean',function(done){
    del(lib, done);
});

gulp.task('bower:install', ['clean'], function () {  
    return bower();
});

gulp.task('default', ['bower:install'], function () {  
    return gulp.src(mainBowerFiles())
        .pipe(ignore.exclude([ "**/*.css","**/*.less" ]))
      .pipe(uglify())
      .pipe(gulp.dest(lib+'/js'));
});

谢谢。这看起来是一个不错的处理部署的方式!您如何在部署时运行EF7迁移?如果我理解正确,这可以在Startup.cs中完成,但如果我从Azure门户回滚到以前的版本,它是否有效? - Samuli Haverinen
我的持续部署出现错误了。 另外请看这里的问题. - Samuli Haverinen

0

您可以使用PowerShell和Visual Studio Team Services来自动化部署Azure中的Web应用程序。

例如,可以创建一个工作流程,执行一些PowerShell脚本,执行DNU还原、代码迁移,然后在源代码存储库上提交时立即发布Web应用程序。

我认为以下文章会对您有所帮助:https://msdn.microsoft.com/en-us/Library/vs/alm/Build/azure/deploy-aspnet5

希望这能帮到您,

朱利安


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接