aboutsummaryrefslogtreecommitdiffstats
path: root/azure-pipelines.yml
blob: 2010e1844eaf0acc21e83f5a730b38787f0cea2d (plain) (blame)
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
jobs:
- job: Linux
  pool:
    vmImage: ubuntu-16.04
  steps:
  - script: azure-pipelines/build-linux
    displayName: 'Generate, build, and test'
  - task: PublishBuildArtifacts@1
    inputs:
      pathtoPublish: '$(System.DefaultWorkingDirectory)/distfiles.zip'
      artifactName: distfiles
    displayName: 'Upload extra distribution files'
    condition: eq(variables['System.PullRequest.IsFork'], 'False')
  - task: PublishBuildArtifacts@1
    inputs:
      pathtoPublish: '$(System.DefaultWorkingDirectory)/distribution'
      artifactName: distribution
    displayName: 'Upload source distribution'
    condition: eq(variables['System.PullRequest.IsFork'], 'False')
  - task: PublishTestResults@2
    inputs:
      testRunTitle: Linux
      buildPlatform: Linux
- job: Windows
  pool:
    # If updating this, see note in TODO about MSVC wildcard expansion.
    vmImage: windows-2019
  strategy:
    matrix:
      msvc32:
        wordsize: 32
        tool: msvc
      msvc64:
        wordsize: 64
        tool: msvc
      mingw32:
        wordsize: 32
        tool: mingw
      mingw64:
        wordsize: 64
        tool: mingw
    maxParallel: 4
  steps:
  - bash: git config --global core.autocrlf input
    displayName: 'Disable git autocrlf'
  - checkout: self
    displayName: 'Get sources'
  - task: DownloadBuildArtifacts@0
    displayName: 'Download distribution files'
    inputs:
      artifactName: distfiles
      downloadPath: $(System.DefaultWorkingDirectory)
    condition: eq(variables['System.PullRequest.IsFork'], 'False')
  - script: azure-pipelines/build-windows.bat $(wordsize) $(tool)
    displayName: 'Build, test, generate binary distributions'
  - task: PublishBuildArtifacts@1
    inputs:
      pathtoPublish: '$(System.DefaultWorkingDirectory)/distribution'
      artifactName: distribution
    displayName: 'Upload binary distributions'
    condition: eq(variables['System.PullRequest.IsFork'], 'False')
  - task: PublishTestResults@2
    inputs:
      testRunTitle: Windows-$(wordsize)$(tool)
      buildPlatform: Windows-$(wordsize)$(tool)
  dependsOn: Linux
  condition: succeeded()
- job: macOS
  pool:
    vmImage: macOS-10.14
  steps:
  - task: DownloadBuildArtifacts@0
    displayName: 'Download distribution files'
    inputs:
      artifactName: distfiles
      downloadPath: $(System.DefaultWorkingDirectory)
    condition: eq(variables['System.PullRequest.IsFork'], 'False')
  - script: azure-pipelines/build-mac
    displayName: 'Mac build and test'
  - task: PublishTestResults@2
    inputs:
      testRunTitle: MacOS
      buildPlatform: MacOS
  dependsOn: Linux
  condition: succeeded()
- job: AppImage
  pool:
    vmImage: ubuntu-16.04
  steps:
  - script: azure-pipelines/build-appimage
    displayName: 'Build AppImage'
  - task: PublishBuildArtifacts@1
    inputs:
      pathtoPublish: '$(System.DefaultWorkingDirectory)/distribution'
      artifactName: distribution
    displayName: 'Upload AppImage'
    condition: eq(variables['System.PullRequest.IsFork'], 'False')
  - task: PublishTestResults@2
    inputs:
      testRunTitle: AppImage
      buildPlatform: AppImage
  dependsOn: Linux
  condition: succeeded()
- job: Linux32
  pool:
    vmImage: ubuntu-16.04
  steps:
  - script: azure-pipelines/build-linux32
    displayName: 'Linux 32-bit'
  - task: PublishTestResults@2
    inputs:
      testRunTitle: Linux32
      buildPlatform: Linux32
  dependsOn: Linux
  condition: succeeded()
- job: Fuzzers
  pool:
    vmImage: ubuntu-16.04
  steps:
  - script: azure-pipelines/build-fuzzer
    displayName: 'Build Fuzzer'
  dependsOn: Linux
  condition: succeeded()
- job: Sanitizers
  pool:
    vmImage: ubuntu-16.04
  steps:
  - script: azure-pipelines/test-sanitizers
    displayName: 'Sanitizer Tests'
  - task: PublishTestResults@2
    inputs:
      testRunTitle: Sanitizers
      buildPlatform: Sanitizers
  dependsOn: Linux
  condition: succeeded()