Skip to content

Merge pull request #2 from hugtalbot/202308_update_README #4

Merge pull request #2 from hugtalbot/202308_update_README

Merge pull request #2 from hugtalbot/202308_update_README #4

Workflow file for this run

name: CI
on:
workflow_dispatch:
inputs:
is_nightly:
description: 'Is this a nightly build?'
required: false
default: false
type: boolean
pull_request:
push:
jobs:
build-and-test:
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-11, windows-2019]
sofa_branch: [master]
python_version: ['3.8']
steps:
- name: (Mac) Workaround for homebrew
shell: bash
if: runner.os == 'macOS'
run: |
rm -f /usr/local/bin/2to3
rm -f /usr/local/bin/idle3
rm -f /usr/local/bin/pydoc3
rm -f /usr/local/bin/python3
rm -f /usr/local/bin/python3-config
rm -f /usr/local/bin/2to3-3.11
rm -f /usr/local/bin/idle3.11
rm -f /usr/local/bin/pydoc3.11
rm -f /usr/local/bin/python3.11
rm -f /usr/local/bin/python3.11-config
- 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'
sofa_with_sofapython3: 'false'
python_version: '${{ matrix.python_version }}'
- name: Install SofaPython3
shell: bash
run: |
SofaPython3_ROOT="$GITHUB_WORKSPACE/SofaPython3"
mkdir -p "${{ runner.temp }}/sp3_tmp/zip" "${{ runner.temp }}/sp3_tmp/binaries" "$SofaPython3_ROOT"
url="https://github.com/sofa-framework/SofaPython3/releases/download"
url="${url}/release-${{ matrix.sofa_branch }}/SofaPython3_${{ matrix.sofa_branch }}_python-${{ matrix.python_version }}_for-SOFA-${{ matrix.sofa_branch }}_${{ runner.os }}.zip"
echo "Getting SofaPython3 from $url"
curl --output "${{ runner.temp }}/sp3_tmp/SofaPython3.zip" -L $url
unzip -qq "${{ runner.temp }}/sp3_tmp/SofaPython3.zip" -d "${{ runner.temp }}/sp3_tmp/binaries"
mv "${{ runner.temp }}"/sp3_tmp/binaries/SofaPython3_*/* "$SofaPython3_ROOT"
echo "SofaPython3_ROOT=$SofaPython3_ROOT" | tee -a $GITHUB_ENV
echo "SofaPython3_DIR=$SofaPython3_ROOT/lib/cmake/SofaPython3" | tee -a $GITHUB_ENV
- name: Install SoftRobots
shell: bash
run: |
SoftRobots_ROOT="$GITHUB_WORKSPACE/SoftRobots"
mkdir -p "${{ runner.temp }}/sp3_tmp/zip" "${{ runner.temp }}/sp3_tmp/binaries" "$SoftRobots_ROOT"
url="https://github.com/SofaDefrost/SoftRobots/releases/download"
url="${url}/release-${{ matrix.sofa_branch }}/SoftRobots_${{ matrix.sofa_branch }}_python-${{ matrix.python_version }}_for-SOFA-${{ matrix.sofa_branch }}_${{ runner.os }}.zip"
echo "Getting SoftRobots from $url"
curl --output "${{ runner.temp }}/sp3_tmp/SoftRobots.zip" -L $url
unzip -qq "${{ runner.temp }}/sp3_tmp/SoftRobots.zip" -d "${{ runner.temp }}/sp3_tmp/binaries"
mv "${{ runner.temp }}"/sp3_tmp/binaries/SoftRobots_*/* "$SoftRobots_ROOT"
echo "SoftRobots_ROOT=$SoftRobots_ROOT" | tee -a $GITHUB_ENV
echo "SoftRobots_DIR=$SoftRobots_ROOT/lib/cmake/SoftRobots" | tee -a $GITHUB_ENV
- name: Checkout source code
uses: actions/checkout@v2
with:
path: ${{ env.WORKSPACE_SRC_PATH }}
- 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" \
-DSOFTROBOTS_BUILD_TESTS=True \
-DSOFTROBOTS_IGNORE_ERRORS=True \
-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 $cmake_options ../src \
&& ninja install"
else
cd "$WORKSPACE_BUILD_PATH"
ccache -z
cmake $cmake_options ../src
ninja install
echo ${CCACHE_BASEDIR}
ccache -s
fi
#- name: Postinstall fixup
# shell: bash
# run: |
# chmod a+x $WORKSPACE_SRC_PATH/tools/postinstall_fixup_*.sh
# if [[ "$RUNNER_OS" == "macOS" ]]; then
# $WORKSPACE_SRC_PATH/tools/postinstall_fixup_macOS.sh "$WORKSPACE_INSTALL_PATH"
# fi
- name: Create artifact
uses: actions/[email protected]
with:
name: SoftRobots_${{ steps.sofa.outputs.run_branch }}_python-${{ matrix.python_version }}_for-SOFA-${{ steps.sofa.outputs.sofa_version }}_${{ runner.os }}
path: ${{ env.WORKSPACE_INSTALL_PATH }}
- name: Install artifact
uses: actions/download-artifact@v2
with:
name: SoftRobots_${{ steps.sofa.outputs.run_branch }}_python-${{ matrix.python_version }}_for-SOFA-${{ steps.sofa.outputs.sofa_version }}_${{ runner.os }}
path: ${{ env.WORKSPACE_ARTIFACT_PATH }}
- name: Set env vars for tests
shell: bash
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
elif [[ "$RUNNER_OS" == "macOS" ]]; then
echo "DYLD_LIBRARY_PATH=$WORKSPACE_ARTIFACT_PATH/lib:$SOFA_ROOT/lib:$DYLD_LIBRARY_PATH" | tee -a $GITHUB_ENV
fi
echo "LD_LIBRARY_PATH=$WORKSPACE_ARTIFACT_PATH/lib:$SOFA_ROOT/lib:$LD_LIBRARY_PATH" | tee -a $GITHUB_ENV
# Add execution right on the tests
chmod +x $WORKSPACE_BUILD_PATH/bin/*_test${{ steps.sofa.outputs.exe }}
- name: Check environment for tests
shell: bash
run: |
echo '------ ls -la "$WORKSPACE_SRC_PATH" ------'
ls -la "$WORKSPACE_SRC_PATH"
echo '------ ls -la "$WORKSPACE_BUILD_PATH" ------'
ls -la "$WORKSPACE_BUILD_PATH"
echo '------ ls -la "$WORKSPACE_INSTALL_PATH" ------'
ls -la "$WORKSPACE_INSTALL_PATH"
echo '------ ls -la "$WORKSPACE_ARTIFACT_PATH" ------'
ls -la "$WORKSPACE_ARTIFACT_PATH"
echo '----------------------'
echo "SOFA_ROOT = $SOFA_ROOT"=
echo '----------------------'
python -c "import sys; print('sys.version = ' + str(sys.version)); print('sys.path = ' + str(sys.path))"
- name: Run tests
if: always()
shell: bash
run: |
cd $WORKSPACE_BUILD_PATH
./bin/SoftRobots_test${{ steps.sofa.outputs.exe }}
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 and set env vars
shell: bash
run: |
cd $GITHUB_WORKSPACE/artifacts
for artifact in *; do
zip $artifact.zip -r $artifact/*
md5sum $artifact.zip > $artifact.zip.md5
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)')"
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/[email protected]
with:
tag_name: ${{ env.RELEASE_TAGNAME }}
delete_release: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Create new release
if: success() || failure()
uses: softprops/action-gh-release@v1
with:
name: ${{ env.RELEASE_NAME }}
tag_name: ${{ env.RELEASE_TAGNAME }}
fail_on_unmatched_files: false
target_commitish: ${{ env.RELEASE_NAME }}
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