> 文档中心 > 【Azure - App Service】如何使用Local Git(本地库)简易的部署代码到微软Azure云的App Services上

【Azure - App Service】如何使用Local Git(本地库)简易的部署代码到微软Azure云的App Services上


前言

微软的Azure提供了多种持续集成和持续部署的方案。之前从客户手里接手了一个半吊子的项目,之前的团队不知道什么原因与客户终止了合作关系。客户的Web App 部署在微软的App Service上的,但是因为之前的项目是前端代码和后端代码放在一个代码库里的。不是很方便使用微软提供的CI/CD工具。所以之前的项目几乎都是手动部署,但是一直这么搞下去也不是办法,我们应该尽量帮客户节省开支以提现我们的重要性啊^_^。

如何理解Local Git(本地库)

在App Service 的Deploy Center中提供了多种部署方式,如下图所示:

而客户的代码是放在GitHub上的,但是给我们的权限有限无法直接在GitHub上配置相关的Action。所以我们推荐给客户使用Local Git的方式来部署以减少不必要的重复劳动。

那么什么是Local Git呢? 其实这个local相对的是Azure App Service 本身来说的。也就是说这个Local相对于App Service 本身来说,并不是我们自己电脑上,这对初学者来说容易混淆。我一开始的时候也被他搞的一脸懵逼。

来看看下面这个图就容易理解了。下面的图显示了各种方式下我们代码的提交路径。

其中第一种就是Local Git方式部署,也就是App Service可以提供一个Git Server端。当我们想进行部署的时候,需要先将我们的代码提交到这个叫“Local Git” Git Server上,然后会触发App Service的build/deploy。

一般情况下,我们提完代码,pia~~ 部署就算完事了,因为Azure会负责后续的打包和部署,甚至是重启服务。但是这种方便的背后是要满足一定条件的,也就是要按照Azure的规则来。这就是如一开始所说的,客户之前的团队没有把前后端的工程分开不方便部署的原因。

至于要满足什么样的条件才能使用这种方式部署,可以参考下面的表格或者MSDN文章。

 当然我们也可以使用.deployment文件来定制化部署。这个比较复杂而且要花大量时间去调试,我们暂时没有采用,感兴趣的童鞋可以参考下面的链接:

1. Customizing deployments

2. Custom Deployment Script

好了废话不多说,我们来看看如何使用Local Git这种方式来部署。 由于客户使用的是.net core来开发的应用程序,所以下面的示范都是基于.net core的。

使用Local Git的步骤

1. 连接到Azure的本地库

打开Azure的页面 https://portal.azure.com/ 找到对应的App Service

 单击该App Service, 然后点击左侧导航条上的Deploy Center, Settings Tab上选中Local Git

 然后点击Save,保存设置。

 然后如下图所示,点击下面的Copy按钮把“Git Clone Url"保存起来,以供后面使用。

2. 在工作目录里添加Azure的库

在你的工作电脑上打开cmd/powershell/git bash,然后CD到工作目录。执行下面的代码来把Local Git的服务器地址添加到本地代码库中。点击此处获取更多信息。

git remote add azuredev 

Git Clone Uri: 在上一步中生成的Url

azuredev: 在本地代码库中的名字,比如Dev可以叫azuredev, Prod可以叫azureprod

默认情况下App Service会拉取Local Git中的master分支进行打包和部署。如果想修改这一默认值可以参考下面的链接:
https://docs.microsoft.com/en-us/azure/app-service/deploy-local-git?tabs=cli

3. 推送代码

在提交代码到Azure之前先要在自己开发机本地提交。然后执行下面的命令推送代码到Azure上(如果你恰好是工作在master分支上的话)。

git push azuredev master# azuredev 是在第2步中设置的# 如果正好在master分支上开发,使用上面的命令就可以了# 如果在其它分支上开发,比如dev 那么可以使用下面的命令来推送到azure上# git push azuredev dev:master# 可以使用 --force 参数来强制覆盖Azure上的代码# git push azuredev master --force# 或者# git push azuredev dev:master --force

如果是第一次推送,会弹出让你输入用户名密码的窗口。我们可以使用App Scope和User Scope的用户名密码。

我们可以去如下的位置获取对于的用户名密码:

 Application Scope的用户密码是系统生成的无法手动修改,但是可以点击Reset来重置。

User Scope的用户名密码可以用户自己设置,如果不希望你的密码在使用过程中被人修改,可以使用User Scope的用户名密码。

然后我们就可以从CMD窗口里看到服务端的build&deploy过程:

总结

本文简单的总结了Azure App Service 上的各种部署方式,以及如何使用Local Git方式推送代码的三个步骤。