File: main.yml

package info (click to toggle)
xgboost 3.0.4-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 13,848 kB
  • sloc: cpp: 67,603; python: 35,537; java: 4,676; ansic: 1,426; sh: 1,352; xml: 1,226; makefile: 204; javascript: 19
file content (294 lines) | stat: -rw-r--r-- 10,243 bytes parent folder | download
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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
name: XGBoost CI

on: [push, pull_request]

permissions:
  contents: read  # to fetch code (actions/checkout)

concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true

env:
  BRANCH_NAME: >-
    ${{ github.event.pull_request.number && 'PR-' }}${{ github.event.pull_request.number || github.ref_name }}

jobs:
  build-cpu:
    name: Build CPU
    runs-on:
      - runs-on=${{ github.run_id }}
      - runner=linux-amd64-cpu
      - tag=main-build-cpu
    steps:
      # Restart Docker daemon so that it recognizes the ephemeral disks
      - run: sudo systemctl restart docker
      - uses: actions/checkout@v4
        with:
          submodules: "true"
      - name: Log into Docker registry (AWS ECR)
        run: bash ops/pipeline/login-docker-registry.sh
      - run: bash ops/pipeline/build-cpu.sh
      - name: Stash CLI executable
        run: |
          python3 ops/pipeline/manage-artifacts.py upload \
            --s3-bucket ${{ env.RUNS_ON_S3_BUCKET_CACHE }} \
            --prefix cache/${{ github.run_id }}/build-cpu \
            ./xgboost

  build-cuda:
    name: Build CUDA + manylinux_2_28_x86_64 wheel
    runs-on:
      - runs-on=${{ github.run_id }}
      - runner=linux-amd64-cpu
      - tag=main-build-cuda
    steps:
      # Restart Docker daemon so that it recognizes the ephemeral disks
      - run: sudo systemctl restart docker
      - uses: actions/checkout@v4
        with:
          submodules: "true"
      - name: Log into Docker registry (AWS ECR)
        run: bash ops/pipeline/login-docker-registry.sh
      - run: |
          bash ops/pipeline/build-cuda.sh xgb-ci.gpu_build_rockylinux8 disable-rmm
      - name: Stash files
        run: |
          python3 ops/pipeline/manage-artifacts.py upload \
            --s3-bucket ${{ env.RUNS_ON_S3_BUCKET_CACHE }} \
            --prefix cache/${{ github.run_id }}/build-cuda \
            build/testxgboost ./xgboost python-package/dist/*.whl

  build-cuda-with-rmm:
    name: Build CUDA with RMM
    runs-on:
      - runs-on=${{ github.run_id }}
      - runner=linux-amd64-cpu
      - tag=main-build-cuda-with-rmm
    steps:
      # Restart Docker daemon so that it recognizes the ephemeral disks
      - run: sudo systemctl restart docker
      - uses: actions/checkout@v4
        with:
          submodules: "true"
      - name: Log into Docker registry (AWS ECR)
        run: bash ops/pipeline/login-docker-registry.sh
      - run: |
          bash ops/pipeline/build-cuda.sh xgb-ci.gpu_build_rockylinux8 enable-rmm
      - name: Stash files
        run: |
          python3 ops/pipeline/manage-artifacts.py upload \
            --s3-bucket ${{ env.RUNS_ON_S3_BUCKET_CACHE }} \
            --prefix cache/${{ github.run_id }}/build-cuda-with-rmm \
            build/testxgboost

  build-cuda-with-rmm-dev:
    name: Build CUDA with RMM (dev)
    runs-on:
      - runs-on=${{ github.run_id }}
      - runner=linux-amd64-cpu
      - tag=main-build-cuda-with-rmm-dev
    steps:
      # Restart Docker daemon so that it recognizes the ephemeral disks
      - run: sudo systemctl restart docker
      - uses: actions/checkout@v4
        with:
          submodules: "true"
      - name: Log into Docker registry (AWS ECR)
        run: bash ops/pipeline/login-docker-registry.sh
      - run: |
          bash ops/pipeline/build-cuda.sh \
            xgb-ci.gpu_build_rockylinux8_dev_ver enable-rmm

  build-python-wheels-arm64:
    name: Build manylinux_2_28_aarch64 wheel
    runs-on:
      - runs-on=${{ github.run_id }}
      - runner=linux-arm64-cpu
      - tag=build-python-wheels-arm64
    steps:
      # Restart Docker daemon so that it recognizes the ephemeral disks
      - run: sudo systemctl restart docker
      - uses: actions/checkout@v4
        with:
          submodules: "true"
      - name: Log into Docker registry (AWS ECR)
        run: bash ops/pipeline/login-docker-registry.sh
      - run: bash ops/pipeline/build-python-wheels-arm64.sh
      - name: Stash files
        run: |
          python3 ops/pipeline/manage-artifacts.py upload \
            --s3-bucket ${{ env.RUNS_ON_S3_BUCKET_CACHE }} \
            --prefix cache/${{ github.run_id }}/build-python-wheels-arm64 \
            ./xgboost python-package/dist/*.whl

  build-python-wheels-manylinux2014:
    name: Build manylinux2014_${{ matrix.arch }} wheel
    runs-on:
      - runs-on
      - runner=${{ matrix.runner }}
      - run-id=${{ github.run_id }}
      - tag=main-build-python-wheels-manylinux2014-${{ matrix.arch }}
    strategy:
      fail-fast: false
      matrix:
        include:
        - arch: aarch64
          runner: linux-arm64-cpu
        - arch: x86_64
          runner: linux-amd64-cpu
    steps:
      # Restart Docker daemon so that it recognizes the ephemeral disks
      - run: sudo systemctl restart docker
      - uses: actions/checkout@v4
        with:
          submodules: "true"
      - name: Log into Docker registry (AWS ECR)
        run: bash ops/pipeline/login-docker-registry.sh
      - run: bash ops/pipeline/build-python-wheels-manylinux2014.sh ${{ matrix.arch }}

  build-python-wheels-cpu:
    name: Build CPU wheel for ${{ matrix.manylinux_target }}_${{ matrix.arch }}
    runs-on:
      - runs-on
      - runner=${{ matrix.runner }}
      - run-id=${{ github.run_id }}
      - tag=main-build-python-wheels-cpu-${{ matrix.manylinux_target }}-${{ matrix.arch }}
    strategy:
      fail-fast: false
      matrix:
        include:
        - manylinux_target: manylinux2014
          arch: aarch64
          runner: linux-arm64-cpu
        - manylinux_target: manylinux2014
          arch: x86_64
          runner: linux-amd64-cpu
        - manylinux_target: manylinux_2_28
          arch: aarch64
          runner: linux-arm64-cpu
        - manylinux_target: manylinux_2_28
          arch: x86_64
          runner: linux-amd64-cpu
    steps:
      # Restart Docker daemon so that it recognizes the ephemeral disks
      - run: sudo systemctl restart docker
      - uses: actions/checkout@v4
        with:
          submodules: "true"
      - name: Log into Docker registry (AWS ECR)
        run: bash ops/pipeline/login-docker-registry.sh
      - run: |
          bash ops/pipeline/build-python-wheels-cpu.sh \
            ${{ matrix.manylinux_target }} ${{ matrix.arch }}

  build-gpu-rpkg:
    name: Build GPU-enabled R package
    runs-on:
      - runs-on=${{ github.run_id }}
      - runner=linux-amd64-cpu
      - tag=main-build-gpu-rpkg
    steps:
      # Restart Docker daemon so that it recognizes the ephemeral disks
      - run: sudo systemctl restart docker
      - uses: actions/checkout@v4
        with:
          submodules: "true"
      - name: Log into Docker registry (AWS ECR)
        run: bash ops/pipeline/login-docker-registry.sh
      - run: bash ops/pipeline/build-gpu-rpkg.sh

  test-cpp-gpu:
    name: >-
      Run Google Tests with GPUs
      (Suite ${{ matrix.suite }}, Runner ${{ matrix.runner }})
    needs: [build-cuda, build-cuda-with-rmm]
    runs-on:
      - runs-on
      - runner=${{ matrix.runner }}
      - run-id=${{ github.run_id }}
      - tag=main-test-cpp-gpu-${{ matrix.suite }}
    timeout-minutes: 30
    strategy:
      fail-fast: false
      matrix:
        include:
          - suite: gpu
            runner: linux-amd64-gpu
            artifact_from: build-cuda
          - suite: gpu-rmm
            runner: linux-amd64-gpu
            artifact_from: build-cuda-with-rmm
          - suite: mgpu
            runner: linux-amd64-mgpu
            artifact_from: build-cuda
    steps:
      # Restart Docker daemon so that it recognizes the ephemeral disks
      - run: sudo systemctl restart docker
      - uses: actions/checkout@v4
        with:
          submodules: "true"
      - name: Log into Docker registry (AWS ECR)
        run: bash ops/pipeline/login-docker-registry.sh
      - name: Unstash gtest
        run: |
          python3 ops/pipeline/manage-artifacts.py download \
            --s3-bucket ${{ env.RUNS_ON_S3_BUCKET_CACHE }} \
            --prefix cache/${{ github.run_id }}/${{ matrix.artifact_from }} \
            --dest-dir build \
            testxgboost
          chmod +x build/testxgboost
      - run: bash ops/pipeline/test-cpp-gpu.sh ${{ matrix.suite }}

  test-python-wheel:
    name: Run Python tests (${{ matrix.description }})
    needs: [build-cuda, build-python-wheels-arm64]
    runs-on:
      - runs-on
      - runner=${{ matrix.runner }}
      - run-id=${{ github.run_id }}
      - tag=main-test-python-wheel-${{ matrix.description }}
    timeout-minutes: 60
    strategy:
      fail-fast: false
      matrix:
        include:
          - description: single-gpu
            image_repo: xgb-ci.gpu
            suite: gpu
            runner: linux-amd64-gpu
            artifact_from: build-cuda
          - description: multiple-gpu
            image_repo: xgb-ci.gpu
            suite: mgpu
            runner: linux-amd64-mgpu
            artifact_from: build-cuda
          - description: cpu-amd64
            image_repo: xgb-ci.cpu
            suite: cpu
            runner: linux-amd64-cpu
            artifact_from: build-cuda
          - description: cpu-arm64
            image_repo: xgb-ci.manylinux_2_28_aarch64
            suite: cpu-arm64
            runner: linux-arm64-cpu
            artifact_from: build-python-wheels-arm64
    steps:
      # Restart Docker daemon so that it recognizes the ephemeral disks
      - run: sudo systemctl restart docker
      - uses: actions/checkout@v4
        with:
          submodules: "true"
      - name: Log into Docker registry (AWS ECR)
        run: bash ops/pipeline/login-docker-registry.sh
      - name: Unstash Python wheel
        run: |
          python3 ops/pipeline/manage-artifacts.py download \
            --s3-bucket ${{ env.RUNS_ON_S3_BUCKET_CACHE }} \
            --prefix cache/${{ github.run_id }}/${{ matrix.artifact_from }} \
            --dest-dir wheelhouse \
            *.whl xgboost
          mv -v wheelhouse/xgboost .
          chmod +x ./xgboost
      - name: Run Python tests, ${{ matrix.description }}
        run: bash ops/pipeline/test-python-wheel.sh ${{ matrix.suite }} ${{ matrix.image_repo }}