Fix indentation in CI workflow file #374
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | ||
| on: | ||
| push: | ||
| branches: | ||
| - main | ||
| - master | ||
| tags: | ||
| - 'v*' #release tags in format of e.g: 'v25.12.00' | ||
| pull_request: | ||
| types: [opened, synchronize, reopened, labeled] | ||
| workflow_dispatch: | ||
| inputs: | ||
| full_build: | ||
| description: "Run full build (including macOS)" | ||
| required: false | ||
| default: false | ||
| type: boolean | ||
| jobs: | ||
| build-and-test: | ||
| name: Run on ${{ matrix.os }} with SOFA ${{ matrix.sofa_branch }} / MeshRefinement=${{ matrix.with_mesh_refinement }} | ||
| if: > | ||
| github.event_name == 'push' || github.event_name == 'workflow_dispatch' || startsWith(github.ref, 'refs/tags/v') || | ||
| ( | ||
| github.event_name == 'pull_request' && | ||
| ( | ||
| contains(github.event.pull_request.labels.*.name, 'pr: run ci') && | ||
| ( | ||
| github.event.action != 'labeled' || | ||
| github.event.label.name == 'pr: run ci' | ||
| ) | ||
| ) | ||
| ) | ||
| runs-on: ${{ matrix.os }} | ||
| strategy: | ||
| fail-fast: false | ||
| matrix: | ||
| os: ${{ fromJSON( | ||
| github.event_name == 'pull_request' || | ||
| (github.event_name == 'push' && !startsWith(github.ref, 'refs/tags/v')) || | ||
| (github.event_name == 'workflow_dispatch' && inputs.full_build != 'true') | ||
| ? '["ubuntu-22.04","windows-2022"]' | ||
| : '["ubuntu-22.04","windows-2022","macos-14"]' | ||
| ) }} | ||
| sofa_branch: [master] | ||
| with_mesh_refinement: [ON, OFF] | ||
| steps: | ||
| ####################### Setup SOFA ####################### | ||
| - name: Setup SOFA and environment | ||
| id: sofa | ||
| uses: sofa-framework/sofa-setup-action@v5 | ||
| with: | ||
| sofa_root: ${{ github.workspace }}/sofa | ||
| sofa_version: ${{ matrix.sofa_branch }} | ||
| sofa_scope: 'full' | ||
| ############## Checkout MeshRefinement only if enabled ############## | ||
| - name: Checkout MeshRefinement source code | ||
| if: matrix.with_mesh_refinement == 'ON' | ||
| uses: actions/checkout@v4 | ||
| with: | ||
| path: deps/MeshRefinement | ||
| repository: InfinyTech3D/MeshRefinement | ||
| token: ${{ secrets.MESH_REFINEMENT_DEPLOY_KEY }} | ||
| ############### Build and install MeshRefinement only if enabled ############## | ||
| - name: Build and install MeshRefinement | ||
| if: matrix.with_mesh_refinement == 'ON' | ||
| shell: bash | ||
| run: | | ||
| mkdir -p deps/MeshRefinement/build | ||
| if [[ "$RUNNER_OS" == "Windows" ]]; then | ||
| cmd //c "${{ steps.sofa.outputs.vs_vsdevcmd }} \ | ||
| && cd /d %GITHUB_WORKSPACE%/deps/MeshRefinement/build \ | ||
| && cmake -GNinja \ | ||
| -DCMAKE_PREFIX_PATH=$SOFA_ROOT/lib/cmake \ | ||
| -DCMAKE_BUILD_TYPE=Release \ | ||
| -DCMAKE_INSTALL_PREFIX=%GITHUB_WORKSPACE%/deps/MeshRefinement/install \ | ||
| .. \ | ||
| && ninja install" | ||
| # Temp hack | ||
| cp deps/MeshRefinement/install/bin/MeshRefinement.dll "$WORKSPACE_BUILD_PATH/" | ||
| else | ||
| cd deps/MeshRefinement/build | ||
| cmake \ | ||
| -GNinja \ | ||
| -DCMAKE_PREFIX_PATH="$SOFA_ROOT/lib/cmake" \ | ||
| -DCMAKE_BUILD_TYPE=Release \ | ||
| -DCMAKE_INSTALL_PREFIX="$GITHUB_WORKSPACE/deps/MeshRefinement/install" \ | ||
| -DCMAKE_LIBRARY_OUTPUT_DIRECTORY="$WORKSPACE_BUILD_PATH/lib" \ | ||
| .. | ||
| ninja install | ||
| fi | ||
| ################# Checkout current repository ############## | ||
| - name: Checkout current source code | ||
| uses: actions/checkout@v4 | ||
| with: | ||
| path: ${{ env.WORKSPACE_SRC_PATH }} | ||
| ################ Build and install current plugin ############## | ||
| - name: Build and install | ||
| shell: bash | ||
| run: | | ||
| if [[ "$RUNNER_OS" == "Windows" ]]; then | ||
| cmd //c "${{ steps.sofa.outputs.vs_vsdevcmd }} \ | ||
| && cd /d %GITHUB_WORKSPACE%/build \ | ||
| && cmake -GNinja \ | ||
| -DCMAKE_PREFIX_PATH=%SOFA_ROOT%/lib/cmake;%GITHUB_WORKSPACE%/deps/MeshRefinement/install \ | ||
| -DCMAKE_BUILD_TYPE=Release \ | ||
| -DCMAKE_INSTALL_PREFIX=%GITHUB_WORKSPACE%/install \ | ||
| -DCMAKE_RUNTIME_OUTPUT_DIRECTORY=%WORKSPACE_BUILD_PATH% \ | ||
| ../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;$GITHUB_WORKSPACE/deps/MeshRefinement/install" \ | ||
| -DCMAKE_BUILD_TYPE=Release \ | ||
| -DCMAKE_INSTALL_PREFIX="$WORKSPACE_INSTALL_PATH" \ | ||
| -DCMAKE_LIBRARY_OUTPUT_DIRECTORY="$WORKSPACE_BUILD_PATH/lib" \ | ||
| ../src | ||
| ninja install | ||
| ccache -s | ||
| fi | ||
| ################### Artifact naming ############## | ||
| - name: Sanitize artifact name | ||
| id: sanitize | ||
| # This step removes special characters from the artifact name to ensure compatibility with upload-artifact | ||
| # Characters removed: " : < > | * ? \r \n \ / | ||
| # Spaces are replaced with underscores | ||
| # This sanitization prevents errors in artifact creation and retrieval | ||
| shell: pwsh | ||
| run: | | ||
| if ("${{ matrix.with_mesh_refinement }}" -eq "ON") { | ||
| $dependency = "with_meshrefinement" | ||
| } | ||
| else { | ||
| $dependency = "standalone" | ||
| } | ||
| $originalName = "InfinyToolkit_${dependency}_${{ steps.sofa.outputs.run_branch }}_for-SOFA-${{ steps.sofa.outputs.sofa_version }}_${{ runner.os }}" | ||
| $artifact_name = $originalName -replace '[":;<>|*?\r\n\\/]', '' -replace ' ', '_' | ||
| echo "artifact_name=$artifact_name" >> $env:GITHUB_OUTPUT | ||
| ################### Create and upload artifact ############## | ||
| - name: Create artifact | ||
| id: create-artifact | ||
| uses: actions/upload-artifact@v4.4.0 | ||
| with: | ||
| name: ${{ steps.sanitize.outputs.artifact_name }} | ||
| path: ${{ env.WORKSPACE_INSTALL_PATH }} | ||
| - name: Install artifact | ||
| uses: actions/download-artifact@v4.1.7 | ||
| with: | ||
| name: ${{ steps.sanitize.outputs.artifact_name }} | ||
| path: ${{ env.WORKSPACE_ARTIFACT_PATH }} | ||
| ################### Tests ############## | ||
| - name: Launch test | ||
| uses: sofa-framework/sofa-test-action@v1.0 | ||
| with: | ||
| sofa_root: ${{ github.workspace }}/sofa | ||
| sofa_version: ${{ steps.sofa.outputs.sofa_version }} | ||
| src_dir: ${{ env.WORKSPACE_SRC_PATH }} | ||
| build_dir: ${{ env.WORKSPACE_BUILD_PATH }} | ||
| python_exe: ${{ steps.sofa.outputs.python_exe }} | ||
| output_dir: ${{ github.workspace }}/tests-results_dir | ||
| nb_parallel_threads: '4' | ||
| deploy: | ||
| name: Deploy artifacts | ||
| if: startsWith(github.ref, 'refs/tags/v') | ||
| needs: [build-and-test] | ||
| runs-on: ubuntu-latest | ||
| continue-on-error: true | ||
| steps: | ||
| - name: Get artifacts | ||
| uses: actions/download-artifact@v4.1.7 | ||
| 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: false | ||
| target_commitish: ${{ github.sha }} | ||
| files: | | ||
| artifacts/InfinyToolkit_*_Linux.zip | ||
| artifacts/InfinyToolkit_*_Windows.zip | ||
| artifacts/InfinyToolkit_*_macOS.zip | ||