如何將Azure DevOps中的代碼發布到Azure App Service中


標題:如何將Azure DevOps中的代碼發布到Azure App Service中
作者:Lamond Lu

背景

最近做了幾個項目一直在用Azure DevOps和Azure App Service, 每次都要從零開始搭建從Azure DevOps向Azure App Service發布代碼的環境,由於步驟比較繁瑣,每次都會忘記其中幾個步驟,所以在此總結一下,已備后續再次使用。

Azure DevOps和Azure App Service

Azure DevOps

Azure DevOps其實就是以前的Visutal Studio Team Services Online, 提供了項目管理和源代碼管理的功能。你可以將項目源代碼代碼托管到Azure DevOps,並使用它的Build Pipeline將代碼發布指定的服務器或者App Service中。

Azure App Service

App Service使用Azure中的一種重要服務,用戶使用它可以快速構建、部署和縮放在任何平台上運行的企業級Web應用、移動應用和API應用。當你需要部署項目的時候,你不需要搭建任何環境,只需要將代碼發布到App Service即可, Azure會為你准備好程序運行的環境。

另外App Service提供了許多運維的功能,比如備份,縮放,日志,你只需要進行簡單配置就可實現許多復雜的功能。

如何將Azure DevOps中的代碼發布到Azure App Service中?

為了演示如何將Azure DevOps中的代碼發布到Azure App Service中,我們首先在Azure DevOps中創建一個新的代碼庫,代碼庫中只有一個index.html文件,代碼如下

<html>
	<head></head>
	<body>Hello World!</body>
</html	

第一步:添加一個Azure App Service

為了部署我們的項目,我們首先需要在Azure Portal中創建一個App Service.

這里我們將當前Web應用起名為LamondTest, 后續我們就可以使用http://LamondTest.azurewebsites.net的域名來訪問我們的應用。

第二步: 在Azure AD中添加一個App Registration

為了將Azure Devops中的代碼發布到Azure App Service中,我們需要在Azure AD中注冊一個App。

我們可以從左側菜單中選擇Azure AD, 然后選擇App Registration, 你就能看到如下頁面

點擊+New application registration

這里我給這個Application命名為DeploymentApp, 然后Application type選擇Web app / API。

因為我們這個Application只是來輔助發布項目的,所以Sign-on URL對我們不是很重要,所以我就隨便用了度娘的URL.

創建成功之后,你會看到一下界面

這里比較重要的是Application ID, 你需要將它記下來,以便后續操作使用

第二步:創建訪問應用使用的Key

如果你完成上一步操作之后,不要關閉面板,繼續點擊面板中的Settings按鈕。

選擇API ACCESS -> Keys

添加一個TestKey, 並設置永不過期,Value值可以任何設置一個,保存之后這個Value值保存成一串密鑰,這里這串密鑰需要保存一下,以備后續使用。

第三歩: 為DeploymentApp分配Contributor角色

為了借助DeploymentApp發布代碼,我們需要將LamondTest這個App Service的Contributor角色分配給DeploymentApp.

這里我們可以通過LamondTest -> Access Control(IAM) -> Add role assignment添加角色,並保存

第四步:獲取TenantId和SubscriptionId

除了前面的Application ID和密鑰,我們還需要找到當前Azure的Tenant Id和Subscription Id

Tenant Id

我們可以從 Azure Active Directory -> Properties 中查找到Directory ID, 這里Directory ID即我們所需的Tenant Id

Subscription Id

Subscription Id,即訂閱Id, 我們可以在Subscription模塊中找到它

第五步:創建Azure Resource Manager

前面四步都是在Azure Portal中的操作,后面的所有操作都是在Azure DevOps中來操作

首先我們需要來添加Azure Resource Manager, 我們可以通過Project Settings -> Service connections -> +New service connections -> Azure Resource Manager來打開添加界面

點擊use the full version of the service connection dialog

這里Subscription ID和Tenant ID就是第四步中獲取到的2個ID,Service principal client ID和Service principal key分別就是第二步中的Application ID和密鑰。

注意:這里Subscription name必須輸入正確,通常來說都是Pay-As-You-Go, 如果不同,你可以根據你自己的Azure Subscription name來替換。

這里我將這個連接命名為LamondTestConnection。

點擊OK之前我們可以通過Verify connection來嘗試連接,連接成功會返回一個Verified狀態圖標

第六步:創建Build Pipeline

當前面操作都完成之后,我們就可以開始創建Build Pipleline了

我們可以通過Pipelines -> Builds -> New Pipeline打開添加Build Pipleline界面。

這里我們需要選擇代碼來源Azure Repos Git, 然后選擇我們之前創建的源代碼倉儲HelloWorld, 點擊Continue

然后選擇Empty Job

在Pipeline管理頁面中,點擊加號,選擇Azure App Service Deploy

選擇Azure App Service Deploy: LamondTest, 設置Azure subscription為LamondTestConnection, 並選擇App Service name為LamondTest

最后將Package or folder設置為$(System.DefaultWorkingDirectory)

最后點擊Save & Queue, 我們的代碼就會自動發布到之前定義好的App Service中

最后我們使用瀏覽器訪問https://lamondtest.azurewebsites.net/, 網頁代碼就正確顯示了

附加: 啟用持續集成

Azure DevOps的Build Pipeline還支持持續集成,我們可以設置每天定時發布或者每次check-in都觸發代碼發布,我們可以修改剛才創建的Build Pipeline.

在Triggers頁簽中,我們可以啟用Enable continous integration.

在下面的Branch Filter中,你可以設置監控的代碼分支。

現在我們去修改之前的index.html.

<html>
	<head></head>
	<body>Hello Continuous Integration!</body>
</html

然后簽入代碼。

現在我們返回Azure DevOps的Build Pipleline界面,你會發現代碼開始自動發布了

發布成功之后,我們重新用瀏覽器訪問https://lamondtest.azurewebsites.net/, 新的代碼已經啟用了

這說明我們的代碼持續集成配置成功了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM