目錄
介紹
基於Web的應用程序使我們的工作更加輕鬆。特別是當我們需要屏幕之間的交互時,我們可以考慮使用單頁應用程序(SPA)。對於SPA,我們可能需要Web-pack或grunt或gulp等用於合併和捆綁我們的客戶端腳本。單擊此處獲取基本信息。假設我們使用ASP.NET Core,則可能需要使用npm或bower或yarn等來管理軟件包,以便我們可以還原軟件包並編譯應用程序。但是,如果您沒有自動CI/CD。那麼第一次部署單個頁面的應用程序也很困難。在本文中,我的主要重點是向您展示如何使用VSTS爲ASP.NET Core應用程序創建構建和發佈。
讓我們深入瞭解基本概念
單體架構和微服務架構
曾經有一段時間,單體架構是一種普遍的做法,瀑布模型很受歡迎。在這種方法論中,一切都被視爲一個大項目,即結構化和順序化的過程。現在,它被分解成小塊,並且是迭代的。是的,我的意思是微服務架構和敏捷方法論。
敏捷和DevOps
我們知道敏捷是一種開發方法。DevOps這個詞就是Agile的擴展,它主要側重於開發過程到生產支持。可以說,這是軟件開發與運營的結合。
DevOps背後的推動力
在談論DevOps時,經常會提到以下術語:
- 持續集成(CI)
- 連續交付(CD)
- 持續部署(CD)
持續集成
一天中,開發人員會多次簽入/提交併將代碼合併到共享存儲庫(Git,Team Foundation版本控制等)中,並且在合併這些代碼後,它會自動構建並運行自動化測試。
持續交付
在代碼集成之後,將構建並測試代碼。現在可以將代碼推送到暫存環境(非產品測試)或生產中,但是您需要手動批准才能推送代碼。
持續部署
在代碼集成之後,將構建並測試代碼。現在,未經任何批准,它會自動推送到暫存環境(非產品測試)或生產中。
使用VSTS的ASP.NET Core應用程序的自動化CI
先決條件
您需要Visual Studio Team Services帳戶和Git帳戶。沒有一個?您可以從https://www.visualstudio.com和https://github.com創建一個新的免費帳戶。
使用VSTS創建團隊項目
1、選擇項目>新項目。
2、爲項目提供一個名稱,然後爲您的項目選擇正確的版本控制Git或TFVC。選擇一個工作項目流程。單擊創建按鈕創建項目。
3、單擊Clone in Visual Studio。
4、VS IDE將彈出一個窗口。單擊克隆按鈕。
5、選擇Team Explorer,然後單擊Create a new project or solution。
創建項目後,您需要提交所有更改。單擊團隊資源管理器>更改。填寫更改評論,然後單擊全部提交。
6、單擊同步以同步代碼。
7、最後,單擊“發佈”(Outgoing Commits>Publish)。
爲ASP.NET Core應用程序創建新的構建定義
1、選擇Build&Release選項卡,然後選擇Builds。
2、選擇新建以創建新定義。
3、選擇項目,存儲庫,分支,然後單擊繼續。
4、根據您的項目類型選擇build模板。我選擇ASP.NET Core(.NET Framework),然後單擊“Apply”按鈕以生成內部定義。
5、選擇Process任務,並填寫構建定義的名稱(例如HelloWorld-Dev,我們將在發行版中使用此名稱)。選擇Hosted VS2017作爲要在其中運行構建的默認代理。
如果您的團隊使用Visual Studio 2017,則選擇Hosted VS2017,然後它具有.NET Core框架並需要其他組件來構建項目。如果您的團隊在Ubuntu上使用開發工具,請選擇Hosted Linux。如果您的團隊使用Visual Studio 2013或Visual Studio 2015,請選擇“託管”。
選擇項目解決方案文件作爲“solution或packages.config的路徑”,並填寫工件名稱。
6、選擇獲取源任務並檢查正確的項目,存儲庫和分支。選擇clean: true和“ clean options: sources。標籤來源:Never。報告:build status。
7、選擇生成解決方案從第一階段任務1.選擇的Visual Studio版本:最新的。MSBuild體系結構:選擇適合您的X64或X86。
Webpack的應用程序構建和捆綁
8、我們需要添加npm安裝用於項目的所有軟件包。要添加npm task,請單擊第1階段右側的(+)Add Task,然後選擇Package。查找並添加npm任務。現在將npm任務拖放到Build solution之前。如果您使用Bower而不是npm,則需要添加Bower。
現在選擇npm任務並選擇Command:install。現在對於“帶有package.json的工作文件夾”,選擇具有package.json文件的主項目的根文件夾。選擇自定義註冊和身份驗證註冊>要使用的註冊:在我的.npmrc 中註冊;高級>詳細日誌記錄:已選中;控制選項>啓用:選中。
9、接下來,我們將需要PowerShell腳本任務來編譯我們的客戶端腳本。在這裏,我們將安裝webpack並使用web-pack編譯JavaScript。選擇(+)添加任務,然後從“構建”部分中查找PowerShell。將其添加到npm install和“構建解決方案”任務之間的構建定義中。
填寫以下信息:
- 顯示名稱:PowerShellScript
- 類型:內聯腳本
- 內聯腳本:
(Get-Item -Path ".\" -Verbose).FullName
$env:Path=[System.Environment]::GetEnvironmentVariable("Path","Machine")+";"+
[System.Environment]::GetEnvironmentVariable("Path","User")
Get-Command -CommandType Application -ErrorAction SilentlyContinue
-Name webpack | Select-Object -ExpandProperty Definition | echo
npm install -g webpack --no-optional
node_modules\.bin\webpack -p
- 高級>工作文件夾:您擁有webpack.config.js文件的Web應用程序的根文件夾。
- 標準錯誤失敗:已選中
- 控制選項:選中啓用&繼續出錯
- 運行此任務:僅當所有先前任務都成功時。
10、選擇觸發器選項卡,然後選擇以下信息。
- 實現持續集成
- 在構建過程中批量更改
- 分支過濾器>類型:包括&分支規範:即dev或qa或master
11、選擇選項選項卡,然後選擇以下信息。
- 新的構建請求處理:已啓用。
- 自動鏈接此版本中的新作品:已啓用。
- 僅鏈接到添加到規範分支的工作鏈接>類型:包括;分支規範:即dev。
- 您還可以更改“構建”作業的默認值。
12、最後,單擊 Save & queue>Save以保存構建定義。
現在,如果您將代碼更改提交到選定的分支中,那麼我們將實現CI自動構建,那麼您將看到以下輸出……。
創建新發布定義
1、轉到“構建和發佈”選項卡>“發佈” >“新定義”。
注意:如果您已經擁有現有發佈,則選擇加號(+)和創建發佈定義。
2、選擇一個模板:IIS網站和SQL數據庫部署。
3、您將獲得一個環境窗口。現在,從屬性中更改環境名稱。
4、在“工件”面板中,選擇+ Add,然後選擇項目,源(構建定義),默認版本和源別名的名稱。點擊添加按鈕。
5、單擊閃電觸發連續部署,然後在右側啓用它。如果希望在新發布的源工件可用時創建新版本,則需要它。單擊添加按鈕,然後選擇類型和構建分支。
6、單擊環境的閃電,然後:
- 選擇觸發器:發佈後
- 工件過濾器:已啓用
- 選擇+添加>工件名稱(即HelloWorld-Artifact-Dev)
- 類型:包含;構建分支:即Dev; 構建標籤:留空。
7、在瀏覽器的左側,從“環境”面板中選擇任務或選擇任務(2個階段,2個任務)。這些任務將執行您的部署過程。
8、現在,選擇“任務”>“任務環境”(例如HelloWorld-Dev-Env),並填寫以下信息:
- 配置類型:IIS網站
- 行動:創建或更新
- 網站名稱: HelloWorldApp-Dev
- 應用程序池>名稱: HelloWorldApp-Dev
- 單擊添加綁定>…按鈕。“添加綁定”窗口將彈出並填充以下信息:
- 協議:http或https,端口:IIS分配的端口(即543)和HostName:即,helloWorldApp-dev.yourDomain.com。
9、單擊左側的“IIS部署”,然後選擇部署組。
10、選擇IIS Web App管理並填寫信息:
- 物理路徑:%SystemDrive%\inetpub\wwwroot\Dev\HelloWorldApp-Dev\
- 物理路徑身份驗證:應用程序用戶(直通)
- .NET版本:v4.0
- 託管管道模式:集成
- 身份:選擇您喜歡的身份
11、選擇“IIS Web App部署”,然後選中“使應用程序脫機”。
12、我沒有使用SQL部署任務。因此,如果不需要,您可以禁用或刪除該任務。選擇“SQL部署”,然後右鍵單擊它以“禁用所選任務”或“刪除所選任務”。
13、最後,單擊“保存”按鈕以保存版本定義。
注意:不要忘記設置IIS配置。