Skip to content
Merged
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
484315b
[CMake] Improve package granularity + Clean
guparan Mar 23, 2022
90c9298
[CMake] FIX SP3_add_python_module DESTINATION
guparan Mar 23, 2022
11df13f
[CI] Improve workflow
guparan Mar 24, 2022
5964b1f
[CI] Improve workflow (2)
guparan Mar 24, 2022
85620e0
Better pybind11 install
guparan Mar 24, 2022
042f0cd
Better pybind11 install (2)
guparan Mar 24, 2022
f44b7c5
Clean workflow
guparan Mar 24, 2022
314103a
Merge branch 'cmake_add_gui_component' into ci_improve_workflow
guparan Mar 24, 2022
ad0651a
Clean workflow (2)
guparan Mar 24, 2022
565f796
Add python_version matrix axis
guparan Mar 28, 2022
d0c139b
Add python_version matrix axis (2)
guparan Mar 28, 2022
400b981
Add python_version matrix axis (3)
guparan Mar 28, 2022
d196a14
Improve logs
guparan Mar 28, 2022
ad5b8e6
Clean python env vars on Windows workflow
guparan Mar 28, 2022
4fcff74
Debug python version issue Windows
guparan Mar 28, 2022
40bacaa
[Plugin] Add lots of debug info
guparan Mar 28, 2022
7941e69
FIX binary SP3 removal
guparan Mar 28, 2022
cc2ee79
CLEAN debug logs
guparan Mar 29, 2022
a9166de
Delete existing release before creating new one
guparan Mar 29, 2022
02a43e2
Add missing token
guparan Mar 29, 2022
3209068
Use sofa-setup-action input sofa_with_sofapython3
guparan Mar 29, 2022
8a9ac5f
Use guparan/sofa-setup-action@ci_improve_workflow
guparan Mar 29, 2022
d6ac674
Set SOFA branch to robosoft2022
guparan Mar 30, 2022
ecfa8be
Merge remote-tracking branch 'sofa-framework/master' into ci_improve_…
guparan Mar 30, 2022
0b382f7
Fix workflow for robosoft2022 branch
guparan Apr 1, 2022
301c244
Prepare merge with master
guparan Apr 21, 2022
f8d0895
Set python default version to 3.9
guparan Apr 21, 2022
81d34ad
Merge remote-tracking branch 'sofa-framework/master' into robosoft202…
guparan Apr 28, 2022
8db986b
Revert SofaPython3Tools.cmake
guparan Apr 28, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
164 changes: 61 additions & 103 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,98 +13,30 @@ on:

jobs:
build-and-test:
name: Run on ${{ matrix.os }} with SOFA ${{ matrix.sofa_branch }}
name: Run on ${{ matrix.os }} with SOFA ${{ matrix.sofa_branch }} and python ${{ matrix.python_version }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-20.04, macos-10.15, windows-2019]
sofa_branch: [master]
python_version: ['3.9']

steps:
- name: Setup SOFA and environment
id: sofa
uses: sofa-framework/sofa-setup-action@v3
uses: sofa-framework/sofa-setup-action@v4
with:
sofa_root: ${{ github.workspace }}/sofa
sofa_version: ${{ matrix.sofa_branch }}
sofa_scope: 'minimal'
sofa_scope: 'standard'
sofa_with_sofapython3: 'false'
python_version: '${{ matrix.python_version }}'

- name: Checkout source code
uses: actions/checkout@v2
with:
path: ${{ env.WORKSPACE_SRC_PATH }}

- name: Set env vars for artifacts naming
shell: bash
run: |
PROJECT_NAME="${GITHUB_REPOSITORY#*/}"
echo "PROJECT_NAME=$PROJECT_NAME" | tee -a $GITHUB_ENV

ARTIFACT_VERSION="${{ steps.sofa.outputs.run_branch }}"
if [[ "${{ github.event.inputs.is_nightly }}" == "true" ]]; then
ARTIFACT_VERSION="${ARTIFACT_VERSION}-nightly"
fi
ARTIFACT_NAME="${PROJECT_NAME}_${ARTIFACT_VERSION}_for-SOFA-${{ steps.sofa.outputs.sofa_version }}_${{ runner.os }}"
echo "ARTIFACT_NAME=$ARTIFACT_NAME" | tee -a $GITHUB_ENV

