https://github.com/interpretml/interpret
Raw File
Tip revision: 67da4f4913e01340324f07ea95074784db6c337d authored by Interpret ML on 18 September 2019, 08:48:50 UTC
More tests around environment and EBM.
Tip revision: 67da4f4
azure-pipelines.yml
jobs:
- job: 'Build_Native'
  strategy:
    matrix:
      Linux:
        image.name: 'ubuntu-16.04'
      Windows:
        image.name: 'windows-2019'
      Mac:
        image.name: 'macOS-10.13'
    maxParallel: 3
  pool:
    vmImage: '$(image.name)'
  steps:
  - script: |
      sudo apt-get -y install g++-multilib
    displayName: 'Install prereq for linux.'
    condition: in(variables['image.name'], 'ubuntu-16.04')
  - script: |
      chmod +x build.sh
      ./build.sh -32bit
    condition: in(variables['image.name'], 'ubuntu-16.04', 'macOS-10.13')
    displayName: 'Building/moving native code (linux/mac).'
  - script: |
      set PATH=C:\Windows\system32\;C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\
      build.bat -32bit
    condition: in(variables['image.name'], 'windows-2019')
    displayName: 'Building/moving native code. (win)'
  - task: CopyFiles@2
    condition: succeeded()
    inputs:
      sourceFolder: staging
      contents: '*'
      targetFolder: '$(Build.ArtifactStagingDirectory)'
    displayName: 'Move binary to staging'
  - task: PublishBuildArtifacts@1
    inputs:
      pathtoPublish: $(Build.ArtifactStagingDirectory)
      artifactName: native-$(image.name)
    displayName: 'Publish native library'

- job: 'Test_Native'
  dependsOn: 'Build_Native'
  strategy:
    matrix:
      Linux:
        image.name: 'ubuntu-16.04'
      Windows:
        image.name: 'windows-2019'
      Mac:
        image.name: 'macOS-10.13'
    maxParallel: 3
  pool:
    vmImage: '$(image.name)'
  steps:
  - task: DownloadBuildArtifacts@0
    inputs:
      buildType: 'current'
      downloadType: 'specific'
    displayName: 'Download build artifacts'
  - task: CopyFiles@2
    inputs:
      sourceFolder: '$(System.ArtifactsDirectory)'
      contents: '**/lib_ebmcore_*'
      targetFolder: 'staging'
      flattenFolders: true
    displayName: 'Move binary to staging directory'
  - script: |
      sudo apt-get -y install g++-multilib
    displayName: 'Install prereq for linux.'
    condition: in(variables['image.name'], 'ubuntu-16.04')
  - script: |
      /bin/sh ./tests/core/test_core_api.sh -nobuildcore
    condition: in(variables['image.name'], 'ubuntu-16.04', 'macOS-10.13')
    displayName: 'Testing native code (linux/mac).'
  - script: |
      set PATH=C:\Windows\system32\;C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\
      .\tests\core\test_core_api.bat -nobuildcore
    condition: in(variables['image.name'], 'windows-2019')
    displayName: 'Testing native code. (win)'

- job: 'Build_Package'
  dependsOn: 'Build_Native'
  pool:
    vmImage: 'ubuntu-16.04'
  steps:
  - task: DownloadBuildArtifacts@0
    inputs:
      buildType: 'current'
      downloadType: 'specific'
    displayName: 'Download build artifacts'
  - task: UsePythonVersion@0
    inputs:
      versionSpec: '3.6'
      architecture: 'x64'
  - script: python -m pip install --upgrade pip setuptools wheel
    displayName: 'Install tools'
  - task: CopyFiles@2
    inputs:
      sourceFolder: '$(System.ArtifactsDirectory)'
      contents: '**/lib_ebmcore_*'
      targetFolder: 'python/interpret-core/interpret/lib'
      flattenFolders: true
    displayName: 'Move binary to Python layer'
  - script: python setup.py bdist_wheel -d ../../staging
    condition: succeeded()
    workingDirectory: 'python/interpret-core'
    displayName: 'Build wheel (interpret-core)'
  - script: python setup.py bdist_wheel -d ../../staging
    condition: succeeded()
    workingDirectory: 'python/interpret'
    displayName: 'Build wheel (interpret)'
  - task: CopyFiles@2
    condition: succeeded()
    inputs:
      sourceFolder: staging
      contents: '*.whl'
      targetFolder: '$(Build.ArtifactStagingDirectory)/wheel'
    displayName: 'Move wheel for Build Artifact'
  - task: PublishBuildArtifacts@1
    inputs:
      pathtoPublish: '$(Build.ArtifactStagingDirectory)/wheel'
      artifactName: 'wheel'
    displayName: 'Publish wheel as Build Artifact'

