iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

2

這篇會介紹如何將寫好的程式部屬到 Azure 雲端上,順便玩玩自動化部屬 Pipelines。

1. 新增 App Service

Azure 網址: https://portal.azure.com/

到 Azure 管理頁面並新增一個 App Service (應用程式服務)。

到首頁後選擇 更多服務

https://ithelp.ithome.com.tw/upload/images/20191122/20106865UoERVeSfvA.jpg

計算分類可以找到 應用程式服務

https://ithelp.ithome.com.tw/upload/images/20191122/20106865iC0KLOVH6h.jpg

配置如下,執行階段堆疊目前已經可以選 .NET Core 3.0,不過我還是介紹之前的做法先選 .NET Core 2.2,最後方案記得選擇 F1 免費,然後一直下一步最後選建立。

https://ithelp.ithome.com.tw/upload/images/20191122/20106865d9hojHNXwR.jpg

2. Azure DevOps 新增原始碼控制

Azure DevOps 網址: https://azure.microsoft.com/zh-tw/services/devops/

到 Azure DevOps 頁面新增專案,配置如下。

https://ithelp.ithome.com.tw/upload/images/20191122/20106865MNX7CQ6boQ.jpg

選擇 Repos 選單,此時瀏覽器上的網址就是 Git 可以推送的路徑。

https://ithelp.ithome.com.tw/upload/images/20191122/20106865lGrACM6d0K.jpg

這裡我使用小烏龜將專案推上去 (不限定使用的 Git 軟體)。

https://ithelp.ithome.com.tw/upload/images/20191122/20106865XI9CnwH3OK.jpg

補充: commit 的時候不要將 appsettings.json 加入版控,因為裡面含有隱密訊息,後面會介紹利用 Pipelines 在發布前將檔案加入。

3. 發行程式

對專案按 右鍵 選擇 發行,然後選擇持續傳遞下面的 設定

https://ithelp.ithome.com.tw/upload/images/20191122/201068650LGLL9MSop.jpg

選擇原始碼控制和剛剛建立的 App Service 配置如下。

https://ithelp.ithome.com.tw/upload/images/20191122/20106865NwaOK5PGB5.jpg

到這裡就完成了程式的自動化部屬,git push 後 Azure DevOps 會自動執行建置、測試並發行程式到 Azure 上。

Releases 完後就可以去看看我們的網站。

https://ithelp.ithome.com.tw/upload/images/20191122/20106865x0SmN1tKCl.jpg

4. 使用 Pipelines 載入 appsettings.json

這個步驟的用途是因為 appsettings.json 包含 line bot 的密鑰和 token,這些隱密資訊不應該進入版控,所以才特別新增一個步驟在部屬期間將檔案加入。

到 Builds 頁面選擇 Edit

https://ithelp.ithome.com.tw/upload/images/20191122/20106865tTeUf6PnSH.jpg

新增工作找到下列三個項目。

  • Delete files (刪除文件)
  • Download secure file (下載安全文件)
  • Copy files (將文件複製到)

https://ithelp.ithome.com.tw/upload/images/20191122/201068655d3RCIiwbj.jpg

調整順序按照 Delete filesDownload secure fileCopy files 排序,並放在
Build 前面。

簡單說明執行邏輯,第一步建置前先刪除原版控內空白的 appsettings.json,接著下載需要部屬到正式端的 appsettings.json,不過因為文件下載後會放在虛擬機的暫存空間,所以最後需要使用 Copy files 將檔案複製到根目錄,配置如下。

  • Source Folder: 文件目錄
  • Contents: 要刪除的文件名稱

https://ithelp.ithome.com.tw/upload/images/20191122/20106865pSRtjGPmiP.jpg

  • Secure File: 上傳安全文件

https://ithelp.ithome.com.tw/upload/images/20191122/20106865SpgkbHauJX.jpg

  • Source Folder: 來源目錄

  • Contents: 要複製的檔案名稱

  • Target Folder: 目的目錄

  • $(Agent.TempDirectory): 暫存安全文件的目錄

  • $(Build.SourcesDirectory): 存放編譯前文件的目錄,iBotTest 是根目錄名稱

https://ithelp.ithome.com.tw/upload/images/20191122/201068655sQ26Rb87d.jpg

設定完後按儲存 Save & queue,接著等待部屬完成就好。

參考文章: https://stackoverflow.com/questions/53228221/azure-devops-using-a-secure-file-to-store-secrets-referenced-by-app-confg


補充: 目前 Pipelines 和 Azure 已經完全支援 .NET Core 3.0,如有使用 Preview 版本才需要做步驟 5 和 6。

5. Pipelines 設定使用 .NET Core 3.0 發行

和上一步驟一樣在 Builds 頁面選擇 Edit,然後新增工作找到 Use .NET Core

https://ithelp.ithome.com.tw/upload/images/20191122/20106865ZrC9UmQUGZ.jpg

將它移動到第一個項目並設定版本,其他預設就好。

https://ithelp.ithome.com.tw/upload/images/20191122/20106865lIrHoIoaVF.jpg

6. Azure 擴充功能新增 ASP.NET Core 3.0 (x86)

在 App Service 管理頁面找到擴充功能選項。

https://ithelp.ithome.com.tw/upload/images/20191122/20106865WkLaCubAWY.jpg

加入 ASP.NET Core 3.0 (x86) Runtime,免費版的 App Service 不支援 x64 程式,所以只能選 x86 的。

https://ithelp.ithome.com.tw/upload/images/20191122/20106865iI3GjVcpTd.jpg

7. 到 LINE Developers 測試 Webhook URL

到這裡已經完成了程式的部屬,接著到 LINE Developers 測試一下程式是否正常運作,網站第一次載入會比較慢可能會超時,這時候再點一次 Verify 就好,如果成功會出現 Success 文字。

https://ithelp.ithome.com.tw/upload/images/20191122/201068653mDXsIOPwl.jpg

可以加機器好友然後測試傳訊息,看看有沒有如期回傳 hellow 給我們。

https://ithelp.ithome.com.tw/upload/images/20191122/20106865SL7UlzFoMZ.jpg

灑花~~~ /images/emoticon/emoticon42.gif


結語

部屬的過程其實遇到蠻多的問題,因為 Line Bot 一定要發行後才能測試,不像一般的網站可以在本機 Debug,所以看 Log 排除錯誤就變成很重要的一件事,下一篇就和大家介紹如何在程式中加入 Log,並分享一些 Azure 上查 Log 的技巧,最後加入資料庫的部分,因為 MsSql 沒有免費版的,所以會用 MySql 替代,今天就到這裡,感謝大家觀看。

最後許個願,希望 it 幫新增圖片批次上傳功能~~~


上一篇
[Day02] 使用 .NET Core 3.0 + LineMessagingApi 串接 Line Bot
下一篇
[Day04] 如何在 Azure App Service 上設定 NLog 存放路徑
系列文
Line Bot 心得分享 LineMessagingApi + LUIS + BotFramework6

尚未有邦友留言

立即登入留言