diff --git a/.azure-pipelines/client.yml b/.azure-pipelines/client.yml index c92f1c1ef562..3a8ead1d5c75 100644 --- a/.azure-pipelines/client.yml +++ b/.azure-pipelines/client.yml @@ -6,28 +6,25 @@ trigger: - master +variables: + PythonVersion: '3.6' + jobs: -- job: 'Build_Target_Packages' +- job: 'Build' pool: - vmImage: 'ubuntu-16.04' + vmImage: 'ubuntu-16.04' steps: - task: UsePythonVersion@0 - displayName: 'Use Python 3.6' + displayName: 'Use Python $(PythonVersion)' inputs: - versionSpec: 3.6 + versionSpec: $(PythonVersion) - script: | - pip install wheel setuptools pathlib Jinja2 twine readme-renderer[md] + pip install wheel setuptools pathlib twine readme-renderer[md] displayName: 'Prep Environment' - - task: PythonScript@0 - displayName: 'Analyze dependencies' - inputs: - scriptPath: 'scripts/analyze_deps.py' - arguments: '--verbose --out "$(Build.SourcesDirectory)/dependencies.html"' - - task: PythonScript@0 displayName: 'Generate Packages' inputs: @@ -38,59 +35,83 @@ jobs: twine check $(Build.ArtifactStagingDirectory)/* displayName: 'Verify Readme' - - task: CopyFiles@2 - displayName: 'Move Dependencies Report to Build Artifacts' + - task: PublishBuildArtifacts@1 + displayName: 'Publish Artifacts' + condition: succeededOrFailed() + +- job: 'Analyze' + + dependsOn: + - 'Build' + + pool: + vmImage: 'ubuntu-16.04' + + steps: + - task: UsePythonVersion@0 + displayName: 'Use Python $(PythonVersion)' inputs: - SourceFolder: '$(Build.SourcesDirectory)' - Contents: dependencies.html - TargetFolder: '$(Build.ArtifactStagingDirectory)' - condition: always() + versionSpec: '$(PythonVersion)' + + - script: | + pip install wheel Jinja2 + displayName: 'Prep Environment' + + - task: PythonScript@0 + displayName: 'Analyze dependencies' + enabled: true + inputs: + scriptPath: 'scripts/analyze_deps.py' + arguments: '--verbose --out "$(Build.ArtifactStagingDirectory)/dependencies.html"' + + - task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0 + # ComponentGovernance is currently unable to run on pull requests of public projects. Running on non-PR + # builds should be sufficient. + condition: and(succeededOrFailed(), ne(variables['Build.Reason'],'PullRequest')) + displayName: 'Component Detection' - task: PublishBuildArtifacts@1 + # To Publish artifacts generated by the 'Analyze dependencies' task under 'Analyze' job displayName: 'Publish Artifacts' condition: succeededOrFailed() - job: 'Generic_Tests' + dependsOn: - - 'Build_Target_Packages' + - 'Build' + strategy: matrix: - Linux_Python27: - os.name: 'Linux' - os.vmImage: 'ubuntu-16.04' - python.version: '2.7' - Linux_Python34: - os.name: 'Linux' - os.vmImage: 'ubuntu-16.04' - python.version: '3.4' - Linux_Python35: - os.name: 'Linux' - os.vmImage: 'ubuntu-16.04' - python.version: '3.5' + Linux_Python27: + OSVmImage: 'ubuntu-16.04' + PythonVersion: '2.7' + Linux_Python34: + OSVmImage: 'ubuntu-16.04' + PythonVersion: '3.4' + Linux_Python35: + OSVmImage: 'ubuntu-16.04' + PythonVersion: '3.5' Linux_Python36: - os.name: 'Linux' - os.vmImage: 'ubuntu-16.04' - python.version: '3.6' + OSVmImage: 'ubuntu-16.04' + PythonVersion: '3.6' Linux_Python37: - os.name: 'Linux' - os.vmImage: 'ubuntu-16.04' - python.version: '3.7' + OSVmImage: 'ubuntu-16.04' + PythonVersion: '3.7' Windows_Python35: - os.name: 'Windows' - os.vmImage: 'vs2017-win2016' - python.version: '3.5' + OSVmImage: 'vs2017-win2016' + PythonVersion: '3.5' MacOS_Python27: - os.name: 'MacOS' - os.vmImage: 'macOS-10.13' - python.version: '2.7' + OSVmImage: 'macOS-10.13' + PythonVersion: '2.7' + pool: - vmImage: '$(os.vmImage)' + vmImage: '$(OSVmImage)' steps: - task: UsePythonVersion@0 - displayName: 'Use Python $(python.version)' + displayName: 'Use Python $(PythonVersion)' inputs: - versionSpec: '$(python.version)' + versionSpec: '$(PythonVersion)' - script: | pip install pathlib twine codecov beautifulsoup4 @@ -125,12 +146,15 @@ jobs: reportDirectory: '$(Build.SourcesDirectory)/htmlcov' - job: Test_Alpha_Python + timeoutInMinutes: 90 condition: eq(variables['long_running_tests'], True) dependsOn: - - 'Build_Target_Packages' + - 'Build' + pool: vmImage: 'ubuntu-16.04' + steps: - task: UsePythonVersion@0 displayName: 'Use Python 3.7 For Build Tools' @@ -146,9 +170,7 @@ jobs: cd debug ../configure --enable-optimizations --prefix=$HOME make install - cd $(Build.SourcesDirectory) - PATH=/home/vsts/bin:$PATH python3 -m ensurepip python ./scripts/devops_tasks/setup_execute_tests.py -p python3 "$(build_targeting_string)" @@ -156,12 +178,15 @@ jobs: continueOnError: true - job: Test_PyPy + timeoutInMinutes: 90 condition: eq(variables['long_running_tests'], True) dependsOn: - - 'Build_Target_Packages' + - 'Build' + pool: vmImage: 'ubuntu-16.04' + steps: - task: UsePythonVersion@0 displayName: 'Use Python 3.7 For Build Tools' @@ -175,10 +200,8 @@ jobs: - script: | cd ~/ wget https://bitbucket.org/pypy/pypy/downloads/pypy3-v6.0.0-linux64.tar.bz2 - tar xf pypy3-v6.0.0-linux64.tar.bz2 - - cd $(Build.SourcesDirectory) - + tar xf pypy3-v6.0.0-linux64.tar.bz2 + cd $(Build.SourcesDirectory) PATH=/home/vsts/pypy3-v6.0.0-linux64/bin/:$PATH pypy3 -m ensurepip python ./scripts/devops_tasks/setup_execute_tests.py -p pypy3 "$(build_targeting_string)"