.vsts-ci.yml 8.27 KB
Newer Older
1
2
3
trigger:
  branches:
    include:
4
    - master
5
6
7
  tags:
    include:
    - v*
8
9
pr:
- master
10
variables:
11
  AZURE: 'true'
12
  PYTHON_VERSION: 3.9
13
  CONDA_ENV: test-env
14
15
16
17
resources:
  containers:
  - container: ubuntu1404
    image: lightgbm/vsts-agent:ubuntu-14.04
18
19
20
  - container: ubuntu-latest
    image: 'ubuntu:latest'
    options: "--name ci-container -v /usr/bin/docker:/tmp/docker:ro"
21
jobs:
Guolin Ke's avatar
Guolin Ke committed
22
###########################################
23
- job: Linux
Guolin Ke's avatar
Guolin Ke committed
24
###########################################
25
  variables:
26
    COMPILER: gcc
27
    SETUP_CONDA: 'false'
28
29
    OS_NAME: 'linux'
    PRODUCES_ARTIFACTS: 'true'
30
  pool: sh-ubuntu
31
  container: ubuntu1404
32
  strategy:
Guolin Ke's avatar
Guolin Ke committed
33
34
35
36
37
    matrix:
      regular:
        TASK: regular
      sdist:
        TASK: sdist
38
        PYTHON_VERSION: 3.7
Guolin Ke's avatar
Guolin Ke committed
39
40
      bdist:
        TASK: bdist
41
42
43
44
45
      inference:
        TASK: if-else
      mpi_source:
        TASK: mpi
        METHOD: source
46
        PYTHON_VERSION: 3.8
47
48
      gpu_source:
        TASK: gpu
Guolin Ke's avatar
Guolin Ke committed
49
        METHOD: source
50
51
      swig:
        TASK: swig
Guolin Ke's avatar
Guolin Ke committed
52
  steps:
53
  - script: |
54
      echo "##vso[task.setvariable variable=BUILD_DIRECTORY]$BUILD_SOURCESDIRECTORY"
55
      echo "##vso[task.setvariable variable=LGB_VER]$(head -n 1 VERSION.txt)"
Nikita Titov's avatar
Nikita Titov committed
56
57
      echo "##vso[task.prependpath]$CONDA/bin"
      AMDAPPSDK_PATH=$BUILD_SOURCESDIRECTORY/AMDAPPSDK
58
59
60
61
62
      echo "##vso[task.setvariable variable=AMDAPPSDK_PATH]$AMDAPPSDK_PATH"
      LD_LIBRARY_PATH=$AMDAPPSDK_PATH/lib/x86_64:$LD_LIBRARY_PATH
      echo "##vso[task.setvariable variable=LD_LIBRARY_PATH]$LD_LIBRARY_PATH"
      echo "##vso[task.setvariable variable=OPENCL_VENDOR_PATH]$AMDAPPSDK_PATH/etc/OpenCL/vendors"
    displayName: 'Set variables'
63
  - bash: $(Build.SourcesDirectory)/.ci/setup.sh
64
    displayName: Setup
65
  - bash: $(Build.SourcesDirectory)/.ci/test.sh
66
    displayName: Test
Nikita Titov's avatar
Nikita Titov committed
67
  - task: PublishBuildArtifacts@1
68
    condition: and(succeeded(), in(variables['TASK'], 'regular', 'sdist', 'bdist', 'swig'), not(startsWith(variables['Build.SourceBranch'], 'refs/pull/')))
Nikita Titov's avatar
Nikita Titov committed
69
70
71
72
    inputs:
      pathtoPublish: '$(Build.ArtifactStagingDirectory)'
      artifactName: PackageAssets
      artifactType: container
Guolin Ke's avatar
Guolin Ke committed
73
###########################################
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
- job: Linux_latest
###########################################
  variables:
    COMPILER: clang
    DEBIAN_FRONTEND: 'noninteractive'
    IN_UBUNTU_LATEST_CONTAINER: 'true'
    OS_NAME: 'linux'
    SETUP_CONDA: 'true'
  pool: sh-ubuntu
  container: ubuntu-latest
  strategy:
    matrix:
      regular:
        TASK: regular
        PYTHON_VERSION: 3.6
      sdist:
        TASK: sdist
      bdist:
        TASK: bdist
93
        PYTHON_VERSION: 3.8
94
95
96
97
98
99
100
101
      inference:
        TASK: if-else
      mpi_source:
        TASK: mpi
        METHOD: source
      mpi_pip:
        TASK: mpi
        METHOD: pip
