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上的搭建。