From 635b4c5382577a5d0546ffce539d58cf29936137 Mon Sep 17 00:00:00 2001 From: Frederick Roy Date: Mon, 1 Aug 2022 17:13:53 +0900 Subject: [PATCH] Add github action CI, to generate a fetchable executable for other projects (#32) * add github action CI (to generate artefacts) * add sofa version too * change install macro --- .github/workflows/ci.yml | 101 ++++++++++++++++++ CMakeLists.txt | 2 +- Regression_test/CMakeLists.txt | 10 +- .../Regression_testConfig.cmake.in | 13 +++ 4 files changed, 124 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/ci.yml create mode 100644 Regression_test/Regression_testConfig.cmake.in diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..a7f10fd --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,101 @@ +name: Generate release + +on: + workflow_dispatch: # only generate the artefacts on demand + # pull_request: + # push: + +jobs: + build-and-test: + name: Run on ${{ matrix.os }} with SOFA ${{ matrix.sofa_branch }} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-20.04, macos-10.15, windows-2019] + sofa_branch: [master, v22.06] + + steps: + - name: Setup SOFA and environment + id: sofa + uses: sofa-framework/sofa-setup-action@v4 + with: + sofa_root: ${{ github.workspace }}/sofa + sofa_version: ${{ matrix.sofa_branch }} + sofa_scope: 'standard' + + - name: Checkout source code + uses: actions/checkout@v2 + with: + path: ${{ env.WORKSPACE_SRC_PATH }} + + - name: Build and install + shell: bash + run: | + if [[ "$RUNNER_OS" == "Windows" ]]; then + cmd //c "${{ steps.sofa.outputs.vs_vsdevcmd }} \ + && cd /d $WORKSPACE_BUILD_PATH \ + && cmake \ + -GNinja \ + -DCMAKE_PREFIX_PATH="$SOFA_ROOT/lib/cmake" \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX="$WORKSPACE_INSTALL_PATH" \ + ../src/Regression_test \ + && ninja install" + else + cd "$WORKSPACE_BUILD_PATH" + ccache -z + cmake \ + -GNinja \ + -DCMAKE_C_COMPILER_LAUNCHER=ccache \ + -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ + -DCMAKE_PREFIX_PATH=$SOFA_ROOT/lib/cmake \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX="$WORKSPACE_INSTALL_PATH" \ + ../src/Regression_test + ninja install + echo ${CCACHE_BASEDIR} + ccache -s + fi + + - name: Create artifact + uses: actions/upload-artifact@v2 + with: + name: Regression_test_${{ steps.sofa.outputs.run_branch }}_for-SOFA-${{ steps.sofa.outputs.sofa_version }}_${{ runner.os }} + path: ${{ env.WORKSPACE_INSTALL_PATH }} + + - name: Install artifact + uses: actions/download-artifact@v2 + with: + name: Regression_test_${{ steps.sofa.outputs.run_branch }}_for-SOFA-${{ steps.sofa.outputs.sofa_version }}_${{ runner.os }} + path: ${{ env.WORKSPACE_ARTIFACT_PATH }} + + deploy: + name: Deploy artifacts + if: always() && startsWith(github.ref, 'refs/heads/') # we are on a branch (not a PR) + needs: [build-and-test] + runs-on: ubuntu-latest + continue-on-error: true + steps: + - name: Get artifacts + uses: actions/download-artifact@v2 + with: + path: artifacts + + - name: Zip artifacts + shell: bash + run: | + cd $GITHUB_WORKSPACE/artifacts + for artifact in *; do + zip $artifact.zip -r $artifact/* + done + - name: Upload release + uses: softprops/action-gh-release@v1 + with: + name: ${{ github.ref_name }} + tag_name: release-${{ github.ref_name }} + fail_on_unmatched_files: true + files: | + artifacts/Regression_test_*_Linux.zip + artifacts/Regression_test_*_Windows.zip + artifacts/Regression_test_*_macOS.zip diff --git a/CMakeLists.txt b/CMakeLists.txt index 3dcd21f..20e4742 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1) +cmake_minimum_required(VERSION 3.12) # Meta CMakeLists used to build Regression_test within SOFA diff --git a/Regression_test/CMakeLists.txt b/Regression_test/CMakeLists.txt index 9357f8d..b765f50 100644 --- a/Regression_test/CMakeLists.txt +++ b/Regression_test/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.12) -project(Regression_test) +project(Regression_test LANGUAGES CXX) include(cmake/environment.cmake) @@ -23,3 +23,11 @@ add_executable(${PROJECT_NAME} ${SOURCE_FILES} ${HEADER_FILES}) add_definitions("-DSOFA_SRC_DIR=\"${CMAKE_SOURCE_DIR}\"") target_link_libraries(${PROJECT_NAME} PUBLIC Sofa.Testing) target_link_libraries(${PROJECT_NAME} PUBLIC Sofa.Component) + +sofa_create_package_with_targets( + PACKAGE_NAME ${PROJECT_NAME} + PACKAGE_VERSION ${Sofa_VERSION} + TARGETS ${PROJECT_NAME} AUTO_SET_TARGET_PROPERTIES + INCLUDE_SOURCE_DIR "src" + INCLUDE_INSTALL_DIR "${PROJECT_NAME}" +) diff --git a/Regression_test/Regression_testConfig.cmake.in b/Regression_test/Regression_testConfig.cmake.in new file mode 100644 index 0000000..02a342f --- /dev/null +++ b/Regression_test/Regression_testConfig.cmake.in @@ -0,0 +1,13 @@ +# CMake package configuration file for the @PROJECT_NAME@ module + +@PACKAGE_GUARD@ +@PACKAGE_INIT@ + +find_package(Sofa.Component QUIET REQUIRED) +find_package(Sofa.Testing QUIET REQUIRED) + +if(NOT TARGET @PROJECT_NAME@) + include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake") +endif() + +check_required_components(@PROJECT_NAME@)