- name: Set env vars for pybind11 installation
shell: bash
run: |
# Define pybind11 specs
PYBIND11_VERSION=2.4.3
PYBIND11_INSTALL_PATH="/tmp/deps_cache_is_for_windows_only"
if [[ "$RUNNER_OS" == "Windows" ]]; then
PYBIND11_INSTALL_PATH="C:/pybind11"
fi
echo "PYBIND11_VERSION=$PYBIND11_VERSION" | tee -a $GITHUB_ENV
echo "PYBIND11_INSTALL_PATH=$PYBIND11_INSTALL_PATH" | tee -a $GITHUB_ENV

- name: Setup cache for pybind11 files
uses: actions/cache@v2
id: pybind11_cache
with:
path: ${{ env.PYBIND11_INSTALL_PATH }}
key: pybind11-${{ env.PYBIND11_VERSION }}_${{ runner.os }}_python-${{ steps.sofa.outputs.python_version }}_${{ hashFiles('src/.github/workflows/*.yml') }}

- name: Install pybind11
shell: bash
run: |
# Build and install pybind11
if [[ "$RUNNER_OS" == "Windows" ]]; then
if ! ls -a "$PYBIND11_INSTALL_PATH"/* >/dev/null 2>&1; then
# directory does not exist or is empty
git clone -b v$PYBIND11_VERSION --depth 1 https://github.com/pybind/pybind11.git "${{ runner.temp }}/pybind11_tmp"
cmd //c "${{ steps.sofa.outputs.vs_vsdevcmd }} && \
cd /d ${{ runner.temp }}/pybind11_tmp && \
cmake \
-GNinja \
-DCMAKE_BUILD_TYPE=Release \
-DPYBIND11_TEST=OFF \
-DCMAKE_INSTALL_PREFIX=$PYBIND11_INSTALL_PATH \
-DPYTHON_ROOT=$PYTHON_ROOT \
-DPython_ROOT=$PYTHON_ROOT \
-DPYTHON_EXECUTABLE=$PYTHON_ROOT/python.exe \
-DPython_EXECUTABLE=$PYTHON_ROOT/python.exe \
. && \
ninja install"
fi
echo "pybind11_ROOT=$PYBIND11_INSTALL_PATH" | tee -a $GITHUB_ENV
echo "$PYBIND11_INSTALL_PATH" >> $GITHUB_PATH
else
git clone -b v${PYBIND11_VERSION} --depth 1 https://github.com/pybind/pybind11.git "${{ runner.temp }}/pybind11_tmp"
cd "${{ runner.temp }}/pybind11_tmp"
cmake \
-GNinja \
-DCMAKE_BUILD_TYPE=Release \
-DPYBIND11_TEST=OFF \
-DPYTHON_ROOT=$PYTHON_ROOT \
-DPython_ROOT=$PYTHON_ROOT \
-DPYTHON_EXECUTABLE=$PYTHON_ROOT/python \
-DPython_EXECUTABLE=$PYTHON_ROOT/python \
.
sudo ninja install
fi

- name: Setup cache for ccache files
if: ${{ runner.os != 'Windows' }}
Expand All @@ -116,39 +48,43 @@ jobs:
- name: Build and install
shell: bash
run: |
cmake_options="-GNinja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX="$WORKSPACE_INSTALL_PATH" \
-DCMAKE_PREFIX_PATH="$SOFA_ROOT/lib/cmake" \
-DPYTHON_ROOT=$PYTHON_ROOT -DPython_ROOT=$PYTHON_ROOT \
-DPYTHON_EXECUTABLE=$PYTHON_EXE -DPython_EXECUTABLE=$PYTHON_EXE"
if [ -e "$(command -v ccache)" ]; then
cmake_options="$cmake_options -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache"
fi
cmake_options="$(echo $cmake_options)" # prettify

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" \
-DPYTHON_ROOT=$PYTHON_ROOT \
-DPython_ROOT=$PYTHON_ROOT \
-DPYTHON_EXECUTABLE=$PYTHON_ROOT/python.exe \
-DPython_EXECUTABLE=$PYTHON_ROOT/python.exe \
../src \
&& cmake $cmake_options ../src \
&& 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" \
-DPYTHON_ROOT=$PYTHON_ROOT \
-DPython_ROOT=$PYTHON_ROOT \
-DPYTHON_EXECUTABLE=$PYTHON_ROOT/python \
-DPython_EXECUTABLE=$PYTHON_ROOT/python \
../src
cmake $cmake_options ../src
ninja install
echo ${CCACHE_BASEDIR}
ccache -s
fi

- name: Set env vars for artifacts
shell: bash
run: |
PROJECT_NAME="${GITHUB_REPOSITORY#*/}"
echo "PROJECT_NAME=$PROJECT_NAME" | tee -a $GITHUB_ENV

