.vsts-ci.yml 8.15 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.8
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
38
39
    matrix:
      regular:
        TASK: regular
      sdist:
        TASK: sdist
      bdist:
        TASK: bdist
40
        PYTHON_VERSION: 3.7
41
42
43
44
45
46
47
      inference:
        TASK: if-else
      mpi_source:
        TASK: mpi
        METHOD: source
      gpu_source:
        TASK: gpu
Guolin Ke's avatar
Guolin Ke committed
48
        METHOD: source
49
50
      swig:
        TASK: swig
Guolin Ke's avatar
Guolin Ke committed
51
  steps:
52
  - script: |
53
      echo "##vso[task.setvariable variable=BUILD_DIRECTORY]$BUILD_SOURCESDIRECTORY"
54
      echo "##vso[task.setvariable variable=LGB_VER]$(head -n 1 VERSION.txt)"
Nikita Titov's avatar
Nikita Titov committed
55
56
      echo "##vso[task.prependpath]$CONDA/bin"
      AMDAPPSDK_PATH=$BUILD_SOURCESDIRECTORY/AMDAPPSDK
57
58
59
60
61
      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'
62
  - bash: $(Build.SourcesDirectory)/.ci/setup.sh
63
    displayName: Setup
64
  - bash: $(Build.SourcesDirectory)/.ci/test.sh
65
    displayName: Test
Nikita Titov's avatar
Nikita Titov committed
66
  - task: PublishBuildArtifacts@1
67
    condition: and(succeeded(), in(variables['TASK'], 'regular', 'sdist', 'bdist', 'swig'), not(startsWith(variables['Build.SourceBranch'], 'refs/pull/')))
Nikita Titov's avatar
Nikita Titov committed
68
69
70
71
    inputs:
      pathtoPublish: '$(Build.ArtifactStagingDirectory)'
      artifactName: PackageAssets
      artifactType: container
Guolin Ke's avatar
Guolin Ke committed
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
136
137
138
- 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
      inference:
        TASK: if-else
      mpi_source:
        TASK: mpi
        METHOD: source
      mpi_pip:
        TASK: mpi
        METHOD: pip
        PYTHON_VERSION: 3.7
      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
###########################################
139
- job: MacOS
Guolin Ke's avatar
Guolin Ke committed
140
###########################################
141
  variables:
142
    COMPILER: clang
143
144
    OS_NAME: 'macos'
    PRODUCES_ARTIFACTS: 'true'
145
  pool:
146
    vmImage: 'macOS-10.14'
147
  strategy:
Guolin Ke's avatar
Guolin Ke committed
148
149
150
    matrix:
      regular:
        TASK: regular
151
        PYTHON_VERSION: 3.7
Guolin Ke's avatar
Guolin Ke committed
152
153
154
155
      sdist:
        TASK: sdist
      bdist:
        TASK: bdist
156
157
      swig:
        TASK: swig
Guolin Ke's avatar
Guolin Ke committed
158
  steps:
159
  - script: |
160
      echo "##vso[task.setvariable variable=BUILD_DIRECTORY]$BUILD_SOURCESDIRECTORY"
161
      echo "##vso[task.setvariable variable=LGB_VER]$(head -n 1 VERSION.txt)"
Nikita Titov's avatar
Nikita Titov committed
162
163
164
      CONDA=$AGENT_HOMEDIRECTORY/miniconda
      echo "##vso[task.setvariable variable=CONDA]$CONDA"
      echo "##vso[task.prependpath]$CONDA/bin"
165
      echo "##vso[task.prependpath]$(brew --prefix swig@3)/bin"
166
      echo "##vso[task.setvariable variable=JAVA_HOME]$JAVA_HOME_8_X64"
167
    displayName: 'Set variables'
168
  - bash: $(Build.SourcesDirectory)/.ci/setup.sh
169
    displayName: Setup
170
  - bash: $(Build.SourcesDirectory)/.ci/test.sh
