Skip to content

Commit

Permalink
Add github action CI, to generate a fetchable executable for other pr…
Browse files Browse the repository at this point in the history
…ojects (#32)

* add github action CI (to generate artefacts)

* add sofa version too

* change install macro
  • Loading branch information
fredroy authored Aug 1, 2022
1 parent d9d3d91 commit 635b4c5
Show file tree
Hide file tree
Showing 4 changed files with 124 additions and 2 deletions.
101 changes: 101 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -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
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -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

Expand Down
10 changes: 9 additions & 1 deletion Regression_test/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
cmake_minimum_required(VERSION 3.12)
project(Regression_test)
project(Regression_test LANGUAGES CXX)

include(cmake/environment.cmake)

Expand All @@ -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}"
)
13 changes: 13 additions & 0 deletions Regression_test/Regression_testConfig.cmake.in
Original file line number Diff line number Diff line change
@@ -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}/@[email protected]")
endif()

check_required_components(@PROJECT_NAME@)

0 comments on commit 635b4c5

Please sign in to comment.