ARTIFACT_VERSION="${{ steps.sofa.outputs.run_branch }}"
if [[ "${{ github.event.inputs.is_nightly }}" == "true" ]]; then
ARTIFACT_VERSION="${ARTIFACT_VERSION}-nightly"
fi
ARTIFACT_NAME="${PROJECT_NAME}_${ARTIFACT_VERSION}_python-${{ matrix.python_version }}_for-SOFA-${{ matrix.sofa_branch }}_${{ runner.os }}"
echo "ARTIFACT_NAME=$ARTIFACT_NAME" | tee -a $GITHUB_ENV

- name: Create artifact
uses: actions/upload-artifact@v2
Expand All @@ -167,8 +103,8 @@ jobs:
run: |
# Set env vars for tests
if [[ "$RUNNER_OS" == "Windows" ]]; then
echo "$(cd $WORKSPACE_ARTIFACT_PATH/lib && pwd -W)" >> $GITHUB_PATH
echo "$(cd $WORKSPACE_ARTIFACT_PATH/bin && pwd -W)" >> $GITHUB_PATH
echo "$WORKSPACE_ARTIFACT_PATH/lib" >> $GITHUB_PATH
echo "$WORKSPACE_ARTIFACT_PATH/bin" >> $GITHUB_PATH
elif [[ "$RUNNER_OS" == "macOS" ]]; then
echo "DYLD_LIBRARY_PATH=$WORKSPACE_ARTIFACT_PATH/lib:$SOFA_ROOT/lib:$DYLD_LIBRARY_PATH" | tee -a $GITHUB_ENV
fi
Expand All @@ -192,7 +128,8 @@ jobs:
echo "SOFA_ROOT = $SOFA_ROOT"
echo "PYTHONPATH = $PYTHONPATH"
echo '----------------------'
echo "which python = $(which python)"
echo "PATH = $PATH"
echo '----------------------'
python -c "import sys; print('sys.version = ' + str(sys.version)); print('sys.path = ' + str(sys.path))"

- name: Run test Binding.Sofa.Tests
Expand Down Expand Up @@ -244,15 +181,36 @@ jobs:
done
PROJECT_NAME="${GITHUB_REPOSITORY#*/}"
echo "PROJECT_NAME=$PROJECT_NAME" | tee -a $GITHUB_ENV

RELEASE_NAME="${{ github.ref_name }}"
RELEASE_TAGNAME="release-${{ github.ref_name }}"
if [[ "${{ github.event.inputs.is_nightly }}" == "true" ]]; then
RELEASE_NAME="$RELEASE_NAME-nightly"
RELEASE_TAGNAME="$RELEASE_TAGNAME-nightly"
fi
RELEASE_DATE="$(date +'%Y-%m-%d (at %T UTC)')"
echo "RELEASE_NAME=$RELEASE_NAME" | tee -a $GITHUB_ENV
echo "RELEASE_TAGNAME=$RELEASE_TAGNAME" | tee -a $GITHUB_ENV
echo "RELEASE_DATE=$RELEASE_DATE" | tee -a $GITHUB_ENV

- name: Delete old release
uses: dev-drprasad/delete-tag-and-release@v0.2.0
with:
tag_name: ${{ env.RELEASE_TAGNAME }}
delete_release: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Upload release
- name: Create new release
if: success() || failure()
uses: softprops/action-gh-release@v1
with:
name: ${{ github.ref_name }}
tag_name: release-${{ github.ref_name }}
name: ${{ env.RELEASE_NAME }}
tag_name: ${{ env.RELEASE_TAGNAME }}
fail_on_unmatched_files: true
body: |
Last updated on ${{ env.RELEASE_DATE }}
files: |
artifacts/${{ env.PROJECT_NAME }}_*_Linux.zip
artifacts/${{ env.PROJECT_NAME }}_*_Windows.zip
artifacts/${{ env.PROJECT_NAME }}_*_macOS.zip