102
        PYTHON_VERSION: 3.8
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
136
137
138
139
140
      mpi_wheel:
        TASK: mpi
        METHOD: wheel
        PYTHON_VERSION: 3.7
      gpu_source:
        TASK: gpu
        METHOD: source
      gpu_pip:
        TASK: gpu
        METHOD: pip
        PYTHON_VERSION: 3.6
      gpu_wheel:
        TASK: gpu
        METHOD: wheel
        PYTHON_VERSION: 3.7
  steps:
  - script: |
      echo "##vso[task.setvariable variable=BUILD_DIRECTORY]$BUILD_SOURCESDIRECTORY"
      echo "##vso[task.setvariable variable=LGB_VER]$(head -n 1 VERSION.txt)"
      CONDA=$HOME/miniconda
      echo "##vso[task.setvariable variable=CONDA]$CONDA"
      echo "##vso[task.prependpath]$CONDA/bin"
      AMDAPPSDK_PATH=$BUILD_SOURCESDIRECTORY/AMDAPPSDK
      echo "##vso[task.setvariable variable=AMDAPPSDK_PATH]$AMDAPPSDK_PATH"
      LD_LIBRARY_PATH=$AMDAPPSDK_PATH/lib/x86_64:$LD_LIBRARY_PATH
      echo "##vso[task.setvariable variable=LD_LIBRARY_PATH]$LD_LIBRARY_PATH"
      echo "##vso[task.setvariable variable=OPENCL_VENDOR_PATH]$AMDAPPSDK_PATH/etc/OpenCL/vendors"
    displayName: 'Set variables'
  # https://github.com/microsoft/azure-pipelines-agent/issues/2043#issuecomment-687983301
  - script: |
      /tmp/docker exec -t -u 0 ci-container \
      sh -c "apt-get update && apt-get -o Dpkg::Options::="--force-confold" -y install sudo"
    displayName: 'Install sudo'
  - bash: $(Build.SourcesDirectory)/.ci/setup.sh
    displayName: Setup
  - bash: $(Build.SourcesDirectory)/.ci/test.sh
    displayName: Test
###########################################
141
- job: MacOS
Guolin Ke's avatar
Guolin Ke committed
142
###########################################
143
  variables:
144
    COMPILER: clang
145
146
    OS_NAME: 'macos'
    PRODUCES_ARTIFACTS: 'true'
147
  pool:
148
    vmImage: 'macOS-10.14'
149
  strategy:
Guolin Ke's avatar
Guolin Ke committed
150
151
152
    matrix:
      regular:
        TASK: regular
153
        PYTHON_VERSION: 3.7
Guolin Ke's avatar
Guolin Ke committed
154
155
      sdist:
        TASK: sdist
156
        PYTHON_VERSION: 3.8
Guolin Ke's avatar
Guolin Ke committed
157
158
      bdist:
        TASK: bdist
159
160
      swig:
        TASK: swig
Guolin Ke's avatar
Guolin Ke committed
161
  steps:
162
  - script: |
163
      echo "##vso[task.setvariable variable=BUILD_DIRECTORY]$BUILD_SOURCESDIRECTORY"
164
      echo "##vso[task.setvariable variable=LGB_VER]$(head -n 1 VERSION.txt)"
Nikita Titov's avatar
Nikita Titov committed
165
166
167
      CONDA=$AGENT_HOMEDIRECTORY/miniconda
      echo "##vso[task.setvariable variable=CONDA]$CONDA"
      echo "##vso[task.prependpath]$CONDA/bin"
168
      echo "##vso[task.prependpath]$(brew --prefix swig@3)/bin"
169
      echo "##vso[task.setvariable variable=JAVA_HOME]$JAVA_HOME_8_X64"
170
    displayName: 'Set variables'
171
  - bash: $(Build.SourcesDirectory)/.ci/setup.sh
172
    displayName: Setup
173
  - bash: $(Build.SourcesDirectory)/.ci/test.sh
174
    displayName: Test
Guolin Ke's avatar
Guolin Ke committed
175
  - task: PublishBuildArtifacts@1
176
    condition: and(succeeded(), in(variables['TASK'], 'regular', 'bdist', 'swig'), not(startsWith(variables['Build.SourceBranch'], 'refs/pull/')))
Guolin Ke's avatar
Guolin Ke committed
177
    inputs:
178
      pathtoPublish: '$(Build.ArtifactStagingDirectory)'
