2022年5月21日 星期六

Azure DevOps in Action - 部署到僅支援FTP的環境

除了採用Azure WebApp作為網站應用程式的運行環境之外,肯定有更多的開發人員,是採用其他的環境作網站的部署。有可能是主機代管,有可能是其他的雲端服務,也有可是地端環境。

那這些環境該如何進行部署呢? 最簡單的方式是透過FTP。

FTP是絕大部分網站肯定都支援的部署方式,也是傳統手動進行網站部署行為的時候,最常見的選擇。

要在Azure DevOps的pipeline當中進行FTP部署相當容易,你可以透過FTP Upload這個內建的task,即可完成上傳動作:
enter image description here
當你把該task加入job中之後,會看到底下設定:
enter image description here
上圖A的部分,是站台的身分驗證方式,你可以選擇為此站台建立一個connection或是直接輸入身帳號密碼,上圖中,我們選擇直接輸入帳密。

而上圖B、C、D三個欄位則是FTP伺服器的URL以及帳號密碼,這應沒什麽疑義。但需要注意的是上圖E,這個欄位需要輸入的是FTP來源檔案位置,也就是Pipeline當中,先前build好的artifacts所在的位置。這個位置從何而來? 由於目前我們展示的是CI Pipeline,因此該位置你應當參考前面Publish Task的結果:
enter image description here
參考上圖A,Buld好的結果預設的輸出位置使用了系統變數『$(build.artifactstagingdirectory)』,因此,我們在FTP Upload的Task中,Root Folder就是設定為『$(build.artifactstagingdirectory)』:
enter image description here
另外,請特別留意Publish Task中的『Zip published projects』選項,它預設是勾選的,你會發現我們將其取消了。原因是,勾選該項目,會讓publish task將發佈的成品壓縮成.zip檔案,但如此一來我們透過FTP送上站台的時候,反倒不能直接運行了。

因此,原本publish的zip選項必須取消。然後,我們再回頭看FTP Uploader task的Root foder,其設定就是先前Publish task的output位置:
enter image description here
最後,別忘了設定你上傳後這些檔案要放在遠端站台的哪一個路徑(上圖F),這個位置可能因為你選擇(或設定)的Web Server的不同而不同,上圖site/wwwroot是因為我們選用的是azure web app,其預設路徑就是site/wwwroot這個位置。

當你運行該Pipeline,會發現FTP Uploader確實可把檔案上傳到伺服器端:
enter image description here
如此一來,就可以順利地透過FTP在Pipeline中發佈網站囉。

備註:
上面的範例雖然是採用CI Pipeline來進行,但若讀者想要使用CD(Release) Pipeline來進行一樣的動作,當然也是可行的。

YT Video:
https://youtu.be/GgmwpaoJo84

參考資料:
Azure DevOps 顧問實戰
https://www.tenlong.com.tw/products/9786263241251?list_name=b-r7-zh_tw

電子書:
https://www.pubu.com.tw/ebook/288713

沒有留言:

熱門文章