mirror of
				https://github.com/Z3Prover/z3
				synced 2025-11-03 21:09:11 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			538 lines
		
	
	
	
		
			18 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			538 lines
		
	
	
	
		
			18 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
# Release pipeline (must be triggered manually)
 | 
						|
# * Builds for all platforms (with code signing)
 | 
						|
# * Creates packages for Python and NuGet
 | 
						|
# * Uploads build products to stores (GitHub, NuGet, PyPI)
 | 
						|
 | 
						|
trigger: none
 | 
						|
 | 
						|
variables:
 | 
						|
  ReleaseVersion: '4.11.3'
 | 
						|
 | 
						|
stages:
 | 
						|
 | 
						|
# Builds Z3 on various platforms
 | 
						|
- stage: Build
 | 
						|
  jobs:
 | 
						|
 | 
						|
  - job: MacBuild
 | 
						|
    displayName: "macOS Build"
 | 
						|
    pool:
 | 
						|
      vmImage: "macOS-latest"
 | 
						|
    steps:
 | 
						|
    - task: PythonScript@0
 | 
						|
      displayName: Build
 | 
						|
      inputs:
 | 
						|
        scriptSource: 'filepath'
 | 
						|
        scriptPath: scripts/mk_unix_dist.py
 | 
						|
        arguments: --dotnet-key=$(Build.SourcesDirectory)/resources/z3.snk
 | 
						|
    - script: git clone https://github.com/z3prover/z3test z3test
 | 
						|
      displayName: 'Clone z3test'
 | 
						|
    - task: PythonScript@0
 | 
						|
      displayName: Test
 | 
						|
      inputs:
 | 
						|
        scriptSource: 'filepath'
 | 
						|
        scriptPath: z3test/scripts/test_benchmarks.py
 | 
						|
        arguments: build-dist/z3 z3test/regressions/smt2
 | 
						|
    - task: CopyFiles@2
 | 
						|
      inputs:
 | 
						|
        sourceFolder: dist
 | 
						|
        contents: '*.zip'
 | 
						|
        targetFolder: $(Build.ArtifactStagingDirectory)
 | 
						|
    - task: PublishPipelineArtifact@0
 | 
						|
      inputs:
 | 
						|
        artifactName: 'macOSBuild'
 | 
						|
        targetPath: $(Build.ArtifactStagingDirectory)
 | 
						|
 | 
						|
  - job: MacBuildArm64
 | 
						|
    displayName: "macOS ARM64 Build"
 | 
						|
    pool:
 | 
						|
      vmImage: "macOS-latest"
 | 
						|
    steps:
 | 
						|
    - script: python scripts/mk_unix_dist.py --dotnet-key=$(Build.SourcesDirectory)/resources/z3.snk --arch=arm64 --os=osx-11.0
 | 
						|
    - script: git clone https://github.com/z3prover/z3test z3test
 | 
						|
    - script: cp dist/*.zip $(Build.ArtifactStagingDirectory)/.
 | 
						|
    - task: PublishPipelineArtifact@1
 | 
						|
      inputs:
 | 
						|
        artifactName: 'MacArm64'
 | 
						|
        targetPath: $(Build.ArtifactStagingDirectory)
 | 
						|
      
 | 
						|
  - job: UbuntuBuild
 | 
						|
    displayName: "Ubuntu build"
 | 
						|
    pool:
 | 
						|
      vmImage: "ubuntu-latest"
 | 
						|
    steps:
 | 
						|
    - task: PythonScript@0
 | 
						|
      displayName: Build
 | 
						|
      inputs:
 | 
						|
        scriptSource: 'filepath'
 | 
						|
        scriptPath: scripts/mk_unix_dist.py
 | 
						|
        arguments: --dotnet-key=$(Build.SourcesDirectory)/resources/z3.snk
 | 
						|
    - script: git clone https://github.com/z3prover/z3test z3test
 | 
						|
      displayName: 'Clone z3test'
 | 
						|
    - task: PythonScript@0
 | 
						|
      displayName: Test
 | 
						|
      inputs:
 | 
						|
        scriptSource: 'filepath'
 | 
						|
        scriptPath: z3test/scripts/test_benchmarks.py
 | 
						|
        arguments: build-dist/z3 z3test/regressions/smt2
 | 
						|
    - task: CopyFiles@2
 | 
						|
      inputs:
 | 
						|
        sourceFolder: dist
 | 
						|
        contents: '*.zip'
 | 
						|
        targetFolder: $(Build.ArtifactStagingDirectory)
 | 
						|
    - task: PublishPipelineArtifact@0
 | 
						|
      inputs:
 | 
						|
        artifactName: 'UbuntuBuild'
 | 
						|
        targetPath: $(Build.ArtifactStagingDirectory)
 | 
						|
 | 
						|
  - job: UbuntuDoc
 | 
						|
    displayName: "Ubuntu Doc build"
 | 
						|
    pool:
 | 
						|
      vmImage: "ubuntu-latest"
 | 
						|
    steps:
 | 
						|
    - script: sudo apt-get install ocaml opam libgmp-dev
 | 
						|
    - script: opam init -y
 | 
						|
    - script: eval `opam config env`; opam install zarith ocamlfind -y
 | 
						|
    - script: eval `opam config env`; python scripts/mk_make.py --ml
 | 
						|
    - script: sudo apt-get install doxygen
 | 
						|
    - script: sudo apt-get install graphviz
 | 
						|
    - script: |
 | 
						|
        set -e
 | 
						|
        cd build
 | 
						|
        eval `opam config env` 
 | 
						|
        make -j3
 | 
						|
        make -j3 examples
 | 
						|
        make -j3 test-z3
 | 
						|
        cd ..
 | 
						|
    - script: |
 | 
						|
        set -e
 | 
						|
        eval `opam config env` 
 | 
						|
        cd doc
 | 
						|
        python mk_api_doc.py --mld --z3py-package-path=../build/python/z3
 | 
						|
        python mk_params_doc.py 
 | 
						|
        mkdir api/html/ml
 | 
						|
        ocamldoc -html -d api/html/ml -sort -hide Z3 -I $( ocamlfind query zarith ) -I ../build/api/ml ../build/api/ml/z3enums.mli ../build/api/ml/z3.mli
 | 
						|
        cd ..
 | 
						|
    - script: zip -r z3doc.zip doc/api
 | 
						|
    - script: cp z3doc.zip $(Build.ArtifactStagingDirectory)/.
 | 
						|
    - task: PublishPipelineArtifact@0
 | 
						|
      inputs:
 | 
						|
        artifactName: 'UbuntuDoc'
 | 
						|
        targetPath: $(Build.ArtifactStagingDirectory)
 | 
						|
 | 
						|
  - job: LinuxBuilds
 | 
						|
    displayName: "ManyLinux build"
 | 
						|
    variables:
 | 
						|
      name: ManyLinux
 | 
						|
      image: "quay.io/pypa/manylinux2010_x86_64:latest"
 | 
						|
      python: "/opt/python/cp37-cp37m/bin/python"
 | 
						|
    pool:
 | 
						|
      vmImage: "ubuntu-latest"
 | 
						|
    container: "quay.io/pypa/manylinux2010_x86_64:latest"
 | 
						|
    steps:
 | 
						|
    - task: PythonScript@0
 | 
						|
      displayName: Build
 | 
						|
      inputs:
 | 
						|
        scriptSource: 'filepath'
 | 
						|
        scriptPath: scripts/mk_unix_dist.py
 | 
						|
        arguments: --nodotnet --nojava
 | 
						|
        pythonInterpreter: $(python)
 | 
						|
    - script: git clone https://github.com/z3prover/z3test z3test
 | 
						|
      displayName: 'Clone z3test'
 | 
						|
    - task: PythonScript@0
 | 
						|
      displayName: Test
 | 
						|
      inputs:
 | 
						|
        scriptSource: 'filepath'
 | 
						|
        scriptPath: z3test/scripts/test_benchmarks.py
 | 
						|
        arguments: build-dist/z3 z3test/regressions/smt2
 | 
						|
        pythonInterpreter: $(python)
 | 
						|
    - task: CopyFiles@2
 | 
						|
      inputs:
 | 
						|
        sourceFolder: dist
 | 
						|
        contents: '*.zip'
 | 
						|
        targetFolder: $(Build.ArtifactStagingDirectory)
 | 
						|
    - task: PublishPipelineArtifact@0
 | 
						|
      inputs:
 | 
						|
        artifactName: 'ManyLinuxBuild'
 | 
						|
        targetPath: $(Build.ArtifactStagingDirectory)
 | 
						|
  
 | 
						|
  - template: build-win-signed.yml
 | 
						|
    parameters:
 | 
						|
      ReleaseVersion: $(ReleaseVersion)
 | 
						|
      BuildArchitecture: 'x64'
 | 
						|
 | 
						|
  - template: build-win-signed.yml
 | 
						|
    parameters:
 | 
						|
      ReleaseVersion: $(ReleaseVersion)
 | 
						|
      BuildArchitecture: 'x86'
 | 
						|
 | 
						|
 | 
						|
# Creates Z3 packages in various formats
 | 
						|
- stage: Package
 | 
						|
  jobs:
 | 
						|
 | 
						|
  - job: NuGet64
 | 
						|
    displayName: "NuGet 64 packaging"
 | 
						|
    pool:
 | 
						|
      vmImage: "windows-latest"
 | 
						|
    steps:
 | 
						|
    - powershell: write-host $(System.DefinitionId)
 | 
						|
      displayName: 'System.DefinitionId'
 | 
						|
    - powershell: write-host $(Build.BuildId)
 | 
						|
      displayName: 'Build.BuildId'
 | 
						|
    - powershell: write-host $(System.TeamProjectId)
 | 
						|
      displayName: 'System.TeamProjectId'
 | 
						|
    - task: DownloadPipelineArtifact@2
 | 
						|
      displayName: 'Download Win64 Build'
 | 
						|
      inputs:
 | 
						|
        artifact: 'WindowsBuild-x64'
 | 
						|
        path: $(Agent.TempDirectory)\package
 | 
						|
    - task: DownloadPipelineArtifact@2
 | 
						|
      displayName: 'Download Ubuntu Build'
 | 
						|
      inputs:
 | 
						|
        artifact: 'UbuntuBuild'
 | 
						|
        path: $(Agent.TempDirectory)\package
 | 
						|
    - task: DownloadPipelineArtifact@2
 | 
						|
      displayName: 'Download macOS Build'
 | 
						|
      inputs:
 | 
						|
        artifact: 'macOSBuild'
 | 
						|
        path: $(Agent.TempDirectory)\package
 | 
						|
    - task: NuGetToolInstaller@0
 | 
						|
      inputs:
 | 
						|
        versionSpec: 5.x
 | 
						|
        checkLatest: false        
 | 
						|
    - task: PythonScript@0
 | 
						|
      displayName: 'Python: assemble files'
 | 
						|
      inputs:
 | 
						|
        scriptSource: 'filepath'
 | 
						|
        scriptPath: scripts\mk_nuget_task.py
 | 
						|
        workingDirectory: $(Agent.TempDirectory)\package
 | 
						|
        arguments:
 | 
						|
          $(Agent.TempDirectory)\package
 | 
						|
          $(ReleaseVersion)
 | 
						|
          $(Build.Repository.Uri)
 | 
						|
          $(Build.SourceBranchName)
 | 
						|
          $(Build.SourceVersion)
 | 
						|
          $(Build.SourcesDirectory)
 | 
						|
          symbols
 | 
						|
    - task: NugetCommand@2
 | 
						|
      displayName: 'NuGet Pack Symbols'
 | 
						|
      inputs:
 | 
						|
        command: custom
 | 
						|
        arguments: 'pack $(Agent.TempDirectory)\package\out\Microsoft.Z3.sym.nuspec -OutputDirectory $(Build.ArtifactStagingDirectory) -Verbosity detailed -Symbols -SymbolPackageFormat snupkg -BasePath $(Agent.TempDirectory)\package\out' 
 | 
						|
    - task: EsrpCodeSigning@1
 | 
						|
      displayName: 'Sign Package'
 | 
						|
      inputs:
 | 
						|
        ConnectedServiceName: 'z3-esrp-signing-2'
 | 
						|
        FolderPath: $(Build.ArtifactStagingDirectory)
 | 
						|
        Pattern: Microsoft.Z3.$(ReleaseVersion).nupkg
 | 
						|
        signConfigType: 'inlineSignParams'
 | 
						|
        inlineOperation: |
 | 
						|
          [
 | 
						|
            {
 | 
						|
              "KeyCode" : "CP-401405",
 | 
						|
              "OperationCode" : "NuGetSign",
 | 
						|
              "Parameters" : {},
 | 
						|
              "ToolName" : "sign",
 | 
						|
              "ToolVersion" : "1.0"
 | 
						|
            },
 | 
						|
            {
 | 
						|
              "KeyCode" : "CP-401405",
 | 
						|
              "OperationCode" : "NuGetVerify",
 | 
						|
              "Parameters" : {},
 | 
						|
              "ToolName" : "sign",
 | 
						|
              "ToolVersion" : "1.0"
 | 
						|
            }
 | 
						|
          ]
 | 
						|
        SessionTimeout: '60'
 | 
						|
        MaxConcurrency: '50'
 | 
						|
        MaxRetryAttempts: '5'
 | 
						|
    - task: EsrpCodeSigning@1
 | 
						|
      displayName: 'Sign Symbol Package'
 | 
						|
      inputs:
 | 
						|
        ConnectedServiceName: 'z3-esrp-signing-2'
 | 
						|
        FolderPath: $(Build.ArtifactStagingDirectory)
 | 
						|
        Pattern: Microsoft.Z3.$(ReleaseVersion).snupkg
 | 
						|
        signConfigType: 'inlineSignParams'
 | 
						|
        inlineOperation: |
 | 
						|
          [
 | 
						|
            {
 | 
						|
              "KeyCode" : "CP-401405",
 | 
						|
              "OperationCode" : "NuGetSign",
 | 
						|
              "Parameters" : {},
 | 
						|
              "ToolName" : "sign",
 | 
						|
              "ToolVersion" : "1.0"
 | 
						|
            },
 | 
						|
            {
 | 
						|
              "KeyCode" : "CP-401405",
 | 
						|
              "OperationCode" : "NuGetVerify",
 | 
						|
              "Parameters" : {},
 | 
						|
              "ToolName" : "sign",
 | 
						|
              "ToolVersion" : "1.0"
 | 
						|
            }
 | 
						|
          ]
 | 
						|
        SessionTimeout: '60'
 | 
						|
        MaxConcurrency: '50'
 | 
						|
        MaxRetryAttempts: '5'        
 | 
						|
    - task: PublishPipelineArtifact@1
 | 
						|
      inputs:
 | 
						|
        targetPath: $(Build.ArtifactStagingDirectory)
 | 
						|
        artifactName: 'NuGet'
 | 
						|
 | 
						|
  - job: NuGet32
 | 
						|
    displayName: "NuGet 32 packaging"
 | 
						|
    pool:
 | 
						|
      vmImage: "windows-latest"
 | 
						|
    steps:
 | 
						|
    - powershell: write-host $(System.DefinitionId)
 | 
						|
      displayName: 'System.DefinitionId'
 | 
						|
    - powershell: write-host $(Build.BuildId)
 | 
						|
      displayName: 'Build.BuildId'
 | 
						|
    - powershell: write-host $(System.TeamProjectId)
 | 
						|
      displayName: 'System.TeamProjectId'
 | 
						|
    - task: DownloadPipelineArtifact@2
 | 
						|
      displayName: 'Download Win32 Build'
 | 
						|
      inputs:
 | 
						|
        artifact: 'WindowsBuild-x86'
 | 
						|
        path: $(Agent.TempDirectory)\package
 | 
						|
    - task: NuGetToolInstaller@0
 | 
						|
      inputs:
 | 
						|
        versionSpec: 5.x
 | 
						|
        checkLatest: false        
 | 
						|
    - task: PythonScript@0
 | 
						|
      displayName: 'Python: assemble files'
 | 
						|
      inputs:
 | 
						|
        scriptSource: 'filepath'
 | 
						|
        scriptPath: scripts\mk_nuget_task.py
 | 
						|
        workingDirectory: $(Agent.TempDirectory)\package
 | 
						|
        arguments:
 | 
						|
          $(Agent.TempDirectory)\package
 | 
						|
          $(ReleaseVersion)
 | 
						|
          $(Build.Repository.Uri)
 | 
						|
          $(Build.SourceBranchName)
 | 
						|
          $(Build.SourceVersion)
 | 
						|
          $(Build.SourcesDirectory)
 | 
						|
          symbols
 | 
						|
          x86
 | 
						|
    - task: NugetCommand@2
 | 
						|
      displayName: 'NuGet Pack Symbols'
 | 
						|
      inputs:
 | 
						|
        command: custom
 | 
						|
        arguments: 'pack $(Agent.TempDirectory)\package\out\Microsoft.Z3.x86.sym.nuspec -OutputDirectory $(Build.ArtifactStagingDirectory) -Verbosity detailed -Symbols -SymbolPackageFormat snupkg -BasePath $(Agent.TempDirectory)\package\out' 
 | 
						|
    - task: EsrpCodeSigning@1
 | 
						|
      displayName: 'Sign Package'
 | 
						|
      inputs:
 | 
						|
        ConnectedServiceName: 'z3-esrp-signing-2'
 | 
						|
        FolderPath: $(Build.ArtifactStagingDirectory)
 | 
						|
        Pattern: Microsoft.Z3.x86.$(ReleaseVersion).nupkg
 | 
						|
        signConfigType: 'inlineSignParams'
 | 
						|
        inlineOperation: |
 | 
						|
          [
 | 
						|
            {
 | 
						|
              "KeyCode" : "CP-401405",
 | 
						|
              "OperationCode" : "NuGetSign",
 | 
						|
              "Parameters" : {},
 | 
						|
              "ToolName" : "sign",
 | 
						|
              "ToolVersion" : "1.0"
 | 
						|
            },
 | 
						|
            {
 | 
						|
              "KeyCode" : "CP-401405",
 | 
						|
              "OperationCode" : "NuGetVerify",
 | 
						|
              "Parameters" : {},
 | 
						|
              "ToolName" : "sign",
 | 
						|
              "ToolVersion" : "1.0"
 | 
						|
            }
 | 
						|
          ]
 | 
						|
        SessionTimeout: '60'
 | 
						|
        MaxConcurrency: '50'
 | 
						|
        MaxRetryAttempts: '5'
 | 
						|
    - task: EsrpCodeSigning@1
 | 
						|
      displayName: 'Sign Symbol Package'
 | 
						|
      inputs:
 | 
						|
        ConnectedServiceName: 'z3-esrp-signing-2'
 | 
						|
        FolderPath: $(Build.ArtifactStagingDirectory)
 | 
						|
        Pattern: Microsoft.Z3.x86.$(ReleaseVersion).snupkg
 | 
						|
        signConfigType: 'inlineSignParams'
 | 
						|
        inlineOperation: |
 | 
						|
          [
 | 
						|
            {
 | 
						|
              "KeyCode" : "CP-401405",
 | 
						|
              "OperationCode" : "NuGetSign",
 | 
						|
              "Parameters" : {},
 | 
						|
              "ToolName" : "sign",
 | 
						|
              "ToolVersion" : "1.0"
 | 
						|
            },
 | 
						|
            {
 | 
						|
              "KeyCode" : "CP-401405",
 | 
						|
              "OperationCode" : "NuGetVerify",
 | 
						|
              "Parameters" : {},
 | 
						|
              "ToolName" : "sign",
 | 
						|
              "ToolVersion" : "1.0"
 | 
						|
            }
 | 
						|
          ]
 | 
						|
        SessionTimeout: '60'
 | 
						|
        MaxConcurrency: '50'
 | 
						|
        MaxRetryAttempts: '5'        
 | 
						|
    - task: PublishPipelineArtifact@1
 | 
						|
      inputs:
 | 
						|
        targetPath: $(Build.ArtifactStagingDirectory)
 | 
						|
        artifactName: 'NuGet32'
 | 
						|
 | 
						|
 | 
						|
  - job: PythonPackage
 | 
						|
    displayName: "Python packaging"
 | 
						|
    pool:
 | 
						|
      vmImage: "ubuntu-latest"
 | 
						|
    steps:
 | 
						|
    - task: DownloadPipelineArtifact@2
 | 
						|
      displayName: 'Download macOS Build'
 | 
						|
      inputs:
 | 
						|
        artifact: 'macOSBuild'
 | 
						|
        path: $(Agent.TempDirectory)
 | 
						|
    - task: DownloadPipelineArtifact@2
 | 
						|
      displayName: 'Download macOS Arm64 Build'
 | 
						|
      inputs:
 | 
						|
        artifact: 'MacArm64'
 | 
						|
        path: $(Agent.TempDirectory)		
 | 
						|
    - task: DownloadPipelineArtifact@2
 | 
						|
      displayName: 'Download ManyLinux Build'
 | 
						|
      inputs:
 | 
						|
        artifact: 'ManyLinuxBuild'
 | 
						|
        path: $(Agent.TempDirectory)
 | 
						|
    - task: DownloadPipelineArtifact@2
 | 
						|
      displayName: 'Download Win32 Build'
 | 
						|
      inputs:
 | 
						|
        artifact: 'WindowsBuild-x86'
 | 
						|
        path: $(Agent.TempDirectory)
 | 
						|
    - task: DownloadPipelineArtifact@2
 | 
						|
      displayName: 'Download Win64 Build'
 | 
						|
      inputs:
 | 
						|
        artifact: 'WindowsBuild-x64'
 | 
						|
        path: $(Agent.TempDirectory)
 | 
						|
    - script: cd $(Agent.TempDirectory); mkdir osx-x64-bin; cd osx-x64-bin; unzip ../*x64-osx*.zip
 | 
						|
    - script: cd $(Agent.TempDirectory); mkdir osx-arm64-bin; cd osx-arm64-bin; unzip ../*arm64-osx*.zip
 | 
						|
    - script: cd $(Agent.TempDirectory); mkdir libc-bin; cd libc-bin; unzip ../*glibc*.zip    
 | 
						|
    - script: cd $(Agent.TempDirectory); mkdir win32-bin; cd win32-bin; unzip ../*x86-win*.zip
 | 
						|
    - script: cd $(Agent.TempDirectory); mkdir win64-bin; cd win64-bin; unzip ../*x64-win*.zip
 | 
						|
    - script: python3 -m pip install --user -U setuptools wheel
 | 
						|
    - script: cd src/api/python; python3 setup.py sdist
 | 
						|
    # take a look at this PREMIUM HACK I came up with to get around the fact that the azure variable syntax overloads the bash syntax for subshells
 | 
						|
    - script: cd src/api/python; echo $(Agent.TempDirectory)/osx-x64-bin/* | xargs printf 'PACKAGE_FROM_RELEASE=%s\n' | xargs -I '{}' env '{}' python3 setup.py bdist_wheel
 | 
						|
    - script: cd src/api/python; echo $(Agent.TempDirectory)/osx-arm64-bin/* | xargs printf 'PACKAGE_FROM_RELEASE=%s\n' | xargs -I '{}' env '{}' python3 setup.py bdist_wheel
 | 
						|
    - script: cd src/api/python; echo $(Agent.TempDirectory)/libc-bin/* | xargs printf 'PACKAGE_FROM_RELEASE=%s\n' | xargs -I '{}' env '{}' python3 setup.py bdist_wheel
 | 
						|
    - script: cd src/api/python; echo $(Agent.TempDirectory)/win32-bin/* | xargs printf 'PACKAGE_FROM_RELEASE=%s\n' | xargs -I '{}' env '{}' python3 setup.py bdist_wheel
 | 
						|
    - script: cd src/api/python; echo $(Agent.TempDirectory)/win64-bin/* | xargs printf 'PACKAGE_FROM_RELEASE=%s\n' | xargs -I '{}' env '{}' python3 setup.py bdist_wheel
 | 
						|
    - task: PublishPipelineArtifact@0
 | 
						|
      inputs:
 | 
						|
        artifactName: 'PythonPackage'
 | 
						|
        targetPath: src/api/python/dist
 | 
						|
 | 
						|
# Uploads Z3 packages to various package stores
 | 
						|
- stage: Publish
 | 
						|
  jobs:
 | 
						|
 | 
						|
  - job: GitHubPublish
 | 
						|
    condition: eq(1,1)
 | 
						|
    displayName: "Publish to GitHub"
 | 
						|
    pool:
 | 
						|
      vmImage: "windows-latest"
 | 
						|
    steps:
 | 
						|
    - task: DownloadPipelineArtifact@2
 | 
						|
      displayName: 'Download Ubuntu Build'
 | 
						|
      inputs:
 | 
						|
        artifact: 'UbuntuBuild'
 | 
						|
        path: $(Agent.TempDirectory)
 | 
						|
    - task: DownloadPipelineArtifact@2
 | 
						|
      displayName: "Download Doc"
 | 
						|
      inputs:
 | 
						|
        artifact: 'UbuntuDoc'
 | 
						|
        path: $(Agent.TempDirectory)
 | 
						|
    - task: DownloadPipelineArtifact@2
 | 
						|
      displayName: 'Download macOS Build'
 | 
						|
      inputs:
 | 
						|
        artifact: 'macOSBuild'
 | 
						|
        path: $(Agent.TempDirectory)
 | 
						|
    - task: DownloadPipelineArtifact@2
 | 
						|
      displayName: 'Download macOSArm64 Build'
 | 
						|
      inputs:
 | 
						|
        artifact: 'MacArm64'
 | 
						|
        path: $(Agent.TempDirectory)	
 | 
						|
    - task: DownloadPipelineArtifact@2
 | 
						|
      displayName: 'Download Win32 Build'
 | 
						|
      inputs:
 | 
						|
        artifact: 'WindowsBuild-x86'
 | 
						|
        path: $(Agent.TempDirectory)
 | 
						|
    - task: DownloadPipelineArtifact@2
 | 
						|
      displayName: "Download Python"
 | 
						|
      inputs:
 | 
						|
        artifactName: 'PythonPackage'
 | 
						|
        path: $(Agent.TempDirectory)
 | 
						|
    - task: DownloadPipelineArtifact@2
 | 
						|
      displayName: 'Download Win64 Build'
 | 
						|
      inputs:
 | 
						|
        artifact: 'WindowsBuild-x64'
 | 
						|
        path: $(Agent.TempDirectory)
 | 
						|
    - task: DownloadPipelineArtifact@2
 | 
						|
      displayName: 'Download NuGet64 Package'
 | 
						|
      inputs:
 | 
						|
        artifact: 'NuGet'
 | 
						|
        path: $(Agent.TempDirectory)	
 | 
						|
    - task: DownloadPipelineArtifact@2
 | 
						|
      displayName: 'Download NuGet32 Package'
 | 
						|
      inputs:
 | 
						|
        artifact: 'NuGet32'
 | 
						|
        path: $(Agent.TempDirectory)	
 | 
						|
    - task: GitHubRelease@0
 | 
						|
      inputs:
 | 
						|
        gitHubConnection: Z3Prover
 | 
						|
        repositoryName: $(Build.Repository.Name)
 | 
						|
        action: 'create'
 | 
						|
        target: '$(Build.SourceVersion)'
 | 
						|
        tagSource: 'manual'
 | 
						|
        tag: 'z3-$(ReleaseVersion)'
 | 
						|
        title: 'z3-$(ReleaseVersion)'
 | 
						|
        releaseNotesSource: 'input'
 | 
						|
        releaseNotes: '$(ReleaseVersion) release'
 | 
						|
        assets: '$(Agent.TempDirectory)/*.*'
 | 
						|
        isDraft: true
 | 
						|
        isPreRelease: true
 | 
						|
 | 
						|
     
 | 
						|
  - job: NuGetPublish
 | 
						|
    condition: eq(1,0)
 | 
						|
    displayName: "Publish to NuGet.org"
 | 
						|
    steps:
 | 
						|
    - task: DownloadPipelineArtifact@2
 | 
						|
      displayName: 'Download NuGet Package'
 | 
						|
      inputs:
 | 
						|
        artifact: 'NuGetPackage'
 | 
						|
        path: $(Agent.TempDirectory)
 | 
						|
    - task: NuGetToolInstaller@0
 | 
						|
      inputs:
 | 
						|
        versionSpec: 5.x
 | 
						|
        checkLatest: false
 | 
						|
    - task: NuGetCommand@2
 | 
						|
      inputs:
 | 
						|
        command: push
 | 
						|
        nuGetFeedType: External
 | 
						|
        publishFeedCredentials: $(NugetZ3)
 | 
						|
        packagesToPush: $(Agent.TempDirectory)/*.nupkg
 | 
						|
 | 
						|
  # Enable on release:
 | 
						|
  - job: PyPIPublish
 | 
						|
    condition: eq(1,1)
 | 
						|
    displayName: "Publish to PyPI"
 | 
						|
    pool:
 | 
						|
      vmImage: "ubuntu-latest"
 | 
						|
    steps:
 | 
						|
    - task: DownloadPipelineArtifact@2
 | 
						|
      inputs:
 | 
						|
        artifact: 'PythonPackage'
 | 
						|
        path: dist
 | 
						|
    - task: DownloadSecureFile@1
 | 
						|
      name: pypircs
 | 
						|
      inputs:
 | 
						|
        secureFile: 'pypircs'
 | 
						|
    - script: python3 -m pip install --upgrade pip
 | 
						|
    - script: python3 -m pip install --user -U setuptools importlib_metadata wheel twine 
 | 
						|
    - script: python3 -m twine upload --config-file $(pypircs.secureFilePath) -r $(pypiReleaseServer) dist/*
 |