1 概述
1.1 文章目的
本文通過一個例項介紹如何使用軟體開發服務(DevCloud)完成一個C#Web專案的開發。
1.2 專案詳情
1. 專案名稱:超級冷笑話網站
2. 專案簡介:一個Web網站,包含使用者登入註冊以及瀏覽笑話等功能的網站。
3. 開發程式語言:ASP.NET MVC5(C#)
4. 專案型別:基於ASP.NET的B/S架構的Web專案
5. 部署環境:Windows + IIS + MySql
6. 部署方式:Ansible部署 + playbook指令碼
典型的B/S架構系統,使用者通過網際網路訪問系統,客戶端處理使用者操作及向資料庫讀取或寫入資料。
1.3 主幹流程
本文的主幹流程為:程式碼託管、編譯構建、釋出(軟體釋出庫)、部署。
開發者在本地開發後通過程式碼託管服務進行版本管理。專案開發到一定程度後可以進行編譯構建操作,構建出軟體包,通過釋出服務進行歸檔管理。再將軟體包部署到伺服器上,即可通過外部進行訪問。
1.4 前提條件
1.註冊華為雲賬號:華為雲官網註冊華為雲賬號,此賬號適用於所有華為雲產品。
2.彈性雲伺服器:部署將使用帶有公網IP的ECS(Windows Sever 2012)。
2 專案管理
2.1 建立專案
新建專案的開發流程包含兩種型別:scrum流程、看板流程。Scrum流程是標準的敏捷開發流程,工作項層級為傳統的scrum劃分方法Epic->Feature->Story->Task&Bug,本專案為把工作劃分的層級更清晰,選擇了scrum流程。
2.2 建立迭代
本專案研發週期短,只有一次release,劃分成三個迭代,迭代週期為一週。
2.3 梳理產品需求清單
專案規劃是以思維導圖的形式將工作項的層級結構展示出來,更直觀的看到父子關係,在專案規劃中新建工作項後,會自動生成到後面的Epic,Feature,Backlog和迭代頁面,在迭代開始前,專案經理將從客戶獲取的所有需求資訊,逐一落實到專案規劃中,分解成story,併為工作項設定優先順序。
3 程式碼託管
3.1 建立倉庫
Ø 新建程式碼倉庫時,選擇“模板新建”,在搜尋框中輸入已經被公開為示例模板的倉庫名稱,選擇該模板。(此處搜尋“superjokes”,程式語言選擇ASP.NET)
Ø 輸入新的倉庫名稱(可以和模板倉庫同名),即可建立程式碼倉
資料庫密碼修改:(必做,否則將不會部署成功)
修改在superjokes/src/Joke.Web/App_Data目錄下的appsettings.config。將資料庫配置處的密碼(第33行Password=)改為將要部署的主機上的資料庫密碼。
4 編譯構建
4.1 建立構建任務
Ø 新建任務,在“選擇構建模板”介面勾選msbuild,點選確定完成任務模板的建立。跳轉至“編譯構建任務”介面。
Ø 輸入構建詳細資訊
任務描述、原始碼倉庫分支等自行選擇。
Ø Msbuild構建
Msbuild構建流程,使用映象msbuild15-all
輸入命令:
命令註解:
由於本程式碼工程的sln檔案路徑位於/src目錄下,故在命令列中先執行cd src命令。
5 釋出
本專案中釋出服務可以將構建生成的可執行檔案上傳到釋出倉庫,便於軟體包管理。
Ø 版本歸檔
Msbuild構建過程中已經寫了對應的壓縮指令。
在“上傳軟體包到釋出庫(Windows環境)”步驟寫明構建包路徑、釋出版本號及包名後,可以將構建生成的軟體包上傳到釋出倉庫,自動進行軟體版本管理。
6 部署
部署任務的目的是將構建完成的軟體包部署到一個可供我們訪問的伺服器上,部署成功之後即可通過瀏覽器訪問該地址。
部署任務一共分為四部分,分別是主機授信,編寫部署指令碼,任務配置,和執行部署。
此時需要一臺可供訪問的伺服器,由於此次部署的Web工程是C#語言編寫的,所以伺服器需要是一臺具有彈性ip地址的Windows伺服器。
在主機授信前,需要先對主機環境進行相應配置。
6.1 主機環境配置
1. 安裝MySQL。
2. 通過資料庫配置指令碼在伺服器上生成MySQL資料庫,資料庫配置指令碼為位於程式碼倉庫根目錄的superjokes.sql。
6.2 主機授信
將伺服器主機授信到DevCloud裡,用於部署網站。
6.3 部署指令碼
通過playbook指令碼執行powershell命令將專案部署到伺服器的IIS服務上。
Ø 獲取部署指令碼
從程式碼倉庫根目錄獲取playbook指令碼IIS-windows-1.0.zip後上傳至DevCloud的playbook管理中。
6.4 任務配置
Ø 新建非模板部署任務。
Ø 填寫部署任務名稱,“部署設定”選擇“Ansible部署”,模板選擇“自定義playbook”並選擇自己上傳的playbook指令碼。
然後選擇部署的伺服器,設定埠,選擇要部署的軟體包及設定網站的預設頁面。
playbook引數詳解:
webapps_path: 軟體包部署路徑,在目標主機上的路徑
app_filename:部署採用的軟體包名稱
sitePort: 網站埠(提供一個目標主機上可訪問的埠號)
SiteName: 網站名稱,啟動IIS服務時為該網站命名
SiteAppPoolsModel: Integrated 不必修改
managedRuntimeVersion: v4.0 不必修改
WebSitePath: IIS服務中網站原始檔路徑
IISLogFile: IIS服務中的日誌儲存路徑
win_curl_path: 不必修改
6.5 檢視部署效果
部署任務執行完成後就可以用http://ip:埠/預設頁 訪問網站了
到此,我們完成了C# web專案在DevCloud上的搭建。