171
    displayName: Test
Guolin Ke's avatar
Guolin Ke committed
172
  - task: PublishBuildArtifacts@1
173
    condition: and(succeeded(), in(variables['TASK'], 'regular', 'bdist', 'swig'), not(startsWith(variables['Build.SourceBranch'], 'refs/pull/')))
Guolin Ke's avatar
Guolin Ke committed
174
    inputs:
175
      pathtoPublish: '$(Build.ArtifactStagingDirectory)'
Guolin Ke's avatar
Guolin Ke committed
176
177
178
      artifactName: PackageAssets
      artifactType: container
###########################################
179
- job: Windows
Guolin Ke's avatar
Guolin Ke committed
180
###########################################
181
182
183
  pool:
    vmImage: 'vs2017-win2016'
  strategy:
Guolin Ke's avatar
Guolin Ke committed
184
185
186
    matrix:
      regular:
        TASK: regular
187
        PYTHON_VERSION: 3.6
Guolin Ke's avatar
Guolin Ke committed
188
189
190
191
      sdist:
        TASK: sdist
      bdist:
        TASK: bdist
192
193
      swig:
        TASK: swig
Guolin Ke's avatar
Guolin Ke committed
194
  steps:
195
196
197
  - powershell: |
      Write-Host "##vso[task.prependpath]$env:CONDA\Scripts"
    displayName: 'Set Variables'
198
199
  - script: |
      cmd /c "powershell -ExecutionPolicy Bypass -File %BUILD_SOURCESDIRECTORY%/.ci/install_opencl.ps1"
200
    condition: eq(variables['TASK'], 'bdist')
201
    displayName: 'Install OpenCL'
Nikita Titov's avatar
Nikita Titov committed
202
  - script: |
203
204
      cmd /c "conda init powershell"
      cmd /c "powershell -ExecutionPolicy Bypass -File %BUILD_SOURCESDIRECTORY%/.ci/test_windows.ps1"
205
    displayName: Test
Guolin Ke's avatar
Guolin Ke committed
206
  - task: PublishBuildArtifacts@1
207
    condition: and(succeeded(), in(variables['TASK'], 'regular', 'bdist', 'swig'), not(startsWith(variables['Build.SourceBranch'], 'refs/pull/')))
Guolin Ke's avatar
Guolin Ke committed
208
    inputs:
209
      pathtoPublish: '$(Build.ArtifactStagingDirectory)'
Guolin Ke's avatar
Guolin Ke committed
210
211
      artifactName: PackageAssets
      artifactType: container
Guolin Ke's avatar
Guolin Ke committed
212

213
###########################################
214
- job: Package
215
###########################################
Guolin Ke's avatar
Guolin Ke committed
216
217
  dependsOn:
  - Linux
218
  - Linux_latest
Guolin Ke's avatar
Guolin Ke committed
219
220
  - MacOS
  - Windows
221
  condition: and(succeeded(), not(startsWith(variables['Build.SourceBranch'], 'refs/pull/')))
222
223
  pool:
    vmImage: 'vs2017-win2016'
Guolin Ke's avatar
Guolin Ke committed
224
225
226
227
228
229
230
231
  steps:
  # Download all agent packages from all previous phases
  - task: DownloadBuildArtifacts@0
    displayName: Download package assets
    inputs:
      artifactName: PackageAssets
      downloadPath: $(Build.SourcesDirectory)/binaries
  - script: |
232
233
234
235
236
237
238
      python %BUILD_SOURCESDIRECTORY%/.nuget/create_nuget.py %BUILD_SOURCESDIRECTORY%/binaries/PackageAssets
    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
239
240
  - task: PublishBuildArtifacts@1
    inputs:
241
      pathtoPublish: '$(Build.ArtifactStagingDirectory)'
242
      artifactName: NuGet
Guolin Ke's avatar
Guolin Ke committed
243
      artifactType: container
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
  - 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
260
      addChangeLog: false