1313
1414jobs :
1515 build-and-test :
16- name : Run on ${{ matrix.os }} with SOFA ${{ matrix.sofa_branch }}
16+ name : Run on ${{ matrix.os }} with SOFA ${{ matrix.sofa_branch }} and python ${{ matrix.python_version }}
1717 runs-on : ${{ matrix.os }}
1818 strategy :
1919 fail-fast : false
2020 matrix :
2121 os : [ubuntu-20.04, macos-10.15, windows-2019]
2222 sofa_branch : [master]
23+ python_version : ['3.9']
2324
2425 steps :
2526 - name : Setup SOFA and environment
2627 id : sofa
27- uses : sofa-framework/sofa-setup-action@v3
28+ uses : sofa-framework/sofa-setup-action@v4
2829 with :
2930 sofa_root : ${{ github.workspace }}/sofa
3031 sofa_version : ${{ matrix.sofa_branch }}
31- sofa_scope : ' minimal'
32+ sofa_scope : ' standard'
33+ sofa_with_sofapython3 : ' false'
34+ python_version : ' ${{ matrix.python_version }}'
3235
3336 - name : Checkout source code
3437 uses : actions/checkout@v2
3538 with :
3639 path : ${{ env.WORKSPACE_SRC_PATH }}
37-
38- - name : Set env vars for artifacts naming
39- shell : bash
40- run : |
41- PROJECT_NAME="${GITHUB_REPOSITORY#*/}"
42- echo "PROJECT_NAME=$PROJECT_NAME" | tee -a $GITHUB_ENV
43-
44- ARTIFACT_VERSION="${{ steps.sofa.outputs.run_branch }}"
45- if [[ "${{ github.event.inputs.is_nightly }}" == "true" ]]; then
46- ARTIFACT_VERSION="${ARTIFACT_VERSION}-nightly"
47- fi
48- ARTIFACT_NAME="${PROJECT_NAME}_${ARTIFACT_VERSION}_for-SOFA-${{ steps.sofa.outputs.sofa_version }}_${{ runner.os }}"
49- echo "ARTIFACT_NAME=$ARTIFACT_NAME" | tee -a $GITHUB_ENV
50-
51- - name : Set env vars for pybind11 installation
52- shell : bash
53- run : |
54- # Define pybind11 specs
55- PYBIND11_VERSION=2.4.3
56- PYBIND11_INSTALL_PATH="/tmp/deps_cache_is_for_windows_only"
57- if [[ "$RUNNER_OS" == "Windows" ]]; then
58- PYBIND11_INSTALL_PATH="C:/pybind11"
59- fi
60- echo "PYBIND11_VERSION=$PYBIND11_VERSION" | tee -a $GITHUB_ENV
61- echo "PYBIND11_INSTALL_PATH=$PYBIND11_INSTALL_PATH" | tee -a $GITHUB_ENV
62-
63- - name : Setup cache for pybind11 files
64- uses : actions/cache@v2
65- id : pybind11_cache
66- with :
67- path : ${{ env.PYBIND11_INSTALL_PATH }}
68- key : pybind11-${{ env.PYBIND11_VERSION }}_${{ runner.os }}_python-${{ steps.sofa.outputs.python_version }}_${{ hashFiles('src/.github/workflows/*.yml') }}
69-
70- - name : Install pybind11
71- shell : bash
72- run : |
73- # Build and install pybind11
74- if [[ "$RUNNER_OS" == "Windows" ]]; then
75- if ! ls -a "$PYBIND11_INSTALL_PATH"/* >/dev/null 2>&1; then
76- # directory does not exist or is empty
77- git clone -b v$PYBIND11_VERSION --depth 1 https://github.com/pybind/pybind11.git "${{ runner.temp }}/pybind11_tmp"
78- cmd //c "${{ steps.sofa.outputs.vs_vsdevcmd }} && \
79- cd /d ${{ runner.temp }}/pybind11_tmp && \
80- cmake \
81- -GNinja \
82- -DCMAKE_BUILD_TYPE=Release \
83- -DPYBIND11_TEST=OFF \
84- -DCMAKE_INSTALL_PREFIX=$PYBIND11_INSTALL_PATH \
85- -DPYTHON_ROOT=$PYTHON_ROOT \
86- -DPython_ROOT=$PYTHON_ROOT \
87- -DPYTHON_EXECUTABLE=$PYTHON_ROOT/python.exe \
88- -DPython_EXECUTABLE=$PYTHON_ROOT/python.exe \
89- . && \
90- ninja install"
91- fi
92- echo "pybind11_ROOT=$PYBIND11_INSTALL_PATH" | tee -a $GITHUB_ENV
93- echo "$PYBIND11_INSTALL_PATH" >> $GITHUB_PATH
94- else
95- git clone -b v${PYBIND11_VERSION} --depth 1 https://github.com/pybind/pybind11.git "${{ runner.temp }}/pybind11_tmp"
96- cd "${{ runner.temp }}/pybind11_tmp"
97- cmake \
98- -GNinja \
99- -DCMAKE_BUILD_TYPE=Release \
100- -DPYBIND11_TEST=OFF \
101- -DPYTHON_ROOT=$PYTHON_ROOT \
102- -DPython_ROOT=$PYTHON_ROOT \
103- -DPYTHON_EXECUTABLE=$PYTHON_ROOT/python \
104- -DPython_EXECUTABLE=$PYTHON_ROOT/python \
105- .
106- sudo ninja install
107- fi
10840
10941 - name : Setup cache for ccache files
11042 if : ${{ runner.os != 'Windows' }}
@@ -116,39 +48,43 @@ jobs:
11648 - name : Build and install
11749 shell : bash
11850 run : |
51+ cmake_options="-GNinja \
52+ -DCMAKE_BUILD_TYPE=Release \
53+ -DCMAKE_INSTALL_PREFIX="$WORKSPACE_INSTALL_PATH" \
54+ -DCMAKE_PREFIX_PATH="$SOFA_ROOT/lib/cmake" \
55+ -DPYTHON_ROOT=$PYTHON_ROOT -DPython_ROOT=$PYTHON_ROOT \
56+ -DPYTHON_EXECUTABLE=$PYTHON_EXE -DPython_EXECUTABLE=$PYTHON_EXE"
57+ if [ -e "$(command -v ccache)" ]; then
58+ cmake_options="$cmake_options -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache"
59+ fi
60+ cmake_options="$(echo $cmake_options)" # prettify
61+
11962 if [[ "$RUNNER_OS" == "Windows" ]]; then
12063 cmd //c "${{ steps.sofa.outputs.vs_vsdevcmd }} \
12164 && cd /d $WORKSPACE_BUILD_PATH \
122- && cmake \
123- -GNinja \
124- -DCMAKE_PREFIX_PATH="$SOFA_ROOT/lib/cmake" \
125- -DCMAKE_BUILD_TYPE=Release \
126- -DCMAKE_INSTALL_PREFIX="$WORKSPACE_INSTALL_PATH" \
127- -DPYTHON_ROOT=$PYTHON_ROOT \
128- -DPython_ROOT=$PYTHON_ROOT \
129- -DPYTHON_EXECUTABLE=$PYTHON_ROOT/python.exe \
130- -DPython_EXECUTABLE=$PYTHON_ROOT/python.exe \
131- ../src \
65+ && cmake $cmake_options ../src \
13266 && ninja install"
13367 else
13468 cd "$WORKSPACE_BUILD_PATH"
13569 ccache -z
136- cmake \
137- -GNinja \
138- -DCMAKE_C_COMPILER_LAUNCHER=ccache \
139- -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
140- -DCMAKE_PREFIX_PATH=$SOFA_ROOT/lib/cmake \
141- -DCMAKE_BUILD_TYPE=Release \
142- -DCMAKE_INSTALL_PREFIX="$WORKSPACE_INSTALL_PATH" \
143- -DPYTHON_ROOT=$PYTHON_ROOT \
144- -DPython_ROOT=$PYTHON_ROOT \
145- -DPYTHON_EXECUTABLE=$PYTHON_ROOT/python \
146- -DPython_EXECUTABLE=$PYTHON_ROOT/python \
147- ../src
70+ cmake $cmake_options ../src
14871 ninja install
14972 echo ${CCACHE_BASEDIR}
15073 ccache -s
15174 fi
75+
76+ - name : Set env vars for artifacts
77+ shell : bash
78+ run : |
79+ PROJECT_NAME="${GITHUB_REPOSITORY#*/}"
80+ echo "PROJECT_NAME=$PROJECT_NAME" | tee -a $GITHUB_ENV
81+
82+ ARTIFACT_VERSION="${{ steps.sofa.outputs.run_branch }}"
83+ if [[ "${{ github.event.inputs.is_nightly }}" == "true" ]]; then
84+ ARTIFACT_VERSION="${ARTIFACT_VERSION}-nightly"
85+ fi
86+ ARTIFACT_NAME="${PROJECT_NAME}_${ARTIFACT_VERSION}_python-${{ matrix.python_version }}_for-SOFA-${{ matrix.sofa_branch }}_${{ runner.os }}"
87+ echo "ARTIFACT_NAME=$ARTIFACT_NAME" | tee -a $GITHUB_ENV
15288
15389 - name : Create artifact
15490 uses : actions/upload-artifact@v2
@@ -167,8 +103,8 @@ jobs:
167103 run : |
168104 # Set env vars for tests
169105 if [[ "$RUNNER_OS" == "Windows" ]]; then
170- echo "$(cd $ WORKSPACE_ARTIFACT_PATH/lib && pwd -W) " >> $GITHUB_PATH
171- echo "$(cd $ WORKSPACE_ARTIFACT_PATH/bin && pwd -W) " >> $GITHUB_PATH
106+ echo "$WORKSPACE_ARTIFACT_PATH/lib" >> $GITHUB_PATH
107+ echo "$WORKSPACE_ARTIFACT_PATH/bin" >> $GITHUB_PATH
172108 elif [[ "$RUNNER_OS" == "macOS" ]]; then
173109 echo "DYLD_LIBRARY_PATH=$WORKSPACE_ARTIFACT_PATH/lib:$SOFA_ROOT/lib:$DYLD_LIBRARY_PATH" | tee -a $GITHUB_ENV
174110 fi
@@ -192,7 +128,8 @@ jobs:
192128 echo "SOFA_ROOT = $SOFA_ROOT"
193129 echo "PYTHONPATH = $PYTHONPATH"
194130 echo '----------------------'
195- echo "which python = $(which python)"
131+ echo "PATH = $PATH"
132+ echo '----------------------'
196133 python -c "import sys; print('sys.version = ' + str(sys.version)); print('sys.path = ' + str(sys.path))"
197134
198135 - name : Run test Binding.Sofa.Tests
@@ -244,15 +181,36 @@ jobs:
244181 done
245182 PROJECT_NAME="${GITHUB_REPOSITORY#*/}"
246183 echo "PROJECT_NAME=$PROJECT_NAME" | tee -a $GITHUB_ENV
184+
185+ RELEASE_NAME="${{ github.ref_name }}"
186+ RELEASE_TAGNAME="release-${{ github.ref_name }}"
187+ if [[ "${{ github.event.inputs.is_nightly }}" == "true" ]]; then
188+ RELEASE_NAME="$RELEASE_NAME-nightly"
189+ RELEASE_TAGNAME="$RELEASE_TAGNAME-nightly"
190+ fi
191+ RELEASE_DATE="$(date +'%Y-%m-%d (at %T UTC)')"
192+ echo "RELEASE_NAME=$RELEASE_NAME" | tee -a $GITHUB_ENV
193+ echo "RELEASE_TAGNAME=$RELEASE_TAGNAME" | tee -a $GITHUB_ENV
194+ echo "RELEASE_DATE=$RELEASE_DATE" | tee -a $GITHUB_ENV
195+
196+ - name : Delete old release
197+ uses : dev-drprasad/delete-tag-and-release@v0.2.0
198+ with :
199+ tag_name : ${{ env.RELEASE_TAGNAME }}
200+ delete_release : true
201+ env :
202+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
247203
248- - name : Upload release
204+ - name : Create new release
205+ if : success() || failure()
249206 uses : softprops/action-gh-release@v1
250207 with :
251- name : ${{ github.ref_name }}
252- tag_name : release- ${{ github.ref_name }}
208+ name : ${{ env.RELEASE_NAME }}
209+ tag_name : ${{ env.RELEASE_TAGNAME }}
253210 fail_on_unmatched_files : true
211+ body : |
212+ Last updated on ${{ env.RELEASE_DATE }}
254213 files : |
255214 artifacts/${{ env.PROJECT_NAME }}_*_Linux.zip
256215 artifacts/${{ env.PROJECT_NAME }}_*_Windows.zip
257216 artifacts/${{ env.PROJECT_NAME }}_*_macOS.zip
258-
0 commit comments