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

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