如何使用Azure DevOps将应用程序部署到Azure App Service中?

309 阅读7分钟

Azure是微软创建的一项云计算服务,用于通过微软管理的数据中心构建、测试、部署和管理应用程序和服务。

它提供软件即服务(SaaS)、平台即服务(PaaS)和基础设施即服务(IaaS)。它还支持许多不同的编程语言、工具和框架,包括微软特有的和第三方的软件和系统。

本文演示了如何使用Azure DevOps(VSTS)持续集成/持续交付(CI/CD)管道将一个应用程序部署到Azure App Service。

前提条件

要跟上这篇文章,你需要。

  • Azure门户账户,Azure订阅,以及Azure DevOps(VSTS)账户。
  • Azure资源组。
  • 你还应该在Azure中创建一个Web应用,并记下该应用的服务URL,因为你以后会需要它。

目标

在本文中,你将创建一个样本环境,以便。

  • 根据提交到Azure DevOps仓库的代码,生成一个新的构建。
  • 自动将你的应用程序部署到Azure。

什么是Azure应用服务?

从官方的产品描述来看,Azure应用服务是一个全面管理的平台,用于构建、部署和扩展Web应用。

它是一个PaaS(平台即服务),使我们能够快速部署我们的应用,而不必担心基础设施和性能问题。

我们可以使用自己喜欢的语言开发软件,无论是.NET、.NET Core、Java、Ruby、Node.js、PHP还是Python。

应用程序可以在基于Windows和Linux的环境中轻松地运行和扩展。Azure应用服务不仅为你的应用增加了微软Azure的力量(安全、负载平衡、自动缩放和自动化管理),而且还利用了它的DevOps能力,如持续部署。

什么是Azure DevOps?

Azure DevOps是微软的一个软件即服务(SaaS)平台,为开发和部署软件提供一个端到端的DevOps工具链。它有许多内置的功能,允许团队管理项目和自动化工作流程。

Azure DevOps的一些关键功能包括为CI/CD自动化创建构建和发布管道、项目板、组织和代码库功能。

在我们开始之前,先看一下下图所示的架构图。这张图可能是适合小型项目的任何客户-服务器架构的最简单形式。

请注意,我们是用这个架构来演示用最小的配置来部署任何网络应用。

Intro

第1步 - 在Azure中创建一个资源组

一旦你有一个Azure订阅,你需要创建一个resource group ,以管理资源。最好的做法是为每个环境(DEV、INT、QA、STAG、PERF、PROD)维护一个单独的资源组,并遵循适当的命名惯例。

要创建一个资源组,从左侧窗口选择Resource Group ,点击Add ,然后选择Subscription

命名资源组,并点击Review + Create 。参考下面的图片。

Resource-group

步骤2 - 创建一个应用程序服务

从面板左侧点击All resources ,然后点击Add ,然后选择Web App ,给你的应用服务起一个合适的名字。

接下来,选择Subscription ,并选择现有的resource group 。保持其余选项为默认,然后点击Create

Creating-app-service

一旦应用服务被创建,点击它并导航到Overview 。在那里你可以选择属于该应用服务的所有细节,包括状态、资源组、订阅URL

Overview

第3步 - 创建服务本体

当应用程序需要通过ARM或VSTS在Azure中访问部署或配置资源时,你需要创建一个服务主体。

进入AzureActive Directory -> 应用程序注册 -> 新的应用程序注册,然后命名服务原则,选择应用程序类型,并给它一个你选择的URL

创建应用注册后,从该服务中进入Settings ,并记下该应用的ID。接下来,导航到Keys 部分,生成一个密钥并复制秘密值。(记住要正确存储密钥)。

Service-principal

Settings-keys

第4步 - 在VSTS中创建一个新项目

第一步是在Azure DevOps(VSTS)中创建一个账户,然后按照以下步骤开始应用部署。

我们将使用GitHub上的一个基于Java的开源代码样本,并将其导入Azure DevOps repo中。它是一个简单的多模块Maven项目。这个应用是Conway'sGame of Life 的在线版本。

New-project

要创建一个new project ,点击Create new project ,给你的项目加上一个合适的name ,然后选择create

接下来,导航到Repos 部分,点击Import ,然后选择source type 。在Clone URL 标签中输入你之前保存的URL ,然后选择Import 。源代码将被导入到你的版本库中。

Repo

我们需要在我们的项目中允许service connections 。从我们项目主目录的窗口底部导航到项目设置,然后选择服务连接->新服务连接->Azure资源管理器

从弹出的窗口中点击Use the full version of the service connection dialog ,然后将Application ID 粘贴到Service principal client ID 标签中。

同时,将秘钥值添加到Service principal key 标签中(你在创建应用注册时保存的),然后点击OK

Service-connections

第5步 - 创建一个持续集成(CI)构建

转到Pipelines -> Build -> New Build Pipeline ,然后点击Use the visual designer

你会被提示提供源代码回购的详细信息。因此,选择Azure Repos Git 和你之前创建的Team project 。接下来,点击Repository -> branch name,然后按Continue

CI-build

下一步是选择Maven 模板,键入管道名称,并选择Hosted VS2017 作为Agent池。最后,在Maven POM file 中点击pom.xml

在那里你可以把目标列为Clean Package ,并选择Copy Files 。在contents 部分,输入\*_/_.war ,然后导航到Publish Artifact

将工件名称列为Gameoflife ,并保持所有其余选项为默认值。

Triggers ,选择启用持续集成并提供分支过滤器。

一旦开发者将他们的修改提交到主目录,CI构建将自动触发。请参考下面的图片。

tasks

triggers

geme-of-life

一旦配置完成,点击管道顶部的SaveQueue ,触发CI构建。每次提交到主目录都会触发一个新的构建。

第6步 - 创建持续交付(CD)管道

导航到管道->发布->新发布管道,然后选择Azure App Service部署模板。

列出阶段名称为DEV ,并点击Add 一个工件。选择项目和源(构建管道),然后选择默认版本并按Add

接下来,点击Task (在DEV下面),选择Run on agent ,选择agent pool 作为Hosted VS2017

plus(+) 符号并搜索template 文件。你需要将该文件重命名为ROOT.war ,并从源目录中选择.war 的扩展名。这些步骤在下面的图片中进行了总结。

Artefacts File-rename

Display name box ,添加Azure App Service Deploy 。在Azure subscription 领域,你需要选择一个service principal name ,以授权资源。

然后选择App typeApp Service name 。在Packagefolder selection ,选择.war file 并重命名为ROOT.war 。这是因为对于基于Java的应用程序,我们需要将应用程序部署到一个适当的目录结构中。

Display-name

最后,选择Azure App service 模板并按下Restart 选项。确保你选择的订阅和应用服务名称与你在Azure app service deploy 窗口中使用的相同。

点击Save ,然后点击Release -> Create a release -> select artifact build number -> create

然后构建将触发并部署到应用服务中。现在代码已经成功部署到Azure App Service

Releases

你可以从任何浏览器访问Azure应用服务的URL

要检查你的代码是否部署成功,请使用这个URL

结论

我们已经使用Azure应用服务在Azure上成功部署了我们的应用程序。在Azure DevOps的帮助下,我们还将我们的资源库集成到了网络主机上。

希望这篇文章能给你一些使用Azure的启示,使你的项目部署更快、更简单。