summaryrefslogtreecommitdiffstats
path: root/azure-pipelines.yml
blob: 9de04fbf9d14c3fb803ee87c38f2771584ee114b (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
jobs:
- job: Distfiles
  pool:
    vmImage: ubuntu-16.04
  steps:
  - script: build-scripts/make-distfiles
    displayName: 'Create distfiles.zip'
  - task: PublishBuildArtifacts@1
    inputs:
      pathtoPublish: '$(System.DefaultWorkingDirectory)/distfiles.zip'
      artifactName: distfiles
    displayName: 'Upload extra distribution files'
    condition: eq(variables['System.PullRequest.IsFork'], 'False')
- job: Linux
  pool:
    vmImage: ubuntu-16.04
  steps:
  - script: build-scripts/build-linux
    displayName: 'Generate, build, and test'
  - 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: build-scripts/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: Distfiles
  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: build-scripts/build-mac
    displayName: 'Mac build and test'
  - task: PublishTestResults@2
    inputs:
      testRunTitle: MacOS
      buildPlatform: MacOS
  dependsOn: Distfiles
  condition: succeeded()
- job: AppImage
  pool:
    vmImage: ubuntu-16.04
  steps:
  - script: build-scripts/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
- job: Linux32
  pool:
    vmImage: ubuntu-16.04
  steps:
  - script: build-scripts/build-linux32
    displayName: 'Linux 32-bit'
  - task: PublishTestResults@2
    inputs:
      testRunTitle: Linux32
      buildPlatform: Linux32
- job: Fuzzers
  pool:
    vmImage: ubuntu-16.04
  steps:
  - script: build-scripts/build-fuzzer
    displayName: 'Build Fuzzer'
- job: Sanitizers
  pool:
    vmImage: ubuntu-16.04
  steps:
  - script: build-scripts/test-sanitizers
    displayName: 'Sanitizer Tests'
  - task: PublishTestResults@2
    inputs:
      testRunTitle: Sanitizers
      buildPlatform: Sanitizers