Codebase list pypsrp / 865edcd2-2c4a-448a-b3a1-19e09c879cbe/upstream azure-pipelines.yml
865edcd2-2c4a-448a-b3a1-19e09c879cbe/upstream

Tree @865edcd2-2c4a-448a-b3a1-19e09c879cbe/upstream (Download .tar.gz)

azure-pipelines.yml @865edcd2-2c4a-448a-b3a1-19e09c879cbe/upstreamraw · history · blame

trigger:
  branches:
    include:
    - master
  tags:
    include:
    - v*
  paths:
    exclude:
    - CHANGELOG.md
    - LICENSE
    - README.md

stages:
- stage: Test
  jobs:

  - job: Test_Linux
    pool:
      vmImage: ubuntu-18.04
    variables:
      test_realm: domain.test
    strategy:
      matrix:
        Python27:
          python.version: 2.7
          credssp: "requests-credssp"
        Python35:
          python.version: 3.5
          credssp: "requests-credssp"
        Python36:
          python.version: 3.6
          credssp: "requests-credssp"
        Python37:
          python.version: 3.7
          credssp: "requests-credssp"
        Python38:
          python.version: 3.8
          credssp: "requests-credssp"
        Python38-nocredssp:
          python.version: 3.8
          credssp: ""

    steps:
    - task: UsePythonVersion@0
      inputs:
        versionSpec: $(python.version)

    - script: |
        sudo apt-get install -y \
          gcc \
          gss-ntlmssp \
          libkrb5-dev \
          python-dev
      displayName: Install system requirements

    - script: |
        echo "Installing baseline pip packages"
        python -m pip install --upgrade pip setuptools wheel coverage -c tests/constraints.txt

        echo "Installing test requirements"
        python -m pip install $(credssp) -r requirements-test.txt -c tests/constraints.txt

        echo "Installing package"
        python -m pip install . -c tests/constraints.txt
      displayName: Install

    - script: |
        python -m pycodestyle pypsrp --verbose --show-source --statistics
      displayName: Lint

    - script: |
        pytest -v --junitxml junit/test-results.xml --cov pypsrp --cov-report xml --cov-report term-missing
      displayName: Test

    - task: PublishTestResults@2
      inputs:
        testResultsFiles: '**/test-*.xml'
        testRunTitle: $(Agent.OS) - $(Build.BuildNumber) - Python $(python.version)
      displayName: Publish test results
      condition: succeededOrFailed()

    - task: PublishCodeCoverageResults@1
      inputs:
        codeCoverageTool: Cobertura
        summaryFileLocation: $(System.DefaultWorkingDirectory)/**/coverage.xml

    - script: |
        bash <(curl -s https://codecov.io/bash)
      displayName: Upload to codecov.io
      continueOnError: true
      timeoutInMinutes: 3

  - job: Test_Windows
    pool:
      vmImage: windows-2019
    strategy:
      matrix:
        Python27-x86:
          python.version: 2.7
          python.arch: x86
          credssp: "requests-credssp"
        Python27-x64:
          python.version: 2.7
          python.arch: x64
          credssp: "requests-credssp"
        Python35-x86:
          python.version: 3.5
          python.arch: x86
          credssp: "requests-credssp"
        Python35-x64:
          python.version: 3.5
          python.arch: x64
          credssp: "requests-credssp"
        Python36-x86:
          python.version: 3.6
          python.arch: x86
          credssp: "requests-credssp"
        Python36-x64:
          python.version: 3.6
          python.arch: x64
          credssp: "requests-credssp"
        Python37-x86:
          python.version: 3.7
          python.arch: x86
          credssp: "requests-credssp"
        Python37-x64:
          python.version: 3.7
          python.arch: x64
          credssp: "requests-credssp"
        Python38-x86:
          python.version: 3.8
          python.arch: x86
          credssp: "requests-credssp"
        Python38-x64:
          python.version: 3.8
          python.arch: x64
          credssp: "requests-credssp"
        Python38-x64-nocredssp:
          python.version: 3.8
          python.arch: x64
          credssp: ""

    steps:
    - task: UsePythonVersion@0
      inputs:
        versionSpec: $(python.version)
        architecture: $(python.arch)

    - script: |
        echo "Installing baseline pip packages"
        python -m pip install --upgrade pip setuptools wheel coverage -c tests/constraints.txt

        echo "Installing test requirements"
        python -m pip install $(credssp) -r requirements-test.txt -c tests/constraints.txt

        echo "Installing package"
        python -m pip install . -c tests/constraints.txt
      displayName: Install

    - script: |
        python -m pycodestyle pypsrp --verbose --show-source --statistics
      displayName: Lint

    - script: |
        pytest -v --junitxml junit/test-results.xml --cov pypsrp --cov-report xml --cov-report term-missing
      displayName: Test

    - task: PublishTestResults@2
      inputs:
        testResultsFiles: '**/test-*.xml'
        testRunTitle: $(Agent.OS) - $(Build.BuildNumber) - Python $(python.version) $(python.arch)
      displayName: Publish test results
      condition: succeededOrFailed()

    - task: PublishCodeCoverageResults@1
      inputs:
        codeCoverageTool: Cobertura
        summaryFileLocation: $(System.DefaultWorkingDirectory)/**/coverage.xml

    - script: |
        choco.exe install codecov --yes --no-progress
        codecov.exe -f coverage.xml
      displayName: Upload to codecov.io
      continueOnError: true
      timeoutInMinutes: 3

- stage: Publish
  jobs:

  - job: Publish
    pool:
      vmImage: ubuntu-18.04

    steps:
    - task: UsePythonVersion@0
      inputs:
        versionSpec: 3.8

    - script: |
        python -m pip install twine wheel -c tests/constraints.txt
      displayName: Install build requirements

    - script: |
        python setup.py bdist_wheel --universal
        python setup.py sdist
      displayName: Build universal wheel and sdist

    - task: PublishBuildArtifacts@1
      inputs:
        pathToPublish: dist
        artifactName: wheels

    - task: TwineAuthenticate@1
      displayName: Twine Authenticate
      condition: and(succeeded(), startsWith(variables['build.sourceBranch'], 'refs/tags/v'))
      inputs:
        pythonUploadServiceConnection: pypi

    - script: |
        python -m twine upload -r pypi --config-file $(PYPIRC_PATH) dist/*
      condition: and(succeeded(), startsWith(variables['build.sourceBranch'], 'refs/tags/v'))
      displayName: Publish artifact to Pypi