Guolin Ke's avatar
Guolin Ke committed
179
180
181
      artifactName: PackageAssets
      artifactType: container
###########################################
182
- job: Windows
Guolin Ke's avatar
Guolin Ke committed
183
###########################################
184
185
186
  pool:
    vmImage: 'vs2017-win2016'
  strategy:
Guolin Ke's avatar
Guolin Ke committed
187
188
189
    matrix:
      regular:
        TASK: regular
190
        PYTHON_VERSION: 3.6
Guolin Ke's avatar
Guolin Ke committed
191
192
      sdist:
        TASK: sdist
193
        PYTHON_VERSION: 3.8
Guolin Ke's avatar
Guolin Ke committed
194
195
      bdist:
        TASK: bdist
196
197
      swig:
        TASK: swig
Guolin Ke's avatar
Guolin Ke committed
198
  steps:
199
200
201
  - powershell: |
      Write-Host "##vso[task.prependpath]$env:CONDA\Scripts"
    displayName: 'Set Variables'
202
203
  - script: |
      cmd /c "powershell -ExecutionPolicy Bypass -File %BUILD_SOURCESDIRECTORY%/.ci/install_opencl.ps1"
204
    condition: eq(variables['TASK'], 'bdist')
205
    displayName: 'Install OpenCL'
Nikita Titov's avatar
Nikita Titov committed
206
  - script: |
207
208
      cmd /c "conda init powershell"
      cmd /c "powershell -ExecutionPolicy Bypass -File %BUILD_SOURCESDIRECTORY%/.ci/test_windows.ps1"
209
    displayName: Test
Guolin Ke's avatar
Guolin Ke committed
210
  - task: PublishBuildArtifacts@1
211
    condition: and(succeeded(), in(variables['TASK'], 'regular', 'bdist', 'swig'), not(startsWith(variables['Build.SourceBranch'], 'refs/pull/')))
Guolin Ke's avatar
Guolin Ke committed
212
    inputs:
213
      pathtoPublish: '$(Build.ArtifactStagingDirectory)'
Guolin Ke's avatar
Guolin Ke committed
214
215
      artifactName: PackageAssets
      artifactType: container
Guolin Ke's avatar
Guolin Ke committed
216

217
###########################################
218
- job: Package
219
###########################################
Guolin Ke's avatar
Guolin Ke committed
220
221
  dependsOn:
  - Linux
222
  - Linux_latest
Guolin Ke's avatar
Guolin Ke committed
223
224
  - MacOS
  - Windows
225
  condition: and(succeeded(), not(startsWith(variables['Build.SourceBranch'], 'refs/pull/')))
226
  pool:
227
    vmImage: 'ubuntu-latest'
Guolin Ke's avatar
Guolin Ke committed
228
229
230
231
232
233
234
235
  steps:
  # Download all agent packages from all previous phases
  - task: DownloadBuildArtifacts@0
    displayName: Download package assets
    inputs:
      artifactName: PackageAssets
      downloadPath: $(Build.SourcesDirectory)/binaries
  - script: |
236
      python "$(Build.SourcesDirectory)/.nuget/create_nuget.py" "$(Build.SourcesDirectory)/binaries/PackageAssets"
237
238
239
240
241
242
    displayName: 'Create NuGet configuration files'
  - task: NuGetCommand@2
    inputs:
      command: pack
      packagesToPack: '$(Build.SourcesDirectory)/.nuget/*.nuspec'
      packDestination: '$(Build.ArtifactStagingDirectory)'
Guolin Ke's avatar
Guolin Ke committed
243
244
  - task: PublishBuildArtifacts@1
    inputs:
245
      pathtoPublish: '$(Build.ArtifactStagingDirectory)'
246
      artifactName: NuGet
Guolin Ke's avatar
Guolin Ke committed
247
      artifactType: container
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
  - task: GitHubRelease@0
    displayName: 'Create GitHub Release'
    condition: and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags/v'))
    inputs:
      gitHubConnection: guolinke
      repositoryName: '$(Build.Repository.Name)'
      action: 'create'
      target: '$(Build.SourceVersion)'
      tagSource: 'auto'
      title: '$(Build.SourceBranchName)'
      assets: |
        $(Build.SourcesDirectory)/binaries/PackageAssets/*
        $(Build.ArtifactStagingDirectory)/*.nupkg
      assetUploadMode: 'delete'
      isDraft: true
      isPreRelease: false
Guolin Ke's avatar
Guolin Ke committed
264
      addChangeLog: false