Web 部署自動化 - GitHub Actions,Azure Web Apps 和 Appsettings
[[academy-video-youtube({"vid": "3lbDWmYHlBk", "start_time": "0", "title": "Web Deployment Automation - GitHub Actions, Azure Web Apps, and Appsettings", "creator": "Tim Corey", "length": "37m 05s"})]]
在現今快節奏的軟體開發世界中,部署自動化已不僅僅是方便,更是一種必須。 對於更快速的發佈週期、更少的錯誤以及最大限度減少人工干預的壓力,已促使開發和運營團隊採用與版本控制、持續交付和CI/CD流程良好整合的自動化部署流程。
為了幫助開發者掌握這種自動化,Tim Corey在他的影片中提供了一個實用指南,標題為"Web Deployment Automation – GitHub Actions, Azure Web Apps, and Appsettings"。本文通過解釋關鍵概念來展示他的方法,強調可靠的部署流程在開發和生產環境中的重要性。
為何自動化部署?
Tim以應永遠自動化的部署過程來引領開場。 他將此描述為不僅僅是現代的最佳實踐,還是得益於現代部署自動化工具如GitHub Actions和Azure Web Apps的驚人簡單且易於接近的任務。這消除了進行手動部署、繁瑣設置或由手動工作引起的配置錯誤的需求。
他明確表示,自動化軟體部署等任務可以保證每次推送新程式碼時,它都在完全自動化的工作流程中自動構建、測試和部署。
建立應用:Blazor Web App
在本教程的這一部分,Tim展示了如何使用Visual Studio建立一個基本的Blazor應用程式。 他演示了如何選擇專案型別、啟用HTTPS、選擇.NET 8並配置渲染模式。 此處的目標不是建立一個復雜的應用程式,而是擁有一個簡單的專案,每次都可以使用相同的部署過程進行部署。
這些早期步驟強調了以部署管線為導向進行開發的重要性。 通過從一個乾淨且可測試的應用開始,開發團隊可以顯著減少後來的部署時間。
使用Appsettings進行本地配置
Tim繼續展示如何使用模擬的配置值設置appsettings.json。 這對於配置管理工具來說是必不可少的,並幫助團隊保持測試和生產環境設置的分離。
他解釋說,通過將IConfiguration注入到Razor組件中,您可以輕鬆顯示類似連接字串和巢狀設置的值——這在雲原生應用中是一種很好的做法,因為自動化流程依賴於乾淨的配置分離。
本地機密以確保開發安全
在此,Tim介紹了secrets.json,這是Visual Studio的自動化部署安全功能。 他解釋道,這些機密會覆蓋應用設置,但仍然保留在開發者的機器上,以維持機密性並最大化減少憑證洩露到版本控制的可能性。
這部分教程強調了推廣安全性及一致性的DevOps實踐,從而改善在不同環境中的軟體交付週期,同時不暴露敏感資訊。
版本控制和GitHub整合
任何CI/CD系統最基礎的組成部分之一就是可靠的版本控制。 Tim使用Visual Studio中的Git整合功能來初始化一個儲存庫並將源程式碼推送到GitHub。 這為構建能夠檢測程式碼變更並自動啟動部署流程的CI/CD管線奠定了基礎。
他提到每次提交都被跟蹤,這極大地幫助了運營團隊解決故障或部署新功能。 通過使用GitHub Actions,自動化部署過程不僅可追溯而且透明。
配置Azure Web App
Tim轉向Azure門戶展示如何配置一個免費的網站應用資源。 他建立了一個資源組,為其指派了一個名稱,並選擇了運行時設定,如.NET 8和Linux——許多雲原生應用中常見的預設。
他指出,即使是以"程式碼"的形式部署,Azure實際上也是在容器內運行您的構建工件,從而有效地抽象了這種複雜性,同時提供了部署所需的工具。
了解免費層限制
對於小型部署項目,Azure的免費計劃是一個很好的起點。 Tim解釋說,雖然它會限制CPU使用並禁用某些功能,如部署槽位,但它在開發、展示或暫存中運行的完美無缺。
這一說明強化了暫存環境在軟體開發中的價值,使團隊能夠在接近生產條件下進行測試,而不會產生成本。
通過部署中心設置CI/CD
Tim接著逐步介紹了Azure的部署中心,選擇GitHub作為整合來源。 這展示了CI/CD模型的核心——將版本控制連接到軟體部署,並持續進行整合。
他選擇了他的GitHub儲存庫,設置了基本認證,並生成了一個描述自動化管線的YAML文件。他指出YAML中縮進的重要性,提醒即便是自動化部署設置也需要注意細節以避免錯誤。
解決身份驗證設置問題
嘗試進行部署時發現基本身份驗證預設被禁用。 Tim瀏覽至Azure設置以啟用它,展示實際的部署自動化過程經常涉及其他服務和配置。
一旦解決,他回到部署中心並成功啟動自動化工作流,證明這種方法一旦正確設置後幾乎不需要人工干預。
CI/CD工作流執行
切換到GitHub,Tim觀察工作流自動觸發。 GitHub Actions構建應用,發布它,並將其部署到Azure——這一切都基於repo中的簡單推送。 這種持續部署方法有助於自動測試程式碼,徹底減少手動部署。
結果? 更快的發佈週期,停機時間更少,在初始配置後,運營團隊的參與度減少。
使用Azure管理機密
現在進入生產設置,Tim演示如何在Azure中設置環境變數,以便在不觸動源程式碼的情況下覆蓋appsettings.json。
他解釋了如何新增連接字串和巢狀值,使用雙下劃線(__)來表示巢狀鍵。 這確保開發者可以在不接觸敏感資料的情況下維護程式碼——這是一個理想的DevOps場景。
這種關注點分離是部署自動化最大好處之一:開發者推送乾淨的程式碼,管理員則安全地管理配置。
動態配置無需程式碼變更
Tim強調在Azure中所做的更改可以在重新啟動後生效——無需手動重新編譯或重新部署。 這在需要在測試和生產環境中使用不同變數時特別有用,減少了配置錯誤的可能性。
這同時也允許DevOps團隊即便在應用設置演變時保持自動化,從而輕鬆支持多個部署環境而不需重寫程式碼。
總結:部署自動化的好處
在影片結尾,Tim強調了整個部署自動化過程——從編寫程式碼到自動部署——花費約30分鐘。 一旦上手,您可以在不到五分鐘內完成。
他鼓勵開發者即便在小型專案中也採用這些自動化部署技術,並表示它們簡化了軟體交付,減少了錯誤,並能對新特徵或問題做出更快的響應。
無論您使用Azure、AWS還是Google Cloud,了解並採用部署自動化為更可擴展和安全的軟體專案奠定了基礎。
結論
Tim Corey的影片提供了一條清晰且有效的路線圖來設立完全自動化的部署流程。 在諸如GitHub Actions和Azure Web Apps等工具的幫助下,現代DevOps實踐使得自動化應用程式的部署、降低手動工作並提高開發、測試和生產環境的可靠性變得比以往更容易。

