A dotnet-wasm distribution #23384
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: Build Test Distribute | |
| # Controls when the action will run. | |
| on: | |
| # Triggers the workflow on push or pull request events but only for the master branch | |
| push: | |
| branches: [ master ] | |
| pull_request: | |
| branches: [ master ] | |
| # Allows you to run this workflow manually from the Actions tab | |
| workflow_dispatch: | |
| schedule: | |
| - cron: '0 17 * * *' # Run every day at 17:00 UTC | |
| #- cron: '0 6 * * *' # Run every day at 6 AM UTC | |
| permissions: | |
| id-token: write | |
| contents: write | |
| actions: read # This is required for wait-for-job | |
| jobs: | |
| # NOTE: all output values are strings | |
| # use the ${{ needs.config.outputs.bool-param == 'true' }} construction to check boolean values | |
| config: | |
| uses: ./.github/workflows/config.yml | |
| debug-config: | |
| needs: config | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Print config | |
| run: | | |
| echo << EOF | |
| ${{ toJSON( needs.config.outputs ) }} | |
| EOF | |
| prepare-image: | |
| needs: config | |
| uses: ./.github/workflows/prepare-images.yml | |
| with: | |
| docker_image_tag: ${{ needs.config.outputs.docker_image_tag }} | |
| need_linux_image_rebuild: ${{ needs.config.outputs.need_linux_image_rebuild == 'true' }} | |
| need_linux_vcpkg_rebuild: ${{ needs.config.outputs.need_linux_vcpkg_rebuild == 'true' }} | |
| need_windows_vcpkg_rebuild: ${{ needs.config.outputs.need_windows_vcpkg_rebuild == 'true' }} | |
| vcpkg_docker_image_tag: ${{ needs.config.outputs.vcpkg_docker_image_tag }} | |
| vs19_vcpkg_version: ${{ needs.config.outputs.vs19_vcpkg_version }} | |
| vs22_vcpkg_version: ${{ needs.config.outputs.vs22_vcpkg_version }} | |
| disable_ubuntu_x64: ${{ needs.config.outputs.build_enable_ubuntu_x64 != 'true' }} | |
| disable_ubuntu_arm64: ${{ needs.config.outputs.build_enable_ubuntu_arm64 != 'true' }} | |
| disable_emscripten: ${{ needs.config.outputs.build_enable_emscripten != 'true' }} | |
| disable_linux_vcpkg: ${{ needs.config.outputs.build_enable_linux_vcpkg != 'true' }} | |
| disable_windows: ${{ needs.config.outputs.build_enable_windows != 'true' }} | |
| secrets: inherit | |
| versioning-and-release-url: | |
| needs: config | |
| uses: ./.github/workflows/versioning-release.yml | |
| with: | |
| app_version: ${{ needs.config.outputs.app_version }} | |
| release_tag: ${{ needs.config.outputs.release_tag }} | |
| upload_artifacts: ${{ needs.config.outputs.upload_artifacts == 'true' }} | |
| generate-c-bindings: | |
| needs: [ config, prepare-image ] | |
| uses: ./.github/workflows/generate-c-bindings.yml | |
| with: | |
| docker_image_tag: ${{ needs.config.outputs.docker_image_tag }} | |
| windows-build-test: | |
| if: ${{ needs.config.outputs.build_enable_windows == 'true' }} | |
| needs: [ config, prepare-image ] | |
| uses: ./.github/workflows/build-test-windows.yml | |
| with: | |
| config_matrix: ${{ needs.config.outputs.windows_x64_config_matrix }} | |
| full_config_build: ${{ needs.config.outputs.full_config_build == 'true' }} | |
| internal_build: ${{ needs.config.outputs.internal_build == 'true' }} | |
| upload_artifacts: ${{ needs.config.outputs.upload_artifacts == 'true' || needs.config.outputs.tag-build-release-windows == 'true' }} | |
| upload_test_artifacts: ${{ needs.config.outputs.upload_test_artifacts == 'true' }} | |
| nuget_build: ${{ needs.config.outputs.build_enable_linux_vcpkg == 'true' && needs.config.outputs.upload_artifacts == 'true' }} | |
| secrets: inherit | |
| ubuntu-arm64-build-test: | |
| if: ${{ needs.config.outputs.build_enable_ubuntu_arm64 == 'true' }} | |
| needs: [ config, prepare-image ] | |
| uses: ./.github/workflows/build-test-ubuntu-arm64.yml | |
| with: | |
| app_version: ${{ needs.config.outputs.app_version }} | |
| docker_image_tag: ${{ needs.config.outputs.docker_image_tag }} | |
| full_config_build: ${{ needs.config.outputs.full_config_build == 'true' }} | |
| internal_build: ${{ needs.config.outputs.internal_build == 'true' }} | |
| upload_artifacts: ${{ needs.config.outputs.upload_artifacts == 'true' }} | |
| upload_test_artifacts: ${{ needs.config.outputs.upload_test_artifacts == 'true' }} | |
| secrets: inherit | |
| ubuntu-x64-build-test: | |
| if: ${{ needs.config.outputs.build_enable_ubuntu_x64 == 'true' }} | |
| needs: [ config, prepare-image ] | |
| uses: ./.github/workflows/build-test-ubuntu-x64.yml | |
| with: | |
| app_version: ${{ needs.config.outputs.app_version }} | |
| config_matrix: ${{ needs.config.outputs.ubuntu_x64_config_matrix }} | |
| docker_image_tag: ${{ needs.config.outputs.docker_image_tag }} | |
| full_config_build: ${{ needs.config.outputs.full_config_build == 'true' }} | |
| internal_build: ${{ needs.config.outputs.internal_build == 'true' }} | |
| upload_artifacts: ${{ needs.config.outputs.upload_artifacts == 'true' }} | |
| upload_test_artifacts: ${{ needs.config.outputs.upload_test_artifacts == 'true' }} | |
| secrets: inherit | |
| linux-vcpkg-build-test: | |
| if: ${{ needs.config.outputs.build_enable_linux_vcpkg == 'true' }} | |
| needs: [ config, prepare-image ] | |
| uses: ./.github/workflows/build-test-linux-vcpkg.yml | |
| with: | |
| app_version: ${{ needs.config.outputs.app_version }} | |
| docker_image_tag: ${{ needs.config.outputs.vcpkg_docker_image_tag }} | |
| full_config_build: ${{ needs.config.outputs.full_config_build == 'true' }} | |
| internal_build: ${{ needs.config.outputs.internal_build == 'true' }} | |
| upload_artifacts: ${{ needs.config.outputs.upload_artifacts == 'true' }} | |
| upload_test_artifacts: ${{ needs.config.outputs.upload_test_artifacts == 'true' }} | |
| nuget_build_patch: ${{ needs.config.outputs.build_enable_windows == 'true' && needs.config.outputs.upload_artifacts == 'true'}} | |
| secrets: inherit | |
| emscripten-build-test: | |
| if: ${{ needs.config.outputs.build_enable_emscripten == 'true' }} | |
| needs: [ config, prepare-image ] | |
| uses: ./.github/workflows/build-test-emscripten.yml | |
| with: | |
| docker_image_tag: ${{ needs.config.outputs.docker_image_tag }} | |
| internal_build: ${{ needs.config.outputs.internal_build == 'true' }} | |
| upload_artifacts: ${{ needs.config.outputs.upload_artifacts == 'true' }} | |
| emscripten-c-bindings-build-test: | |
| if: ${{ needs.config.outputs.build_enable_emscripten == 'true' }} | |
| needs: [ config, prepare-image ] | |
| uses: ./.github/workflows/build-test-emscripten-c-bindings.yml | |
| with: | |
| docker_image_tag: ${{ needs.config.outputs.docker_image_tag }} | |
| internal_build: ${{ needs.config.outputs.internal_build == 'true' }} | |
| macos-build-test: | |
| if: ${{ needs.config.outputs.build_enable_macos == 'true' }} | |
| needs: [ config ] | |
| uses: ./.github/workflows/build-test-macos.yml | |
| with: | |
| app_version: ${{ needs.config.outputs.app_version }} | |
| full_config_build: ${{ needs.config.outputs.full_config_build == 'true' }} | |
| internal_build: ${{ needs.config.outputs.internal_build == 'true' }} | |
| upload_artifacts: ${{ needs.config.outputs.upload_artifacts == 'true' }} | |
| upload_test_artifacts: ${{ needs.config.outputs.upload_test_artifacts == 'true' }} | |
| nuget_build_patch: ${{ needs.config.outputs.build_enable_windows == 'true' && needs.config.outputs.upload_artifacts == 'true'}} | |
| secrets: inherit | |
| update-win-version: | |
| if: ${{ needs.config.outputs.upload_artifacts == 'true' && needs.config.outputs.build_enable_windows == 'true' && needs.config.outputs.build-release-win == 'true' }} | |
| needs: | |
| - config | |
| - windows-build-test | |
| uses: ./.github/workflows/update-win-version.yml | |
| with: | |
| vs19_vcpkg_version: ${{ needs.config.outputs.vs19_vcpkg_version }} | |
| vs22_vcpkg_version: ${{ needs.config.outputs.vs22_vcpkg_version }} | |
| app_version: ${{ needs.config.outputs.app_version }} | |
| secrets: inherit | |
| create-nuget-package: | |
| if: ${{ needs.config.outputs.upload_artifacts == 'true' && needs.config.outputs.build_enable_windows == 'true' && needs.config.outputs.build_enable_linux_vcpkg == 'true' }} | |
| needs: | |
| - config | |
| - windows-build-test | |
| - linux-vcpkg-build-test | |
| - macos-build-test | |
| - emscripten-build-test | |
| - emscripten-c-bindings-build-test | |
| timeout-minutes: 20 | |
| runs-on: windows-2025 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v7 | |
| - name: Download NuGet Windows Patch Archive | |
| uses: actions/download-artifact@v8 | |
| with: | |
| pattern: DotNetPatchArchiveWindows-x64 | |
| path: windows_runtime | |
| - name: Download NuGet Linux x64 Patch Archive | |
| uses: actions/download-artifact@v8 | |
| with: | |
| pattern: DotNetPatchArchiveLinux-x64 | |
| path: linux_x64_runtime | |
| - name: Download NuGet Linux Arm Patch Archive | |
| uses: actions/download-artifact@v8 | |
| with: | |
| pattern: DotNetPatchArchiveLinux-arm64 | |
| path: linux_arm64_runtime | |
| - name: Download NuGet MacOS x64 Patch Archive | |
| uses: actions/download-artifact@v8 | |
| with: | |
| pattern: DotNetPatchArchiveMacOs-x64 | |
| path: macos_x64_runtime | |
| - name: Download NuGet MacOS Arm Patch Archive | |
| uses: actions/download-artifact@v8 | |
| with: | |
| pattern: DotNetPatchArchiveMacOs-arm64 | |
| path: macos_arm64_runtime | |
| - name: Download NuGet DLL and XML | |
| uses: actions/download-artifact@v8 | |
| with: | |
| pattern: DotNetDllXml | |
| path: dotnet_dll | |
| merge-multiple: true | |
| - name: Download C# Wasm Archive (single thread) | |
| uses: actions/download-artifact@v8 | |
| with: | |
| pattern: DotNetPatchArchiveWasm-Single | |
| path: browser_wasm_runtime_single | |
| - name: Build C# Wasm package | |
| run: | | |
| mkdir meshlib_dotnet-wasm | |
| mkdir meshlib_dotnet-wasm/native | |
| move dotnet_dll/MRDotNet2Static.dll meshlib_dotnet-wasm | |
| mkdir meshlib_dotnet-wasm/native/single | |
| move browser_wasm_runtime_single/* meshlib_dotnet-wasm/native/single | |
| Compress-Archive -Path meshlib_dotnet-wasm -DestinationPath meshlib_dotnet-wasm.zip | |
| - name: Generate NuGet specification | |
| run: | | |
| echo ${{ needs.config.outputs.app_version }} | |
| py -3 scripts\nuget_patch\generate_nuget_spec.py dotnet_dll windows_runtime linux_x64_runtime linux_arm64_runtime macos_x64_runtime macos_arm64_runtime ${{ needs.config.outputs.app_version }} | |
| - name: Download NuGet Executable | |
| run: curl https://dist.nuget.org/win-x86-commandline/latest/nuget.exe -o nuget.exe | |
| - name: Build NuGet package | |
| run: nuget.exe pack Package.nuspec -OutputFileNamesWithoutVersion | |
| - name: Upload NuGet Package | |
| uses: actions/upload-artifact@v7 | |
| env: | |
| ACTIONS_STEP_DEBUG: true | |
| with: | |
| name: DistributivesNuGet | |
| path: MeshLib.nupkg | |
| retention-days: 1 | |
| - name: Upload C# Wasm Package | |
| uses: actions/upload-artifact@v7 | |
| env: | |
| ACTIONS_STEP_DEBUG: true | |
| with: | |
| name: DistributivesDotNetWasm | |
| path: meshlib_dotnet-wasm.zip | |
| retention-days: 1 | |
| - name: Delete consumed NuGet input artifacts | |
| uses: geekyeggo/delete-artifact@176a747ab7e287e3ff4787bf8a148716375ca118 # v6.0.0 | |
| with: | |
| name: | | |
| DotNetPatchArchive* | |
| DotNetDllXml | |
| failOnError: false | |
| upload-distributions: | |
| # Don't publish if any build failed (its distributive is missing); skipped builds are fine. | |
| # Don't need `emscripten-c-bindings-build-test` here, it doesn't upload any distributions of its own. | |
| if: >- | |
| ${{ !cancelled() | |
| && needs.config.outputs.upload_artifacts == 'true' | |
| && needs.windows-build-test.result != 'failure' | |
| && needs.ubuntu-x64-build-test.result != 'failure' | |
| && needs.ubuntu-arm64-build-test.result != 'failure' | |
| && needs.linux-vcpkg-build-test.result != 'failure' | |
| && needs.emscripten-build-test.result != 'failure' | |
| && needs.macos-build-test.result != 'failure' }} | |
| timeout-minutes: 10 | |
| runs-on: ubuntu-latest | |
| needs: | |
| - config | |
| - versioning-and-release-url | |
| - windows-build-test | |
| - update-win-version | |
| - create-nuget-package | |
| - ubuntu-x64-build-test | |
| - ubuntu-arm64-build-test | |
| - linux-vcpkg-build-test | |
| - emscripten-build-test | |
| - macos-build-test | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v7 | |
| - name: Download All Developer Distributives | |
| uses: actions/download-artifact@v8 | |
| with: | |
| pattern: Distributives* | |
| merge-multiple: true | |
| - name: Rename Distributives | |
| run: | | |
| shopt -s nullglob | |
| for PKG_FILE in MeshLibDist*.zip ; do | |
| case "$PKG_FILE" in | |
| # Keep the historical layout for the iterator-debug archive: | |
| # MeshLibDist-IteratorDebug.zip -> MeshLibDist_<version>-IteratorDebug.zip | |
| *-IteratorDebug.zip) mv "$PKG_FILE" "${PKG_FILE/Dist/Dist_${{ needs.config.outputs.app_version }}}" ;; | |
| # Per-VS archives: MeshLibDistVS19.zip -> MeshLibDistVS19_<version>.zip | |
| *) mv "$PKG_FILE" "${PKG_FILE%.zip}_${{ needs.config.outputs.app_version }}.zip" ;; | |
| esac | |
| done | |
| for PKG_FILE in MeshLib*.nupkg ; do | |
| mv "$PKG_FILE" "${PKG_FILE/MeshLib/MeshLib_${{ needs.config.outputs.app_version }}}" | |
| done | |
| for PKG_FILE in meshlib*-dev.deb meshlib*-dev.rpm meshlib*.pkg meshlib_*.zip meshlib_*.tar.xz; do | |
| mv "$PKG_FILE" "${PKG_FILE/meshlib/meshlib_${{ needs.config.outputs.app_version }}}" | |
| done | |
| - name: Upload Distributives | |
| env: | |
| GH_TOKEN: ${{ github.token }} | |
| run: | | |
| shopt -s nullglob | |
| PKG_FILES="MeshLibDist*.zip MeshLib*.nupkg meshlib*-dev.deb meshlib*-dev.rpm meshlib*.pkg meshlib_*.zip meshlib_*.tar.xz" | |
| if [ -n "$(echo $PKG_FILES)" ] ; then | |
| gh release upload ${{ needs.config.outputs.release_tag }} $PKG_FILES --clobber | |
| fi | |
| - name: Delete consumed Distribution artifacts | |
| uses: geekyeggo/delete-artifact@176a747ab7e287e3ff4787bf8a148716375ca118 # v6.0.0 | |
| with: | |
| name: Distributives* | |
| failOnError: false | |
| windows-unity-test: | |
| # Run whenever full-ci is requested and the Windows build is enabled, provided the | |
| # NuGet package was actually built and uploaded to the release. `!cancelled()` keeps | |
| # this job from being auto-skipped: without a status function the implicit success() | |
| # gate skips it whenever a disabled platform (e.g. emscripten) is reached transitively | |
| # through `upload-distributions`, which is why it never ran on pull_request events. | |
| if: >- | |
| ${{ !cancelled() | |
| && needs.config.outputs.run_unity_nuget_test == 'true' | |
| && needs.config.outputs.build_enable_windows == 'true' | |
| && needs.create-nuget-package.result == 'success' | |
| && needs.upload-distributions.result == 'success' }} | |
| needs: | |
| - config | |
| - windows-build-test | |
| - create-nuget-package | |
| - upload-distributions | |
| uses: ./.github/workflows/unity-nuget-test.yml | |
| with: | |
| release_tag: ${{ needs.config.outputs.release_tag }} | |
| test-distribution: | |
| # Skip if publishing was skipped, so we don't test against an empty release. | |
| if: ${{ !cancelled() && needs.config.outputs.upload_artifacts == 'true' && needs.upload-distributions.result == 'success' }} | |
| needs: [ config, upload-distributions ] | |
| uses: ./.github/workflows/test-distribution.yml | |
| with: | |
| release_tag: ${{ needs.config.outputs.release_tag }} | |
| test_ubuntu_x64: ${{ needs.config.outputs.build_enable_ubuntu_x64 == 'true' }} | |
| test_ubuntu_arm64: ${{ needs.config.outputs.build_enable_ubuntu_arm64 == 'true' }} | |
| test_macos: ${{ needs.config.outputs.build_enable_macos == 'true' }} | |
| test_windows: ${{ needs.config.outputs.build_enable_windows == 'true' && needs.config.outputs.build-release-win == 'true' }} | |
| secrets: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| update-dev-documentation: | |
| # !cancelled() need to ignore general fail previous job, because this job depends on one matrix variant (ubuntu 22), | |
| # and if this variant failed this job also will fail | |
| if: ${{ ( ( needs.config.outputs.upload_artifacts == 'true' && needs.config.outputs.build_enable_ubuntu_arm64 == 'true' ) || needs.config.outputs.update_doc == 'true' ) && !cancelled() }} | |
| needs: [ config, generate-c-bindings ] | |
| uses: ./.github/workflows/update-docs.yml | |
| with: | |
| output_folder: MeshLib/dev | |
| secrets: inherit | |
| test-pip-build: | |
| needs: [ config, prepare-image ] | |
| if: ${{ needs.config.outputs.test_pip_build == 'true' }} | |
| uses: ./.github/workflows/pip-build.yml | |
| with: | |
| vcpkg_docker_image_tag: ${{ needs.config.outputs.vcpkg_docker_image_tag }} | |
| disable_ubuntu_x64: ${{ needs.config.outputs.build_enable_ubuntu_x64 != 'true' }} | |
| disable_ubuntu_arm64: ${{ needs.config.outputs.build_enable_ubuntu_arm64 != 'true' }} | |
| disable_macos: ${{ needs.config.outputs.build_enable_macos != 'true' }} | |
| disable_windows: ${{ needs.config.outputs.build_enable_windows != 'true' }} | |
| collect-stats: | |
| timeout-minutes: 5 | |
| runs-on: ubuntu-latest | |
| needs: [ config, upload-distributions ] | |
| # Dependabot PRs lack the AWS / CI-stats secrets, so skip stats collection there. | |
| if: ${{ always() && needs.config.outputs.internal_build == 'true' && github.actor != 'dependabot[bot]' }} | |
| continue-on-error: true | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v7 | |
| - name: Download runners' system stats | |
| uses: actions/download-artifact@v8 | |
| with: | |
| pattern: RunnerSysStats* | |
| merge-multiple: true | |
| - name: Download artifact stats | |
| uses: actions/download-artifact@v8 | |
| with: | |
| pattern: ArtifactStats* | |
| merge-multiple: true | |
| - uses: aws-actions/configure-aws-credentials@e7f100cf4c008499ea8adda475de1042d6975c7b # v6.2.0 | |
| id: aws-creds | |
| with: | |
| aws-region: us-east-1 | |
| role-to-assume: ${{ secrets.AWS_CI_STAT_API_ROLE_ARN }} | |
| output-credentials: true | |
| retry-max-attempts: 5 | |
| - name: Install dependencies | |
| run: python3 -m pip install boto3 botocore requests | |
| - name: Collect stats | |
| env: | |
| CI_STATS_AUTH_TOKEN: ${{ secrets.CI_STATS_AUTH_TOKEN }} | |
| GIT_BRANCH: ${{ github.head_ref || github.ref_name }} | |
| GIT_COMMIT: ${{ github.event.pull_request.head.sha || github.sha }} | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: python3 scripts/devops/collect_ci_stats.py | |
| update-artifacts: | |
| timeout-minutes: 15 | |
| runs-on: ubuntu-latest | |
| needs: [ collect-stats, update-dev-documentation ] | |
| if: always() | |
| continue-on-error: true | |
| steps: | |
| - name: Delete Wheelhouse | |
| uses: geekyeggo/delete-artifact@176a747ab7e287e3ff4787bf8a148716375ca118 # v6.0.0 | |
| with: | |
| name: Wheelhouse* | |
| failOnError: false | |
| - name: Delete runners' system stats | |
| uses: geekyeggo/delete-artifact@176a747ab7e287e3ff4787bf8a148716375ca118 # v6.0.0 | |
| with: | |
| name: RunnerSysStats* | |
| failOnError: false | |
| - name: Delete artifact stats | |
| uses: geekyeggo/delete-artifact@176a747ab7e287e3ff4787bf8a148716375ca118 # v6.0.0 | |
| with: | |
| name: ArtifactStats* | |
| failOnError: false | |
| # generate timing logs archive | |
| - name: Download Timing Logs Archive | |
| uses: actions/download-artifact@v8 | |
| with: | |
| pattern: Timing_Logs* | |
| merge-multiple: true | |
| - name: Generate Timing Logs Archive | |
| run: | | |
| shopt -s nullglob | |
| if [ -n "$(echo *.csv)" ] ; then | |
| tar -cvzf time_log.tar.gz *.csv | |
| else | |
| # create empty tar archive | |
| # https://superuser.com/questions/448623/how-to-get-an-empty-tar-archive | |
| tar -czf time_log.tar.gz -T /dev/null | |
| fi | |
| - name: Upload Timing Logs Archive | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: time_log | |
| path: time_log.tar.gz | |
| retention-days: 1 | |
| - name: Delete Timing Logs Source | |
| uses: geekyeggo/delete-artifact@176a747ab7e287e3ff4787bf8a148716375ca118 # v6.0.0 | |
| with: | |
| name: Timing_Logs* | |
| failOnError: false | |
| - name: Delete Python Stubs | |
| if: needs.update-dev-documentation.result == 'success' | |
| uses: geekyeggo/delete-artifact@176a747ab7e287e3ff4787bf8a148716375ca118 # v6.0.0 | |
| with: | |
| name: PythonStubs | |
| failOnError: false | |
| # NOTE: intentionally NOT deleting the CBindings artifact here. | |
| # It already has retention-days: 1 (see generate-c-bindings.yml), and keeping it for | |
| # that window lets us re-run individual failed build jobs — a partial re-run does not | |
| # re-run generate-c-bindings, so the artifact would otherwise be gone and the re-run | |
| # would fail at "Download C bindings" with "Artifact not found for name: CBindings". | |
| - name: Delete Csharp bindings | |
| if: needs.update-dev-documentation.result == 'success' | |
| uses: geekyeggo/delete-artifact@176a747ab7e287e3ff4787bf8a148716375ca118 # v6.0.0 | |
| with: | |
| name: CsharpBindings | |
| failOnError: false |