.vsts-ci.yml 6.23 KB
Newer Older
1
variables:
2
  PYTHON_VERSION: 3.7
3
  CONDA_ENV: test-env
4
5
6
7
resources:
  containers:
  - container: ubuntu1404
    image: lightgbm/vsts-agent:ubuntu-14.04
8
jobs:
Guolin Ke's avatar
Guolin Ke committed
9
###########################################
10
- job: Linux
Guolin Ke's avatar
Guolin Ke committed
11
###########################################
12
13
  variables:
    COMPILER: gcc
14
15
  pool:
    vmImage: 'ubuntu-16.04'
16
  container: ubuntu1404
17
  strategy:
18
    maxParallel: 5
Guolin Ke's avatar
Guolin Ke committed
19
20
21
22
23
    matrix:
      regular:
        TASK: regular
      sdist:
        TASK: sdist
24
        PYTHON_VERSION: 3.5
Guolin Ke's avatar
Guolin Ke committed
25
26
      bdist:
        TASK: bdist
27
28
29
30
31
32
33
        PYTHON_VERSION: 3.6
      inference:
        TASK: if-else
      mpi_source:
        TASK: mpi
        METHOD: source
        PYTHON_VERSION: 2.7
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
  steps:
  - task: CondaEnvironment@1
    inputs:
      updateConda: true
  - script: |
      echo "##vso[task.setvariable variable=HOME_DIRECTORY]$AGENT_HOMEDIRECTORY"
      echo "##vso[task.setvariable variable=BUILD_DIRECTORY]$BUILD_SOURCESDIRECTORY"
      echo "##vso[task.setvariable variable=OS_NAME]linux"
      echo "##vso[task.setvariable variable=AZURE]true"
      echo "##vso[task.setvariable variable=LGB_VER]$(head -n 1 VERSION.txt)"
    displayName: 'Set variables'
  - bash: $(Build.SourcesDirectory)/.ci/setup.sh
    displayName: Setup
  - bash: $(Build.SourcesDirectory)/.ci/test.sh
    displayName: Test
  - task: PublishBuildArtifacts@1
    condition: and(succeeded(), not(startsWith(variables['Build.SourceBranch'], 'refs/pull/')))
    inputs:
      pathtoPublish: '$(Build.ArtifactStagingDirectory)'
      artifactName: PackageAssets
      artifactType: container
###########################################
- job: Linux_gpu
###########################################
  variables:
    COMPILER: gcc
  pool:
    vmImage: 'ubuntu-16.04'
  strategy:
    maxParallel: 1
    matrix:
65
66
      gpu_source:
        TASK: gpu
Guolin Ke's avatar
Guolin Ke committed
67
        METHOD: source
68
        PYTHON_VERSION: 3.6
Guolin Ke's avatar
Guolin Ke committed
69
  steps:
70
71
72
  - script: |
      sudo chmod -R 777 /usr/share/miniconda
    displayName: 'Fix for conda error on Linux'
73
  - task: CondaEnvironment@1
Guolin Ke's avatar
Guolin Ke committed
74
    inputs:
75
76
      updateConda: true
  - script: |
77
      echo "##vso[task.setvariable variable=HOME_DIRECTORY]$AGENT_HOMEDIRECTORY"
78
      echo "##vso[task.setvariable variable=BUILD_DIRECTORY]$BUILD_SOURCESDIRECTORY"
79
80
      echo "##vso[task.setvariable variable=OS_NAME]linux"
      echo "##vso[task.setvariable variable=AZURE]true"
81
82
83
84
85
86
87
      echo "##vso[task.setvariable variable=LGB_VER]$(head -n 1 VERSION.txt)"
      AMDAPPSDK_PATH=$AGENT_HOMEDIRECTORY/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'
88
  - bash: $(Build.SourcesDirectory)/.ci/setup.sh
89
    displayName: Setup
90
  - bash: $(Build.SourcesDirectory)/.ci/test.sh
91
    displayName: Test
Guolin Ke's avatar
Guolin Ke committed
92
###########################################
93
- job: MacOS
Guolin Ke's avatar
Guolin Ke committed
94
###########################################
95
  variables:
96
    COMPILER: clang
97
98
99
100
  pool:
    vmImage: 'macOS-10.13'
  strategy:
    maxParallel: 3
Guolin Ke's avatar
Guolin Ke committed
101
102
103
    matrix:
      regular:
        TASK: regular
104
        PYTHON_VERSION: 3.6
Guolin Ke's avatar
Guolin Ke committed
105
106
      sdist:
        TASK: sdist
