如何為C++項目配置持續集成?GitHub Actions工作流示例

c++++項目配置持續集成的核心是自動化構建、測試和代碼質量檢查。1. 工作流在main分支推送或拉取請求時觸發,在ubuntu-latest上運行,安裝依賴、配置cmake、構建并運行測試;2. 要支持不同編譯器,如windows上的msvc,需更改runs-on為windows-latest,并使用choco安裝visual studio工具,同時指定cmake生成器;3. 集成clang-tidy進行代碼質量檢查,添加步驟運行該工具并傳遞源文件與包含路徑;4. 使用actions/cache緩存build目錄,以cmakelists.txt哈希值作為緩存鍵,加快后續構建速度。

如何為C++項目配置持續集成?GitHub Actions工作流示例

c++項目配置持續集成,核心在于自動化構建、測試和代碼質量檢查。gitHub Actions提供了一種便捷的方式來實現這一點,它允許你在代碼倉庫中定義工作流,并在特定事件(例如推送、拉取請求)發生時自動執行。

如何為C++項目配置持續集成?GitHub Actions工作流示例

解決方案

如何為C++項目配置持續集成?GitHub Actions工作流示例

以下是一個C++項目使用CMake構建,并進行簡單測試的github Actions工作流示例:

立即學習C++免費學習筆記(深入)”;

name: C++ CI  on:   push:     branches: [ "main" ]   pull_request:     branches: [ "main" ]  jobs:   build:      runs-on: ubuntu-latest      steps:     - uses: actions/checkout@v3     - name: Install Dependencies       run: |         sudo apt-get update         sudo apt-get install -y cmake g++ libgtest-dev         cd /usr/src/gtest         sudo cmake CMakeLists.txt         sudo make         sudo cp libgtest*.a /usr/lib     - name: Configure CMake       run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=Debug     - name: Build       run: cmake --build ${{github.workspace}}/build     - name: Run Tests       run: ${{github.workspace}}/build/your_test_executable  # 替換為你的測試可執行文件名

這個工作流做了什么?首先,它在main分支的推送和拉取請求時觸發。然后在ubuntu-latest虛擬機上運行。它安裝了CMake、g++和Google Test(gtest)依賴,配置CMake構建,構建項目,并運行測試。

如何為C++項目配置持續集成?GitHub Actions工作流示例

如何針對不同的編譯器進行配置?

你可以通過修改runs-on和安裝依賴的步驟來支持不同的編譯器。例如,要在Windows上使用MSVC,可以將runs-on更改為windows-latest,并使用choco包管理器安裝Visual Studio構建工具。

runs-on: windows-latest  steps:   - uses: actions/checkout@v3   - name: Install MSVC     run: choco install visualstudio2019buildtools -y   - name: Configure CMake     run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=Debug -G "Visual Studio 16 2019"   - name: Build     run: cmake --build ${{github.workspace}}/build --config Debug   - name: Run Tests     run: ${{github.workspace}}/build/Debug/your_test_executable.exe

注意-G “Visual Studio 16 2019″參數,它指定了CMake使用的生成器。

如何集成代碼質量檢查工具?

可以使用靜態分析工具(如Clang-Tidy)來提高代碼質量。在工作流中添加一個步驟來運行Clang-Tidy,并檢查是否有任何警告或錯誤。

- name: Run Clang-Tidy   run: |     clang-tidy $(find . -name "*.cpp" -o -name "*.h") -- -I${{github.workspace}}/include -I${{github.workspace}}/build

這個步驟會遞歸地查找所有.cpp和.h文件,并將它們傳遞給Clang-Tidy。-I標志指定了頭文件的包含路徑。 當然,需要先安裝clang-tidy。

如何處理依賴項緩存?

依賴項緩存可以顯著加快構建速度。GitHub Actions提供了一個緩存操作,可以用來緩存CMake生成的構建文件和已下載的依賴項。

- uses: actions/cache@v3   with:     path: ${{github.workspace}}/build     key: ${{ runner.os }}-cmake-${{ hashFiles('**/CMakeLists.txt') }}     restore-keys: |       ${{ runner.os }}-cmake-

這個操作會緩存build目錄,并使用CMakeLists.txt文件的哈希值作為緩存鍵。如果CMakeLists.txt文件發生更改,緩存將失效。

? 版權聲明
THE END
喜歡就支持一下吧
點贊9 分享