65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 Azure DevOps 生成和发布管道部署 Angular 应用

starIconstarIconstarIconstarIconemptyStarIcon

4.00/5 (2投票s)

2019 年 2 月 8 日

CPOL

6分钟阅读

viewsIcon

28417

轻松设置 Angular 应用的生成和发布管道配置。

引言

我知道有很多关于同一主题的文章。但是,大多数解决方案在我最新的管道配置中对我不起作用,所以我想写这篇文章。在这里,我们将通过一些基本任务非常轻松地设置我们的 Angular 应用程序的生成和发布管道配置。我们将使用 Azure DevOps FTP 管道服务连接进行配置。让我们停止介绍,开始配置。

背景

我正在尝试将我的 Angular 应用程序部署到 Azure,为此我需要设置我的生成和发布管道。我之前看过一些教程,但我遇到了一些问题。之后,我决定使用 Azure FTP 上传发布任务。所以,基本上,我们的发布管道中只有一个任务。

设置管道

正如我之前提到的,在这里,我们将配置我们的生成和发布配置。

生成管道

在这里,我们将配置 Azure DevOps 生成管道。但是,在此之前,我们需要在 package.json 文件中定义我们的脚本。

"scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e",
    "prod-build-dev": "ng build --prod --build-optimizer",
    "prod-build-staging": "ng build --prod --configuration=staging --build-optimizer"
  }

如果您的路由不同,并且您需要直接在浏览器 URL 中访问它们,您应该考虑在 src 文件夹中添加一个 web.config 文件。

<configuration>
    <system.webServer>
      <rewrite>
        <rules>
          <rule name="Angular" stopProcessing="true">
            <match url=".*" />
            <conditions logicalGrouping="MatchAll">
              <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
              <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
            </conditions>
            <action type="Rewrite" url="/" />
          </rule>
        </rules>
      </rewrite>
    </system.webServer>
</configuration>

完成之后,将其作为资产添加到 angular.json 文件中。

"assets": [ "src/favicon.ico",
"src/assets",
"src/web.config"]

现在,转到您的 Azure DevOps 站点,然后单击 **Pipelines**,然后单击 **Builds**。单击加号图标。

管道

单击 **Pipeline** 部分。在这里,您可以指定您的管道名称和代理池,请记住选择 Hosted VS2017 作为代理池,否则您可能会看到类似“Npm failed with return code: 1 2019–01–07T10:14:37.3309955Z ##[section]Finishing: npm build” 的错误。

选择管道代理

第一阶段

我建议您保持原样,不过您可以更改显示名称。

npm install

在 **Phase** 部分单击 **+** 图标,然后搜索“npm”并单击 **Add**。现在我们可以配置此任务了。

npm install 任务

您也可以单击功能区 View YAML,查看任务的 YML 版本。

npm build

在此步骤中,我们将添加一个新的 npm 任务并为我们的生成脚本进行配置。

npm run build

请注意,该命令是自定义的,我们已经给出了我们在 package.json 文件中已经设置的脚本,即 prod-build-dev

发布生成件

在这里,在此步骤中,我们将发布生成的生成件。这非常重要,否则发布配置将无法在目录中找到您的 package.json 文件。添加一个名为“Publish Build Artifacts”的新任务,并按下面的图片进行配置。

发布生成件

启用持续集成

在我们设置了任务之后,现在是时候设置持续集成。单击 **Triggers** 部分,然后勾选 **Enable continuous integration**。

启用持续集成

调试生成

如果您需要调试生成管道,可以在 **Variable** 部分启用它。只需将 system.debug 的值设置为 true 即可。

调试生成

运行生成

完成所有操作后,您可以单击 **Save & Queue** 按钮来启动生成。我们的代理现在将运行,任务将被执行,由于我们在 Variables 中将 debug 属性设置为 true,我们现在可以在控制台中看到详细的日志。将执行以下任务。

生成管道输出

发布管道

太棒了,我们已经成功创建了我们的生成管道,现在是时候创建发布管道了。正如我之前提到的,我们的发布管道中只有一个任务,那就是“FTP Upload”。单击 **Pipelines**,然后单击 **Releases**,单击 **+New** 图标来创建一个新的发布管道。

选择生成件

在这里,在此步骤中,我们应该选择生成过程中生成的生成件。

选择生成件

选择阶段

单击 Stages 并添加一个。

添加 FTP 服务连接

在添加新的 FTP 上传任务之前,我们需要在 Azure DevOps 站点中创建一个新的 FTP 服务连接。单击左下角的 Project Settings,转到 **Pipelines** 部分,然后单击 **Service connections**。现在单击 **+ New service connection**,在弹出窗口中,您需要提供 Azure Web App 的发布配置文件中的详细信息(在 Azure 门户的 Web App 资源,概览部分中单击 **Get Publish Profile**)。

添加通用服务连接

添加 FTP 上传任务

现在是时候添加 FTP 上传任务了。单击 Agent Job Task 中的 **+** 图标,然后添加 FTP Upload 任务。

FTP 上传任务

在这里,远程目录是我们的应用程序文件将要存放的文件夹。如果您使用应用程序发布配置文件中的 FTP 详细信息登录到资源管理器,您应该能够看到这些文件。

创建发布

现在,是时候创建发布了,单击 **+ Release** 按钮,然后单击 **+ Create a release**。在即将出现的窗口中,您应该能够看到管道和选择的生成件。只需单击 **Create** 按钮。代理将在几秒钟内启动,一旦准备就绪,它将执行任务。请注意,FTP Upload 任务将首先删除目录中的内容,然后上传新的内容。

发布管道任务输出

更改应用服务的虚拟路径

由于我们在发布配置中指定了一个自定义文件夹,我们也应该更改 Azure 应用服务的虚拟路径。为此,请转到您的 Azure App Service,然后在 **Application Settings** 下选择 Virtual Path。将 Virtual Path 设置为“*/*”,将 Virtual Path 设置为“*site\wwwroot\wwwroot\yourappname*(dist 文件夹内的文件夹名称)”,并将类型设置为“Application”。

设置虚拟物理路径

完成后,您应该可以看到您的 Angular 应用程序正在运行。

结论

哇!现在我们已经学习了

  • 如何设置 Azure DevOps 生成管道配置
  • 如何设置 Azure DevOps 发布管道配置
  • 如何在 Azure DevOps 中创建新的 FTP 服务连接
  • 如何配置 Azure Web App
  • 如何将新代码上传到 MXChip 设备
  • 如何执行设备到云消息输出

现在轮到你了。你有什么想法?

非常感谢您的阅读!您认为这篇文章还需要补充什么吗?您觉得这篇文章有用吗?请不要忘记分享您的反馈。

历史

  • 2019 年 2 月 8 日:初始版本
© . All rights reserved.