[GCP][DevOps]透過 Azure Devops 將程式佈署到 GCP 的 VM 上

以往都是用整套的 Azure 開發和相關服務,臨時要換成佈署到 GCP 上的 VM ,因此研究一下如何將程式類似佈署到地端的方式來進行佈署。

暨前一篇有關於 GCP 的 VM 設定之後,接下來就來測試看看怎麼把系統也佈署到 GCP 的環境上,因為我個人對於 Linux 掌握度還不是那麼好,也避免發生相關問題不知道該如何處理,因此在測試過程中就先利用 Windows 的 VM 來進行測試,或許後續可以再轉換到 Linux 上面,畢竟使用 Windows 的 VM 還要增加不少授權費用。

一開始在思考要如何佈署的時候,自己有點搞錯方向了,一直想成要怎麼在 Azure DevOps 上面找到連接 GCP 的設定,就在找來找去之間自己才忽然想到,就把它當成一般地端的 Windows 環境不就可以了嘛 ! 何必自己一直糾結在 GCP 上面呢 ? 只能怪自己太傻了,浪費了不少時間,而既然想通了,那後續處理就相對簡單多了。

首先我先在測試專案的 「Pipelines」 下面,選擇「Deployment Groups」

因為在這個測試專案之前沒有建立過,因此進入後畫面上會有兩個地方可以新增,不論用哪個都是同樣的效果

因此我就在這裡建立一個名為 GCP 的 Depolyment Group

當我們從上述步驟選擇 Create 之後,接下來就可以挑選我們所要佈署的環境,因為我目前是使用 Windows 的環境,因此在畫面上會出現要我們在佈署主機上所要執行的腳本。從語法上看起來,該腳本會從 Azure 上去下載一個 agent 的壓縮檔,會將該壓縮檔案解開放在 azagent\A1 目錄中,並且執行 config.cmd 的批次檔案,進行相關的設定。

因此在這個畫面上,我們要將下方 1 的部份給勾選起來,然後透過 2 的部份的按鈕,將語法複製起來。然後在我們要佈署的主機上,使用 Administrator 的身分去使用 PowerShell,來執行這些相關的設定。

此時因為我們有勾選 1 的選項 , 因此當您複製出 Script 要去佈署的主機執行的同時,則會收到一封通知的 EMail 

因此我們就可以按下那個設定 token 的按鈕,確認沒有問題就可以按下 Save 的按鈕了 

而當我們執行腳本之後 , 它會提示出現一些詢問,基本上使用預設值就可以,因此可以直接按下 enter 採用預設值就讓他執行完畢

當執行完畢之後,我們在專案的 Deployment groups 裡面,就可以按照有一個配置好的 Agent 已經正式上線了。因此我們可以準備將 .net 的程式 Publish 到該主機上。

由於我的測試用 API 是選擇 .net 6 的架構,因此我要先到微軟的網站下載  .net 6 的 runtime ( Download .NET 6.0 (Linux, macOS, and Windows) (microsoft.com) ) , 基本上就只是個下載安裝 , 沒有甚麼多大的困難,因此就可以很快的預備好佈署的環境了

接下來我們就可以使用 Azure DevOps 裡面的 Releases , 在建立的時候 , 我選擇 IIS website 的範本,直接按下旁邊的 Apply 的按鈕

接個就要做設定 , 基本上當我們範本選好之後 , 其實也沒有太多的設定要注意,主要要記得要將我們前面步驟所設定好的 Deployment group 要設定上去,那基本上就可以用了。

而接下來我們就可以實際來測試一下是否能順利發佈,大致會花上一分鐘左右的時間去連線,這個時間會是比較長一點,但後續佈署卻是非常的快速,而佈署好之後我們就可以馬上來進行連線測試,果然沒有讓我們失望,程式已經順利佈署上去。

基本上透過前面的測試,基本上從 Azure DevOps 到 GCP 上的 VM,看起來是沒有問題的。但因為只是個簡單的 API,用到 Windows 的功能也不多,因此要是順利的話,那也許我會繼續試試看佈署到 Linux 上面,或許可以更節省一些成本。