107
        PYTHON_VERSION: 3.5
Guolin Ke's avatar
Guolin Ke committed
108
109
110
      bdist:
        TASK: bdist
  steps:
111
112
113
  - script: |
      sudo chmod -R 777 /usr/local/miniconda
    displayName: 'Fix for conda error on macOS'
114
  - task: CondaEnvironment@1
115
116
117
    inputs:
      updateConda: true
  - script: |
118
      echo "##vso[task.setvariable variable=HOME_DIRECTORY]$AGENT_HOMEDIRECTORY"
119
      echo "##vso[task.setvariable variable=BUILD_DIRECTORY]$BUILD_SOURCESDIRECTORY"
120
121
      echo "##vso[task.setvariable variable=OS_NAME]macos"
      echo "##vso[task.setvariable variable=AZURE]true"
122
123
      echo "##vso[task.setvariable variable=LGB_VER]$(head -n 1 VERSION.txt)"
    displayName: 'Set variables'
124
  - bash: $(Build.SourcesDirectory)/.ci/setup.sh
125
    displayName: Setup
126
  - bash: $(Build.SourcesDirectory)/.ci/test.sh
127
    displayName: Test
Guolin Ke's avatar
Guolin Ke committed
128
  - task: PublishBuildArtifacts@1
129
    condition: and(succeeded(), not(startsWith(variables['Build.SourceBranch'], 'refs/pull/')))
Guolin Ke's avatar
Guolin Ke committed
130
131
132
133
134
    inputs:
      pathtoPublish: '$(Build.ArtifactStagingDirectory)' 
      artifactName: PackageAssets
      artifactType: container
###########################################
135
- job: Windows
Guolin Ke's avatar
Guolin Ke committed
136
###########################################
137
138
139
140
  pool:
    vmImage: 'vs2017-win2016'
  strategy:
    maxParallel: 3
Guolin Ke's avatar
Guolin Ke committed
141
142
143
    matrix:
      regular:
        TASK: regular
144
        PYTHON_VERSION: 3.5
Guolin Ke's avatar
Guolin Ke committed
145
146
147
148
149
      sdist:
        TASK: sdist
        PYTHON_VERSION: 2.7
      bdist:
        TASK: bdist
150
        PYTHON_VERSION: 3.6
Guolin Ke's avatar
Guolin Ke committed
151
  steps:
152
  - task: CondaEnvironment@1
Guolin Ke's avatar
Guolin Ke committed
153
    inputs:
154
      createCustomEnvironment: true
155
      updateConda: true
Guolin Ke's avatar
Guolin Ke committed
156
      environmentName: $(CONDA_ENV)
157
      packageSpecs: 'python=$(PYTHON_VERSION) matplotlib nose numpy pandas pytest python-graphviz scikit-learn scipy'
Guolin Ke's avatar
Guolin Ke committed
158
      createOptions: '-q'
159
  - powershell: $(Build.SourcesDirectory)/.ci/test_windows.ps1
160
    displayName: Test
Guolin Ke's avatar
Guolin Ke committed
161
  - task: PublishBuildArtifacts@1
162
    condition: and(succeeded(), not(startsWith(variables['Build.SourceBranch'], 'refs/pull/')))
Guolin Ke's avatar
Guolin Ke committed
163
    inputs:
164
      pathtoPublish: '$(Build.ArtifactStagingDirectory)'
Guolin Ke's avatar
Guolin Ke committed
165
166
      artifactName: PackageAssets
      artifactType: container
Guolin Ke's avatar
Guolin Ke committed
167

168
###########################################
169
- job: Package
170
###########################################
Guolin Ke's avatar
Guolin Ke committed
171
172
173
174
  dependsOn:
  - Linux
  - MacOS
  - Windows
175
  condition: and(succeeded(), not(startsWith(variables['Build.SourceBranch'], 'refs/pull/')))
176
177
  pool:
    vmImage: 'vs2017-win2016'
Guolin Ke's avatar
Guolin Ke committed
178
179
180
181
182
183
184
185
  steps:
  # Download all agent packages from all previous phases
  - task: DownloadBuildArtifacts@0
    displayName: Download package assets
    inputs:
      artifactName: PackageAssets
      downloadPath: $(Build.SourcesDirectory)/binaries
  - script: |
186
187
188
189
190
191
192
      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
193
194
  - task: PublishBuildArtifacts@1
    inputs:
195
      pathtoPublish: '$(Build.ArtifactStagingDirectory)'
196
      artifactName: NuGet
Guolin Ke's avatar
Guolin Ke committed
197
      artifactType: container