asp.net-core - 使用新的 VSO 构建代理为 vNext 应用程序设置 CD

标签 asp.net-core azure-devops azure-pipelines

我正在尝试使用新的 Visual Studio Online 构建代理为我的 vNext 应用设置持续部署。

请注意:我已将 /wwwroot 文件夹从源代码管理中排除。 “默认”Grunt 处理所有 CSS + JS 连接 + 缩小并将其放入文件夹中。我已经为此任务设置了预构建绑定(bind),因此您只需右键单击即可发布应用程序。这工作得很好,因为发布将进行构建 - 这会触发 Grunt 任务来准备分发。

但是 - VSO 构建代理似乎不会触发 Grunt 任务。因此,构建服务器没有任何 /wwwroot 内容,因此部署不起作用。

我该如何解决这个问题?或者 - 我应该在源代码管理中包含 /wwwroot 文件夹吗?

最佳答案

经过一整天的思考,我找到了解决方案。然而,我担心这只是一个临时解决方案。一旦新的 VSO 构建任务发布,这将变得容易得多。

这就是我所做的:

  1. 我首先安装了最新版本的 Node到构建服务器上,这似乎加快了速度并消除了一些奇怪的警告。另外 - 我更新到了最新版本的构建代理( see bottom of this page how )。检查 Node 是否在路径中并全局安装 Bower 和 grunt( npm install -g Bowernpm install -g grunt-cli )

  2. 然后,我在 Visual Studio 在线中从头开始使用新的构建模板,正确设置 Git 绑定(bind)并添加第一步:NPM 安装(添加步骤 - 选择“NPM 安装”)。将工作目录设置为 .xproj

  3. 的文件夹
  4. 下一步:添加“Grunt 构建”步骤。将其指向您的 Gruntfile.js + 将工作目录设置为同一目录。我正在运行 grunt 任务 build 因为它带有 yeoman 模板。我进行了修改,使其将所有内容输出到 /wwwroot 文件夹中。

  5. 添加用于构建项目位的“Visual Studio 构建”步骤。添加参数 /p:DeployOnBuild=true/p:WebPublishMethod=Package/p:PackageAsSingleFile=true/p:SkipInvalidConfigurations=true/p:PackageLocation=\"$(build.stagingDirectory)\"

所以,这几乎都是“开箱即用”的。接下来的步骤(打包应用程序+部署它)不是。我怀疑将来我们会有很好的 VSO 构建任务,让这一切变得容易。我不得不摆弄命令行。 然而,事实证明我很容易。如果您从 Visual Studio 设置发布 - 您可以在输出窗口中看到它运行的命令。您希望通过 2 个命令步骤重新创建这些命令。

  • 为命令 C:\Users\Administrator\.dnx\runtimes\dnx-clr-win-x86.1.0.0-beta6\bin\dnu.cmd 添加命令行步骤。是的 - 它现在与 DNX 运行时耦合 - 所以这不是最佳选择。但我们需要 DNX 实用程序来打包我们的应用程序 - 因此命令参数: publish --out $(build.stagingDirectory) --configuration Release --wwwroot-out "wwwroot"--runtime dnx-clr-win-x86.1.0.0-beta6 (再次 - 刚刚复制它来自VS的输出窗口)
  • 这将很好地将应用程序打包到 $(build.stagingDirectory) 文件夹中。 接下来 - 将其放在云端。

  • 使用以下命令添加最后一个“命令行”步骤:C:\Program Files (x86)\IIS\Microsoft Web Deploy V3\msdeploy.exe 和参数 -source:IisApp= '$(build.stagingDirectory)\wwwroot' -dest:IisApp='--something--',ComputerName='https://--something--.scm.azurewebsites.net/msdeploy.axd',UserName=' $--something--',Password='--notsaying--',IncludeAcls='False',AuthType='Basic' -verb:sync -enableLink:contentLibExtension -retryAttempts:2
  • 注意:这假设您已设置发布到网站。转到 Azure 门户 - 您的 Azure 网站 - 并设置发布。下载发布配置文件 XML 文件,您将在其中找到这些参数。另外 - 所有参数都写入 Visual Studio 输出窗口中(密码除外)。

    这现在对我有用:使用新的 Visual Studio Online (VSO) 构建代理持续部署 vNext/ASP.NET 5 Web 应用程序。

    Build overview

    关于asp.net-core - 使用新的 VSO 构建代理为 vNext 应用程序设置 CD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31852633/

    相关文章:

    c# - 使用 Asp.Net Core Cookie 身份验证的注销操作

    sql-server - 带有 SQL Always Encrypted 列的 CI

    docker - 开发运营 : How to pull and run docker image from docker hub in a yaml script?

    azure-devops - 如何将双引号字符串列表作为天蓝色管道变量输入传递给 Terraform 任务?

    azure-devops - 如何最好地将 Azure Devops 发布管道与微服务配合使用?

    c# - .net core 为什么我可以单独按键获取 IFormCollection

    asp.net-core - expires_in 或 expires_at 用于 OpenId 连接中的访问 token ?

    git - Azure DevOps Pipeline 仅在特定标签上运行

    sql-server - 无法通过Azure DevOps Pipeline集成测试查询容器化的SQL Server数据库

    c# - Properties.Settings 在 ASP.NET Core 中不可用