name: Build NuGet Package on: workflow_dispatch: inputs: version: description: 'Version number for the NuGet package (e.g., 4.15.5)' required: true default: '4.15.5' push: tags: - 'z3-*' permissions: contents: write jobs: # Build Windows binaries build-windows-x64: runs-on: windows-latest steps: - name: Checkout code uses: actions/checkout@v5 - name: Setup Python uses: actions/setup-python@v5 with: python-version: '3.x' - name: Build Windows x64 shell: cmd run: | call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x64 python scripts\mk_win_dist.py --x64-only --dotnet-key=%GITHUB_WORKSPACE%\resources\z3.snk --assembly-version=${{ github.event.inputs.version || '4.15.5' }} --zip - name: Upload Windows x64 artifact uses: actions/upload-artifact@v4 with: name: windows-x64 path: dist/*.zip retention-days: 1 build-windows-x86: runs-on: windows-latest steps: - name: Checkout code uses: actions/checkout@v5 - name: Setup Python uses: actions/setup-python@v5 with: python-version: '3.x' - name: Build Windows x86 shell: cmd run: | call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x86 python scripts\mk_win_dist.py --x86-only --dotnet-key=%GITHUB_WORKSPACE%\resources\z3.snk --assembly-version=${{ github.event.inputs.version || '4.15.5' }} --zip - name: Upload Windows x86 artifact uses: actions/upload-artifact@v4 with: name: windows-x86 path: dist/*.zip retention-days: 1 build-windows-arm64: runs-on: windows-latest steps: - name: Checkout code uses: actions/checkout@v5 - name: Setup Python uses: actions/setup-python@v5 with: python-version: '3.x' - name: Build Windows ARM64 shell: cmd run: | call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" amd64_arm64 python scripts\mk_win_dist_cmake.py --arm64-only --dotnet-key=%GITHUB_WORKSPACE%\resources\z3.snk --assembly-version=${{ github.event.inputs.version || '4.15.5' }} --zip - name: Upload Windows ARM64 artifact uses: actions/upload-artifact@v4 with: name: windows-arm64 path: build-dist\arm64\dist\*.zip retention-days: 1 build-ubuntu: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v5 - name: Setup Python uses: actions/setup-python@v5 with: python-version: '3.x' - name: Build Ubuntu run: python scripts/mk_unix_dist.py --dotnet-key=$GITHUB_WORKSPACE/resources/z3.snk - name: Upload Ubuntu artifact uses: actions/upload-artifact@v4 with: name: ubuntu path: dist/*.zip retention-days: 1 build-macos-x64: runs-on: macos-13 steps: - name: Checkout code uses: actions/checkout@v5 - name: Setup Python uses: actions/setup-python@v5 with: python-version: '3.x' - name: Build macOS x64 run: python scripts/mk_unix_dist.py --dotnet-key=$GITHUB_WORKSPACE/resources/z3.snk - name: Upload macOS x64 artifact uses: actions/upload-artifact@v4 with: name: macos-x64 path: dist/*.zip retention-days: 1 build-macos-arm64: runs-on: macos-13 steps: - name: Checkout code uses: actions/checkout@v5 - name: Setup Python uses: actions/setup-python@v5 with: python-version: '3.x' - name: Build macOS ARM64 run: python scripts/mk_unix_dist.py --dotnet-key=$GITHUB_WORKSPACE/resources/z3.snk --arch=arm64 - name: Upload macOS ARM64 artifact uses: actions/upload-artifact@v4 with: name: macos-arm64 path: dist/*.zip retention-days: 1 # Package NuGet x64 (includes all platforms except x86) package-nuget-x64: needs: [build-windows-x64, build-windows-arm64, build-ubuntu, build-macos-x64, build-macos-arm64] runs-on: windows-latest steps: - name: Checkout code uses: actions/checkout@v5 - name: Setup Python uses: actions/setup-python@v5 with: python-version: '3.x' - name: Download all artifacts uses: actions/download-artifact@v4 with: path: packages - name: List downloaded artifacts shell: bash run: find packages -type f - name: Move artifacts to flat directory shell: bash run: | mkdir -p package-files find packages -name "*.zip" -exec cp {} package-files/ \; ls -la package-files/ - name: Setup NuGet uses: nuget/setup-nuget@v2 with: nuget-version: 'latest' - name: Assemble NuGet package shell: cmd run: | cd package-files python ..\scripts\mk_nuget_task.py . ${{ github.event.inputs.version || '4.15.5' }} https://github.com/Z3Prover/z3 ${{ github.ref_name }} ${{ github.sha }} ${{ github.workspace }} symbols - name: Pack NuGet package shell: cmd run: | cd package-files nuget pack out\Microsoft.Z3.sym.nuspec -OutputDirectory . -Verbosity detailed -Symbols -SymbolPackageFormat snupkg -BasePath out - name: Upload NuGet package uses: actions/upload-artifact@v4 with: name: nuget-x64 path: | package-files/*.nupkg package-files/*.snupkg retention-days: 30 # Package NuGet x86 package-nuget-x86: needs: [build-windows-x86] runs-on: windows-latest steps: - name: Checkout code uses: actions/checkout@v5 - name: Setup Python uses: actions/setup-python@v5 with: python-version: '3.x' - name: Download x86 artifact uses: actions/download-artifact@v4 with: name: windows-x86 path: packages - name: List downloaded artifacts shell: bash run: find packages -type f - name: Setup NuGet uses: nuget/setup-nuget@v2 with: nuget-version: 'latest' - name: Assemble NuGet package shell: cmd run: | cd packages python ..\scripts\mk_nuget_task.py . ${{ github.event.inputs.version || '4.15.5' }} https://github.com/Z3Prover/z3 ${{ github.ref_name }} ${{ github.sha }} ${{ github.workspace }} symbols x86 - name: Pack NuGet package shell: cmd run: | cd packages nuget pack out\Microsoft.Z3.x86.sym.nuspec -OutputDirectory . -Verbosity detailed -Symbols -SymbolPackageFormat snupkg -BasePath out - name: Upload NuGet package uses: actions/upload-artifact@v4 with: name: nuget-x86 path: | packages/*.nupkg packages/*.snupkg retention-days: 30