summaryrefslogtreecommitdiffstats
path: root/.vsts/linux-coverage.yml
blob: 1112555ab93f9b5ded6d72d539667c1ff4e73b13 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# Current docs for the syntax of this file are at:
#  https://github.com/Microsoft/vsts-agent/blob/master/docs/preview/yamlgettingstarted.md

name: $(BuildDefinitionName)_$(Date:yyyyMMdd)$(Rev:.rr)

queue:
  name: Hosted Linux Preview

trigger:
  branches:
    include:
    - master
    - 3.7
    - 3.6
  paths:
    exclude:
    - Doc/*
    - Tools/*

variables:
  # Copy-pasted from linux-deps.yml until template support arrives
  OPENSSL: 1.1.0g
  OPENSSL_DIR: "$(build.sourcesDirectory)/multissl/openssl/$(OPENSSL)"

steps:
- checkout: self
  clean: true
  fetchDepth: 5

- script: |
   git fetch -q origin $(system.pullRequest.targetBranch)
   if ! git diff --name-only HEAD $(git merge-base HEAD FETCH_HEAD) | grep -qvE '(\.rst$|^Doc|^Misc)'
   then
     echo "Only docs were updated, stopping build process."
     echo "##vso[task.setvariable variable=DocOnly]true"
     exit
   fi
  displayName: Detect doc-only changes
  condition: and(succeeded(), variables['system.pullRequest.targetBranch'])

#- template: linux-deps.yml

# See https://github.com/Microsoft/vsts-agent/blob/master/docs/preview/yamlgettingstarted-templates.md
# For now, we copy/paste the steps
- script: echo "deb-src http://archive.ubuntu.com/ubuntu/ xenial main" > /etc/apt/sources.list.d/python.list && sudo apt-get update
  displayName: 'Update apt-get lists'
  condition: and(succeeded(), ne(variables['DocOnly'], 'true'))

- script: echo ##vso[task.prependpath]$(OPENSSL_DIR)
  displayName: 'Add $(OPENSSL_DIR) to PATH'
- script: >
    sudo apt-get -yq install
    build-essential
    zlib1g-dev
    libbz2-dev
    liblzma-dev
    libncurses5-dev
    libreadline6-dev
    libsqlite3-dev
    libssl-dev
    libgdbm-dev
    tk-dev
    lzma
    lzma-dev
    liblzma-dev
    libffi-dev
    uuid-dev
    xvfb
  displayName: 'Install dependencies'
  condition: and(succeeded(), ne(variables['DocOnly'], 'true'))
- script: python3 Tools/ssl/multissltests.py --steps=library --base-directory $(build.sourcesDirectory)/multissl --openssl $(OPENSSL) --system Linux
  displayName: 'python multissltests.py'
  condition: and(succeeded(), ne(variables['DocOnly'], 'true'))


- script: ./configure --with-pydebug
  displayName: 'Configure CPython (debug)'
  condition: and(succeeded(), ne(variables['DocOnly'], 'true'))

- script: make -s -j4
  displayName: 'Build CPython'
  condition: and(succeeded(), ne(variables['DocOnly'], 'true'))

- script: ./python -m venv venv && ./venv/bin/python -m pip install -U coverage
  displayName: 'Set up virtual environment'
  condition: and(succeeded(), ne(variables['DocOnly'], 'true'))

- script: ./venv/bin/python -m test.pythoninfo
  displayName: 'Display build info'
  condition: and(succeeded(), ne(variables['DocOnly'], 'true'))

- script: xvfb-run ./venv/bin/python -m coverage run --pylib -m test --fail-env-changed -uall,-cpu -x test_multiprocessing_fork -x test_multiprocessing_forkserver -x test_multiprocessing_spawn -x test_concurrent_futures
  displayName: 'Tests with coverage'
  condition: and(succeeded(), ne(variables['DocOnly'], 'true'))

- script: source ./venv/bin/activate && bash <(curl -s https://codecov.io/bash)
  displayName: 'Publish code coverage results'
  condition: and(succeeded(), ne(variables['DocOnly'], 'true'))