C++ on 華為云DevCloud
1?概述

1.1?文章目的
本文主要想為研發C++項目的企業或個人提供上云指導,通過本文中的示例項目 “音頻解析器”,為開發者提供包括項目管理,代碼托管,代碼檢查,編譯構建,測試管理的操作指導,覆蓋軟件開發全生命周期。
1.2?項目詳情
項目簡介:音頻采樣器是一個C++應用程序,它可以從MP3、WAV、FLAC或Ogg Vorbis格式的音頻文件中生成波形數據,波形數據可用于生成音頻的可視化呈現,外觀類似于音頻編輯應用程序;除此之外,該應用程序還可以進行音頻格式轉換等功能,為音頻處理者提供多種服務。
項目周期:3周(敏捷迭代開發)
構建環境:Ubuntu 16.04+GNU 5.4.0+Cmake3.5.1
部署環境:Ubuntu 14.04.5 LTS
華為云服務:軟件開發服務 DevCloud
容器鏡像服務 SWR
彈性云服務器 ECS
1.3?前提條件
注冊華為云賬號:華為云官網注冊華為云賬號,此賬號適用于所有華為云產品。
彈性云服務器:部署將使用帶有公網IP的ECS(ubuntu16.04),centos系統由于靜態庫不兼容會導致不確定的錯誤。
2?項目管理
2.1?創建項目
新建項目的開發流程包含兩種類型:scrum流程、看板流程。Scrum流程是標準的敏捷開發流程,工作項層級為傳統的scrum劃分方法Epic->Feature->Story->Task&Bug,本項目為把工作劃分的層級更清晰,選擇了scrum流程。
2.2?創建迭代
本項目研發周期短,只有一次release,劃分成三個迭代,迭代周期為一周。
2.3?梳理產品需求清單
項目規劃是以思維導圖的形式將工作項的層級結構展示出來,更直觀的看到父子關系,在項目規劃中新建工作項后,會自動生成到后面的Epic,Feature,Backlog和迭代頁面,在迭代開始前,項目經理將從客戶獲取的所有需求信息,逐一落實到項目規劃中,分解成story,并為工作項設置優先級。
2.4?輸出迭代清單
在迭代開始前,在Backlog頁面過濾出優先級“高”且重要程度為“關鍵”的工作項,納入迭代1,與開發人員進行需求澄清。其余迭代,均可根據組內實際情況,按照優先級從高到低,重要程度減弱的順序進行開發。
3?代碼托管
3.1?創建倉庫
新建代碼倉庫時,選擇“模板新建”,在搜索框中輸入已經被公開為示例模板的倉庫名稱,選擇該模板。
輸入新的倉庫名稱(可以和模板倉庫同名),即可創建代碼倉
4?構建&發布
4.1?構建工具
“CMake”是“cross platform make”的縮寫,是一個跨平臺的編譯工具, 它比我們常用的“make”更高級,可以在CmakeLists.txt用簡單的語句來描述所有平臺的編譯過程。為了說明CMake給編譯帶來的簡化和優點,我們來簡述一下C++語言從簡單到復雜項目,涉及不同平臺時編譯的變化:單文件編譯,僅僅一條g++ main.cpp命令即可生成可執行文件;當源文件越來越多,無法一條一條命令執行時,就需要make自動編譯工具,開發人員需要做的就是寫make執行時所需要依據的腳本——makefile;但是makefile抽象程度不高,對windows OS也不友好,cmake完美解決了這種多平臺編譯的問題。
Cmake 并不直接建構出最終的軟件,而是產生標準的建構檔(如 Unix 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然后再依一般的建構方式使用。本項目使用的構建工具就是Cmake+gcc
4.2?鏡像類型
鏡像類型有三種,既可以選擇DevCloud預定義的鏡像,也可以選擇Docker?Hub或華為容器鏡像服務SWR(SoftWare Repository for Container)中的公共鏡像進行構建。
DevCloud推薦鏡像,包含多種版本的Cmake和gcc工具供選擇使用,目前最高支持cmake3.10.1-gcc7.3.0,這些推薦鏡像僅僅安裝了簡單的構建工具和常用的軟件包,對于大型、專業性較強的C++項目,需要在構建前安裝大量的依賴包,這樣如果在每次構建時都在推薦的構建環境中進行安裝顯然是不可取的,所以,我們可以自己創建包含工程依賴包的鏡像,上傳到SWR服務中,構建時直接使用。本項目中使用的就是SWR中自己上傳的自有ubuntu鏡像。
4.3?SWR鏡像上傳
在SWR服務中,點擊“客戶端上傳”,會顯示上傳指導說明,本小節通過具體步驟輔助大家實踐。
③?查看構建鏡像
④?上傳鏡像
其中,org-pj為鏡像所屬組織,可以在SWR的“組織管理”創建。
⑤?在SWR中查看上傳鏡像
⑥將鏡像權限設置成“公開”,才能在構建任務中使用
⑦獲取該鏡像地址(docker?pull后面內容),在構建任務中使用
4.4?創建構建任務
新建任務,輸入任務名,選擇源碼倉庫
不使用模板,直接創建任務
點擊左側“+”,選擇“使用SWR公共鏡像”操作類型
輸入構建詳細信息
5?發布
本項目中發布服務有兩個作用,其一,將構建生成的可執行文件上傳到發布倉庫,便于軟件包管理;其二,將部署中用到的mp3文件,預先手動上傳至發布倉庫,部署中將直接使用。
5.1?發布軟件包
將可執行文件和啟動腳本startup.sh使用shell命令打成壓縮包
將壓縮包上傳到軟件發布倉庫
5.2?上傳依賴文件
點擊“上傳”按鈕,將一個壓縮好的MP3壓縮文件上傳至軟件發布庫,在部署時,將使用生成的可執行文件解析該音頻文件,該文件可以用任意MP3文件替代。
6?部署
6.1?C++可執行文件
該項目生成了一個可執行文件audiowaveform,?在linux系統中可以通過命令查看詳細信息。
如果發現自己的文件無法執行,可以通過chmod 777 audiowaveform命令將文件置成可執行(r:讀,w:寫,x:可執行)。
如果發現直接執行audiowaveform失敗,可能是由于環境變量導致的,可以通過./?audiowaveform來執行
該可執行文件應用于linux系統上,不同于可視化窗口操作,它是通過終端命令進行交互,操作命令可以查看幫助信息:
6.2主機授信
將服務器主機授信到DevCloud里,用于部署網站。
點擊“設置-通用設置-主機組管理”,將服務器以主機組的形式授信到項目當中。
在主機組中添加主機:
6.3模板部署任務
??新建部署任務,部署類型選擇“模板任務”
??填寫部署任務名稱,不使用模板直接創建。
??添加以下部署步驟:
選擇部署來源(部署軟件包)、選擇部署來源(MP3文件)、解壓文件、刪除文件、執行shell命令
(1) 選擇部署來源。
(2) ?解壓文件。(解壓路徑應與啟動腳本startup.sh中的路徑匹配)
(3)刪除文件。
(4)執行shell命令:startup.sh啟動腳本已經在解壓文件步驟中解壓到相應路徑下了。
6.4 查看部署效果
根據startup.sh中的執行命令,最終生成了test.png音頻采樣圖片,可以通過FTP將圖片從遠端ECS服務器上下載到本地查看。
至此,恭喜您打通了軟件開發云的各服務,完成了C++云上開發環境的搭建。
7 附錄
【云視界Live】大咖手把手教你玩轉知識點
企業敏捷轉型之初試Scrum
企業架構轉型之初試“微服務”
【最佳實踐】短視頻、快節奏,教你如何端到端踐行DevOps
如何開發一款簡單好用的在線接口文檔管理工具
【On?DevCloud】以語言為維度講解如何將項目遷移上云
Android on 華為云DevCloud
軟件開發平臺 DevCloud c++
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。