[小菜一碟] 簡單直接的 Azure App Service 部署方式 - ZipDeploy API

要部署應用程式到 Azure App Service 的方式有好幾種,其中我認為最簡單直接的就是把應用程式打包成 Zip 檔案後上傳,讓 Kudu 服務來幫忙處理我們上傳的 Zip 檔案,而且自從 curl 在 Windows 10 version 1803 內建之後,就讓這件事變得更容易了。

發佈到資料夾

無論我們的網頁應用程式是傳統的 ASP.NET,還是後來的 ASP.NET Core,我們都直接將應用程式「發佈到資料夾」。

打包發佈的資料夾成 Zip 檔案

接著,我們使用 PowerShellCompress-Archive 命令來把發佈資料夾中的內容,全部打包成 Zip 檔案。

Compress-Archive -Force -Path D:\Lab\MyNet8MvcWeb\MyNet8MvcWeb\bin\Release\net8.0\publish\* -DestinationPath publish.zip

如果路徑有空格則使用「單引號(')」括起來

Compress-Archive -Force -Path 'D:\My Lab\MyNet8MvcWeb\MyNet8MvcWeb\bin\Release\net8.0\publish\*' -DestinationPath publish.zip

上傳 Zip 檔案到 ZipDeploy API

每個 App Service 都有一個進階工具的網址,即 https://{Web 應用程式名稱}.scm.azurewebsites.net/,而 ZipDeploy API 就是在進階工具的網址後面加上 /api/zipdeploy

再來,我們要取得上傳 Zip 檔案用的使用者帳號及密碼,它在 App Service 的「部署中心」->「FTPS認證」頁面裡面,其中的「FTPS 使用者名稱」及「密碼」就是了,而 FTPS 使用者名稱我們只需要後半部。

最後,使用 curl 命令發送 POST 要求將 Zip 檔案上傳到 ZipDeploy API。

curl -X POST -u '$mytest290611d5:{密碼}' -T 'publish.zip' -f https://mytest290611d5.scm.azurewebsites.net/api/zipdeploy

上傳 Zip URL 到 ZipDeploy API

如果我們的 Zip 檔案是放在網際網路上的 URL,我們可以改發送 PUT 要求將 Zip URL 更新到 ZipDeploy API。

curl -X PUT -u '$mytest290611d5:{密碼}' https://mytest290611d5.scm.azurewebsites.net/api/zipdeploy -H "Content-Type: application/json" -d "{'packageUri':'https://xxx.yyy.zzz/publish.zip'}"

最終,這些部署記錄,都可以在 App Service 的「部署中心」->「記錄」頁面查得到。

部署的方式百百種,簡單且直接的部署方式,經常會是開發者的首選。尤其是當只是要簡單驗證一下部署結果的時候,透過這種部署方式,我們可以輕鬆地將應用程式快速上線,無需複雜的設定或繁瑣的步驟,讓我們能節省一些時間。

參考資料

相關資源

C# 指南
ASP.NET 教學
ASP.NET MVC 指引
Azure SQL Database 教學
SQL Server 教學
Xamarin.Forms 教學