From dabb91260c861fe24072023e54240a0438f05535 Mon Sep 17 00:00:00 2001 From: Zncl2222 <3002shinning@gmail.com> Date: Sat, 8 Jun 2024 21:00:29 +0800 Subject: [PATCH] ci: build shared library in workflow --- .github/workflows/cmake.yml | 35 ++++++++++++----------- .github/workflows/sonarcloud.yml | 46 +++++++++++++++++++++++++++---- cmake_build.bat | 4 +-- cmake_build.sh | 8 +++--- uc_sgsim/c_core/uc_sgsim.dll | Bin 85624 -> 0 bytes uc_sgsim/c_core/uc_sgsim.so | Bin 37112 -> 0 bytes 6 files changed, 64 insertions(+), 29 deletions(-) delete mode 100644 uc_sgsim/c_core/uc_sgsim.dll delete mode 100755 uc_sgsim/c_core/uc_sgsim.so diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index f84e5cd..83b688a 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -14,25 +14,24 @@ jobs: # You can convert this to a matrix build if you need cross-platform coverage. # See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - run: sudo apt-get update && sudo apt-get install -y valgrind - - - name: Configure CMake - # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. - # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type - run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} - - - name: Build - # Build your program with the given configuration - run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} - - - name: Test - working-directory: ${{github.workspace}}/build - # Execute tests defined by the CMake configuration. - # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail - run: make test && make memcheck + - uses: actions/checkout@v4 + - run: sudo apt-get update && sudo apt-get install -y valgrind + + - name: Configure CMake + # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make. + # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type + run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} + + - name: Build + # Build your program with the given configuration + run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} + + - name: Test + working-directory: ${{github.workspace}}/build + # Execute tests defined by the CMake configuration. + # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail + run: make test && make memcheck build_windows: name: c-build-windows diff --git a/.github/workflows/sonarcloud.yml b/.github/workflows/sonarcloud.yml index 2592723..5285ce4 100644 --- a/.github/workflows/sonarcloud.yml +++ b/.github/workflows/sonarcloud.yml @@ -7,10 +7,33 @@ on: types: [opened, synchronize, reopened] jobs: + build_shared_library: + strategy: + matrix: + runs-on: [ubuntu-latest, windows-latest] + runs-on: ${{ matrix.runs-on }} + steps: + - uses: actions/checkout@v4 + - name: Build DLL & Set file name windows + if: matrix.runs-on == 'windows-latest' + shell: pwsh + run: | + .\cmake_build.bat -s + echo "filename=uc_sgsim.dll" >> $env:GITHUB_ENV + - name: Build Shared Library & Set file name ubuntu + if: matrix.runs-on == 'ubuntu-latest' + run: | + sh ./cmake_build.sh -s + echo "filename=uc_sgsim.so" >> "$GITHUB_ENV" + - uses: actions/upload-artifact@v4 + with: + name: ${{ matrix.runs-on }}-shared-library + path: ./uc_sgsim/c_core/${{ env.filename }} + python_test: name: py-unittest runs-on: ubuntu-latest - + needs: build_shared_library strategy: max-parallel: 5 matrix: @@ -31,10 +54,17 @@ jobs: if [ -f requirements.txt ]; then pip install -r requirements.txt; fi + - name: Download All Artifacts + uses: actions/download-artifact@v4 + with: + merge-multiple: true + - run: | + mv ./uc_sgsim.so ./uc_sgsim/c_core - name: Run tests to generate coverage statistics run: | pytest -n auto --cov --cov-report xml:py_coverage.xml - uses: actions/upload-artifact@v4 + if: matrix.python-version == '3.11' with: name: python-coverage path: ./py_coverage.xml @@ -42,7 +72,7 @@ jobs: python_test_windows: name: py-unittest-windows runs-on: windows-latest - + needs: build_shared_library strategy: max-parallel: 5 matrix: @@ -62,6 +92,12 @@ jobs: pip install --upgrade pip pip install -r requirements.txt } + - name: Download All Artifacts + uses: actions/download-artifact@v4 + with: + merge-multiple: true + - run: | + mv ./uc_sgsim.dll ./uc_sgsim/c_core - name: Run tests to generate coverage statistics run: | pytest -n auto --cov --cov-report xml:py_coverage.xml @@ -83,7 +119,7 @@ jobs: run: | pip install gcovr==5.0 # 5.1 is not supported - name: Install sonar-scanner and build-wrapper - uses: SonarSource/sonarcloud-github-c-cpp + uses: SonarSource/sonarcloud-github-c-cpp@v2 - name: Run build-wrapper run: | mkdir build @@ -145,7 +181,7 @@ jobs: - name: Download artifacts uses: actions/download-artifact@v4 - name: Run sonar-scanner - uses: SonarSource/sonarcloud-github-action + uses: SonarSource/sonarcloud-github-action@master with: args: > -Dsonar.projectKey=zncl2222_Stochastic_UC_SGSIM_py @@ -175,7 +211,7 @@ jobs: with: fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis - name: Install sonar-scanner and build-wrapper - uses: SonarSource/sonarcloud-github-c-cpp + uses: SonarSource/sonarcloud-github-c-cpp@v2 - name: Download artifacts uses: actions/download-artifact@v4 - name: Run build-wrapper diff --git a/cmake_build.bat b/cmake_build.bat index 751ce46..de646a5 100644 --- a/cmake_build.bat +++ b/cmake_build.bat @@ -5,12 +5,12 @@ cd cbuild IF /I "%1"=="-s" ( cmake -DIS_EXECUTE=OFF -G "MinGW Makefiles" .. + make + %~dp0cbuild/c_example.exe ) ELSE ( cmake -DIS_EXECUTE=ON -G "MinGW Makefiles" .. ) -make -%~dp0cbuild/c_example.exe cd .. exit /b 0 diff --git a/cmake_build.sh b/cmake_build.sh index f276452..9fd8188 100644 --- a/cmake_build.sh +++ b/cmake_build.sh @@ -20,11 +20,11 @@ cd cmake_build if [ "$is_execute" = true ]; then echo "Compile the code into an executable file !" cmake -DIS_EXECUTE=ON .. + make + make test + make memcheck else echo "Compile the code into a shared library (dynamic library) !" cmake -DIS_EXECUTE=OFF .. + make fi - -make -make test -make memcheck diff --git a/uc_sgsim/c_core/uc_sgsim.dll b/uc_sgsim/c_core/uc_sgsim.dll deleted file mode 100644 index f6f123e2fb071838270242f3858b7425ff53d8e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 85624 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 Zaw%39dTbODfo_`Xex_`?$cm;T{x=C(OlSZA diff --git a/uc_sgsim/c_core/uc_sgsim.so b/uc_sgsim/c_core/uc_sgsim.so deleted file mode 100755 index 38b8039ca51dfcee916ee0e0bb42a8ff1aeec5dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37112 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