[Cross] Broadcast Refactor to 1-to-1 numpy match #37
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 and Release | |
| on: | |
| push: | |
| branches: [ "master", "main" ] | |
| tags: [ "v*" ] | |
| pull_request: | |
| branches: [ "master", "main" ] | |
| workflow_dispatch: | |
| permissions: write-all | |
| env: | |
| # Suppress noisy build warnings that clutter CI annotations. | |
| # Uses %3B (URL-encoded semicolon) because MSBuild CLI treats raw ; and , as property separators. | |
| # XML doc warnings (CS15xx, CS17xx): ~7,200 of ~8,700 total — malformed/missing doc comments | |
| # CS8981: 'np' only contains lowercase chars — intentional for NumPy API compat | |
| # NU5048: PackageIconUrl deprecated — cosmetic NuGet warning | |
| DOTNET_NOWARN: CS1570%3BCS1571%3BCS1572%3BCS1573%3BCS1574%3BCS1587%3BCS1591%3BCS1711%3BCS1734%3BCS8981%3BNU5048 | |
| jobs: | |
| test: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ windows-latest, ubuntu-latest, macos-latest ] | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup .NET | |
| uses: actions/setup-dotnet@v4 | |
| with: | |
| dotnet-version: | | |
| 8.0.x | |
| 10.0.x | |
| dotnet-quality: 'preview' | |
| - name: Build | |
| run: dotnet build test/NumSharp.UnitTest/NumSharp.UnitTest.csproj --configuration Release -p:NoWarn=${{ env.DOTNET_NOWARN }} | |
| # NOTE: Test project currently only targets net10.0. See TODO in NumSharp.UnitTest.csproj | |
| # to re-enable net8.0 when TUnit compatibility is resolved. | |
| # | |
| # Test filtering: | |
| # - OpenBugs: excluded on all platforms (known-failing bug reproductions) | |
| # - WindowsOnly: excluded on non-Windows (require GDI+/System.Drawing.Common) | |
| - name: Test (net10.0) | |
| shell: bash | |
| run: | | |
| if [[ "$RUNNER_OS" == "Windows" ]]; then | |
| FILTER='/*/*/*/*[Category!=OpenBugs]' | |
| else | |
| # Combine filters with separate brackets (TUnit syntax for AND) | |
| FILTER='/*/*/*/*[Category!=OpenBugs][Category!=WindowsOnly]' | |
| fi | |
| dotnet run --project test/NumSharp.UnitTest/NumSharp.UnitTest.csproj \ | |
| --configuration Release --no-build --framework net10.0 \ | |
| -- --treenode-filter "$FILTER" --report-trx | |
| - name: Upload Test Results | |
| uses: actions/upload-artifact@v4 | |
| if: always() | |
| with: | |
| name: test-results-${{ matrix.os }} | |
| path: ${{ github.workspace }}/**/TestResults/**/*.trx | |
| retention-days: 5 | |
| build-nuget: | |
| needs: test | |
| if: startsWith(github.ref, 'refs/tags/v') | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup .NET | |
| uses: actions/setup-dotnet@v4 | |
| with: | |
| dotnet-version: | | |
| 8.0.x | |
| 10.0.x | |
| dotnet-quality: 'preview' | |
| - name: Get version info | |
| id: version | |
| shell: bash | |
| run: | | |
| VERSION="${GITHUB_REF#refs/tags/v}" | |
| ASSEMBLY_VERSION="${VERSION%%-*}" | |
| COMMIT_SHA="${GITHUB_SHA:0:7}" | |
| echo "VERSION=$VERSION" >> $GITHUB_OUTPUT | |
| echo "ASSEMBLY_VERSION=$ASSEMBLY_VERSION" >> $GITHUB_OUTPUT | |
| echo "COMMIT_SHA=$COMMIT_SHA" >> $GITHUB_OUTPUT | |
| echo "Building version $VERSION (assembly: $ASSEMBLY_VERSION) +$COMMIT_SHA" | |
| - name: Build | |
| run: | | |
| dotnet build src/NumSharp.Core/NumSharp.Core.csproj \ | |
| --configuration Release \ | |
| -p:NoWarn=${{ env.DOTNET_NOWARN }} \ | |
| -p:Version=${{ steps.version.outputs.VERSION }} \ | |
| -p:AssemblyVersion=${{ steps.version.outputs.ASSEMBLY_VERSION }} \ | |
| -p:FileVersion=${{ steps.version.outputs.ASSEMBLY_VERSION }} \ | |
| -p:PackageVersion=${{ steps.version.outputs.VERSION }} \ | |
| -p:SourceRevisionId=${{ steps.version.outputs.COMMIT_SHA }} | |
| dotnet build src/NumSharp.Bitmap/NumSharp.Bitmap.csproj \ | |
| --configuration Release \ | |
| -p:NoWarn=${{ env.DOTNET_NOWARN }} \ | |
| -p:Version=${{ steps.version.outputs.VERSION }} \ | |
| -p:AssemblyVersion=${{ steps.version.outputs.ASSEMBLY_VERSION }} \ | |
| -p:FileVersion=${{ steps.version.outputs.ASSEMBLY_VERSION }} \ | |
| -p:PackageVersion=${{ steps.version.outputs.VERSION }} \ | |
| -p:SourceRevisionId=${{ steps.version.outputs.COMMIT_SHA }} | |
| - name: Pack | |
| run: | | |
| mkdir -p artifacts/nuget | |
| dotnet pack src/NumSharp.Core/NumSharp.Core.csproj \ | |
| --configuration Release \ | |
| --no-build \ | |
| --output artifacts/nuget \ | |
| -p:NoWarn=${{ env.DOTNET_NOWARN }} \ | |
| -p:Version=${{ steps.version.outputs.VERSION }} \ | |
| -p:AssemblyVersion=${{ steps.version.outputs.ASSEMBLY_VERSION }} \ | |
| -p:FileVersion=${{ steps.version.outputs.ASSEMBLY_VERSION }} \ | |
| -p:PackageVersion=${{ steps.version.outputs.VERSION }} | |
| dotnet pack src/NumSharp.Bitmap/NumSharp.Bitmap.csproj \ | |
| --configuration Release \ | |
| --no-build \ | |
| --output artifacts/nuget \ | |
| -p:NoWarn=${{ env.DOTNET_NOWARN }} \ | |
| -p:Version=${{ steps.version.outputs.VERSION }} \ | |
| -p:AssemblyVersion=${{ steps.version.outputs.ASSEMBLY_VERSION }} \ | |
| -p:FileVersion=${{ steps.version.outputs.ASSEMBLY_VERSION }} \ | |
| -p:PackageVersion=${{ steps.version.outputs.VERSION }} | |
| echo "Packages built:" | |
| ls -la artifacts/nuget/ | |
| - name: Upload NuGet Packages | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: nuget-packages | |
| path: artifacts/nuget/*.nupkg | |
| retention-days: 5 | |
| create-release: | |
| needs: build-nuget | |
| if: startsWith(github.ref, 'refs/tags/v') | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Extract version | |
| id: version | |
| run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT | |
| - name: Download NuGet Packages | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: nuget-packages | |
| path: artifacts | |
| - name: Generate checksums | |
| run: | | |
| cd artifacts | |
| for f in *.nupkg; do | |
| sha256sum "$f" | cut -d' ' -f1 > "${f}.sha256" | |
| echo "${f}: $(cat ${f}.sha256)" | |
| done | |
| - name: Check if prerelease | |
| id: prerelease | |
| run: | | |
| if [[ "${{ steps.version.outputs.VERSION }}" == *"-"* ]]; then | |
| echo "IS_PRERELEASE=true" >> $GITHUB_OUTPUT | |
| else | |
| echo "IS_PRERELEASE=false" >> $GITHUB_OUTPUT | |
| fi | |
| - name: Create Release | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| files: | | |
| artifacts/*.nupkg | |
| artifacts/*.sha256 | |
| draft: false | |
| prerelease: ${{ steps.prerelease.outputs.IS_PRERELEASE }} | |
| generate_release_notes: true | |
| body: | | |
| ## NumSharp v${{ steps.version.outputs.VERSION }} | |
| ### Install via NuGet | |
| ``` | |
| dotnet add package NumSharp --version ${{ steps.version.outputs.VERSION }} | |
| dotnet add package NumSharp.Bitmap --version ${{ steps.version.outputs.VERSION }} | |
| ``` | |
| ### Packages | |
| | Package | NuGet | | |
| |---------|-------| | |
| | NumSharp | [](https://www.nuget.org/packages/NumSharp/${{ steps.version.outputs.VERSION }}) | | |
| | NumSharp.Bitmap | [](https://www.nuget.org/packages/NumSharp.Bitmap/${{ steps.version.outputs.VERSION }}) | | |
| publish-nuget: | |
| needs: build-nuget | |
| if: startsWith(github.ref, 'refs/tags/v') | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Download NuGet Packages | |
| uses: actions/download-artifact@v4 | |
| with: | |
| name: nuget-packages | |
| path: artifacts | |
| - name: Setup .NET | |
| uses: actions/setup-dotnet@v4 | |
| with: | |
| dotnet-version: '8.0.x' | |
| - name: Push to NuGet | |
| run: | | |
| for package in artifacts/*.nupkg; do | |
| echo "Pushing $package..." | |
| dotnet nuget push "$package" \ | |
| --api-key ${{ secrets.NUGETAPIKEY }} \ | |
| --source https://api.nuget.org/v3/index.json \ | |
| --skip-duplicate | |
| done |