- job: 'Test'
  dependsOn: 'Build_Package'
  strategy:
    matrix:
      LinuxPython35:
        python.version: '3.5'
        image.name: 'ubuntu-16.04'
      LinuxPython36:
        python.version: '3.6'
        image.name: 'ubuntu-16.04'
      LinuxPython37:
        python.version: '3.7'
        image.name: 'ubuntu-16.04'
#      WindowsPython35:
#        python.version: '3.5'
#        image.name: 'windows-2019'
      WindowsPython36:
        python.version: '3.6'
        image.name: 'windows-2019'
      WindowsPython37:
        python.version: '3.7'
        image.name: 'windows-2019'
      MacPython35:
        python.version: '3.5'
        image.name: 'macOS-10.13'
      MacPython36:
        python.version: '3.6'
        image.name: 'macOS-10.13'
      MacPython37:
        python.version: '3.7'
        image.name: 'macOS-10.13'
    maxParallel: 9
  pool:
    vmImage: '$(image.name)'
  steps:
  - task: DownloadBuildArtifacts@0
    inputs:
      buildType: 'current'
      downloadType: 'specific'
    displayName: 'Download build artifacts'
  - task: CopyFiles@2
    inputs:
      sourceFolder: '$(System.ArtifactsDirectory)'
      contents: '**/lib_ebmcore_*'
      targetFolder: 'python/interpret-core/interpret/lib'
      flattenFolders: true
    displayName: 'Move binary to Python layer'
  - task: UsePythonVersion@0
    inputs:
      versionSpec: '$(python.version)'
      architecture: 'x64'
  - script: python -m pip install --upgrade pip setuptools wheel
    displayName: 'Install tools'
  - script: |
      python -m pip install numpy scipy
    workingDirectory: python/interpret-core
    displayName: 'Install numpy/scipy first for mis-specified pip packages.'
  - script: |
      mkdir -p ~/.matplotlib
      echo "backend: TkAgg" >> ~/.matplotlib/matplotlibrc
    condition: in(variables['image.name'], 'macOS-10.13')
    displayName: 'Matplotlib patch for mac.'
  - script: |
      python -m pip install -r dev-requirements.txt
    workingDirectory: python/interpret-core
    displayName: 'Install requirements (Windows)'
    condition: in(variables['image.name'], 'windows-2019')
  - script: |
      export LIBRARY_PATH=$LIBRARY_PATH:/opt/hostedtoolcache/Python/3.6.9/x64/lib
      export LIBRARY_PATH=$LIBRARY_PATH:/opt/hostedtoolcache/Python/3.7.4/x64/lib
      python -m pip install -r dev-requirements.txt
    workingDirectory: python/interpret-core
    displayName: 'Install requirements (Non-Windows)'
    condition: in(variables['image.name'], 'ubuntu-16.04', 'macOS-10.13')
  - script: |
      set PATH=%PATH%;%GeckoWebDriver%
      python -m pytest -vv -n auto --runslow --runselenium --doctest-modules --junitxml=junit/test-results.xml --cov=com --cov-report=xml --cov-report=html
    workingDirectory: python/interpret-core
    condition: in(variables['image.name'], 'windows-2019')
    displayName: 'Run pytest (Windows)'
  - script: |
      python -m pytest -vv -n auto --runslow --doctest-modules --junitxml=junit/test-results.xml --cov=com --cov-report=xml --cov-report=html
    workingDirectory: python/interpret-core
    condition: in(variables['image.name'], 'ubuntu-16.04', 'macOS-10.13')
    displayName: 'Run pytest (Non-Windows)'
  - task: PublishTestResults@2
    condition: succeededOrFailed()
    inputs:
      testResultsFiles: '**/test-*.xml'
      testRunTitle: 'Publish test results for Python $(python.version) at $(image.name)'
    displayName: 'Publish test results'
  - task: PublishCodeCoverageResults@1
    inputs:
      codeCoverageTool: Cobertura
      summaryFileLocation: '$(System.DefaultWorkingDirectory)/**/coverage.xml'
      reportDirectory: '$(System.DefaultWorkingDirectory)/**/htmlcov'
    condition: in(variables['image.name'], 'windows-2019')
    displayName: 'Publish test coverage results'

- job: 'Publish_Package'
  dependsOn:
  - 'Test'
  - 'Test_Native'
  pool:
    vmImage: 'ubuntu-16.04'
  steps:
  - task: DownloadBuildArtifacts@0
    inputs:
      buildType: 'current'
      downloadType: 'single'
      artifactName: 'wheel'
  - task: PublishPipelineArtifact@0
    inputs:
      sourceFolder: '$(System.ArtifactsDirectory)'
      artifactName: 'drop'
back to top