Skip to content

Commit 502eace

Browse files
committed
AZP/RELEASE: Phase 3 - build + publish UCXX in UCX release pipeline
Wires UCXX conda + wheel package builds into azure-pipelines-release.yml using the existing pr/ucxx_build.yml template, plus scaffolds the publish + docs jobs for the eventual atomic cutover from rapidsai/ucxx GHA. All publish steps land disabled (`condition: false`) until the matching secret is provisioned in the Azure secret store; build-only artifacts flow today via PublishBuildArtifacts. Pipeline additions (azure-pipelines-release.yml): - ucxx repo resource (rapidsai/ucxx, refs/heads/main, Mellanox-lab endpoint) - ucxx_rapidsai_ci_conda + ucxx_rapidsai_ci_wheel CPU containers - UCXX_build stage gated on CheckRelease.Result.Launch so it only fires on real UCX tag pushes, not on PR runs against master / v*.*.x - RAPIDS_CONDA_UPLOAD_LABEL=blossom-test pipeline variable for the dry-run channel during parallel validation against GHA. Flip to empty ('main' default) on cutover day. Template additions (pr/ucxx_build.yml): - Optional `condition` and `docs_slices` parameters (PR pipeline keeps default behavior: condition=succeeded(), docs_slices=[]) - Per-phase anaconda upload steps: * conda-cpp + conda-python use CONDA_RAPIDSAI_TOKEN * wheel-libucxx + wheel-ucxx + wheel-distributed-ucxx use CONDA_RAPIDSAI_WHEELS_NIGHTLY_TOKEN - New docs-build job: pulls conda artifacts, runs ci/build_docs.sh, then aws-syncs RAPIDS_DOCS_DIR to s3://rapidsai-docs/ucxx/MAJOR.MINOR/. MAJOR.MINOR derived from ucxx VERSION file at runtime. Implementation notes: - Upstream rapidsai gha-tools (rapids-upload-*-github, rapids-upload-docs) are GHA-only (uses `gh run download`; bails when GITHUB_ACTIONS!=true), so we invoke `anaconda upload` and `aws s3 sync` directly on locally-built artifacts. - The ci-wheel image is pyenv-based and ships no anaconda-client, so the wheel-upload steps `pip install --quiet anaconda-client` first. - Conda upload globs all subdir packages (`*/*.conda` + `*/*.tar.bz2`) so libucxx, ucxx, distributed-ucxx, libucxx-tests, libucxx-examples are all covered. - All upload steps use `shopt -s nullglob` + explicit empty-check so an empty match fails loudly instead of silently passing a literal glob to anaconda. - The docs job currently still depends on a small `docs` phase being added to build_ucxx.sh + ucxx ci/build_docs.sh honoring a pre-set RAPIDS_DOCS_DIR (today it mktemp's). Both flagged inline as TODOs. Cutover checklist (each tagged with TODO at the relevant step): - CONDA_RAPIDSAI_TOKEN -> Azure secret store - CONDA_RAPIDSAI_WHEELS_NIGHTLY_TOKEN -> Azure secret store - RAPIDS_AWS_KEY / RAPIDS_AWS_SECRET -> Azure secret store - Delete `condition: false` lines on the 6 upload steps - Flip RAPIDS_CONDA_UPLOAD_LABEL from `blossom-test` to empty - Add `docs` phase to build_ucxx.sh + patch ucxx build_docs.sh
1 parent 47a4851 commit 502eace

3 files changed

Lines changed: 277 additions & 0 deletions

File tree

buildlib/azure-pipelines-release.yml

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,31 @@ pr:
99
- master
1010
- v*.*.x
1111

12+
# UCXX nightly: rebuild same SHA daily and publish alpha-versioned packages
13+
# to rapidsai-nightly channel. Tune cron time to avoid RAPIDS GHA window
14+
# during parallel-validation phase.
15+
schedules:
16+
- cron: '0 7 * * *'
17+
displayName: UCXX nightly
18+
branches:
19+
include: [master]
20+
always: true
21+
1222
variables:
1323
DOCKER_OPT_VOLUMES: -v /hpc/local:/hpc/local
24+
DOCKER_OPT_ARGS: --cap-add=SYS_PTRACE
25+
# UCXX publish: initial dry-run channel until cutover. Flip to empty
26+
# (use 'main' default) when atomic cutover from RAPIDS GHA is approved.
27+
RAPIDS_CONDA_UPLOAD_LABEL: blossom-test
1428

1529
resources:
30+
repositories:
31+
- repository: ucxx
32+
type: github
33+
name: rapidsai/ucxx
34+
endpoint: Mellanox-lab
35+
ref: refs/heads/main
36+
1637
containers:
1738
# x86_64
1839
- container: centos7_cuda11_x86_64
@@ -78,6 +99,14 @@ resources:
7899
image: rdmz-harbor.rdmz.labs.mlnx/ucx/aarch64/rocky9-mofed24.10-cuda13:2
79100
options: $(DOCKER_OPT_VOLUMES)
80101

102+
# UCXX release: CPU-only conda + wheel builders (mirrors PR pipeline).
103+
- container: ucxx_rapidsai_ci_conda
104+
image: rdmz-harbor.rdmz.labs.mlnx/ucx/rapidsai-ci-conda:26.06-azp-1
105+
options: $(DOCKER_OPT_ARGS) $(DOCKER_OPT_VOLUMES)
106+
- container: ucxx_rapidsai_ci_wheel
107+
image: rdmz-harbor.rdmz.labs.mlnx/ucx/rapidsai-ci-wheel:26.06-azp-1
108+
options: $(DOCKER_OPT_ARGS) $(DOCKER_OPT_VOLUMES)
109+
81110
stages:
82111
- stage: Prepare
83112
jobs:
@@ -150,3 +179,41 @@ stages:
150179
container: centos8_cuda11_aarch64
151180
demands: ucx-arm64
152181
target: publish-release
182+
183+
- template: pr/ucxx_build.yml
184+
parameters:
185+
dependsOn: [Prepare]
186+
# Fires on UCX release tag (CheckRelease.Launch=True) OR nightly cron
187+
# (Build.Reason=Schedule). Upload steps dispatch token/channel/label at
188+
# runtime based on BUILD_REASON.
189+
condition: |
190+
or(
191+
eq(dependencies.Prepare.outputs['CheckRelease.Result.Launch'], 'True'),
192+
eq(variables['Build.Reason'], 'Schedule')
193+
)
194+
conda_cpp_slices:
195+
- { name: x86_64_cuda12_py311, demands: ucx_docker -equals yes, rapids_cuda_version: '12.9.1', rapids_py_version: '3.11' }
196+
- { name: x86_64_cuda13_py311, demands: ucx_docker -equals yes, rapids_cuda_version: '13.2.0', rapids_py_version: '3.11' }
197+
- { name: aarch64_cuda12_py311, demands: ucx_arm64, rapids_cuda_version: '12.9.1', rapids_py_version: '3.11' }
198+
- { name: aarch64_cuda13_py311, demands: ucx_arm64, rapids_cuda_version: '13.2.0', rapids_py_version: '3.11' }
199+
conda_python_slices:
200+
- { name: x86_64_cuda12_py311, demands: ucx_docker -equals yes, rapids_cuda_version: '12.9.1', rapids_py_version: '3.11' }
201+
- { name: x86_64_cuda13_py311, demands: ucx_docker -equals yes, rapids_cuda_version: '13.2.0', rapids_py_version: '3.11' }
202+
- { name: aarch64_cuda12_py311, demands: ucx_arm64, rapids_cuda_version: '12.9.1', rapids_py_version: '3.11' }
203+
- { name: aarch64_cuda13_py311, demands: ucx_arm64, rapids_cuda_version: '13.2.0', rapids_py_version: '3.11' }
204+
wheel_libucxx_slices:
205+
- { name: x86_64_cuda12_py314, demands: ucx_docker -equals yes, rapids_cuda_version: '12.9.1', rapids_py_version: '3.14' }
206+
- { name: x86_64_cuda13_py314, demands: ucx_docker -equals yes, rapids_cuda_version: '13.0.2', rapids_py_version: '3.14' }
207+
- { name: aarch64_cuda12_py314, demands: ucx_arm64, rapids_cuda_version: '12.9.1', rapids_py_version: '3.14' }
208+
- { name: aarch64_cuda13_py314, demands: ucx_arm64, rapids_cuda_version: '13.0.2', rapids_py_version: '3.14' }
209+
wheel_ucxx_slices:
210+
- { name: x86_64_cuda12_py311, libucxx_slice: x86_64_cuda12_py314, demands: ucx_docker -equals yes, rapids_cuda_version: '12.9.1', rapids_py_version: '3.11' }
211+
- { name: x86_64_cuda13_py311, libucxx_slice: x86_64_cuda13_py314, demands: ucx_docker -equals yes, rapids_cuda_version: '13.0.2', rapids_py_version: '3.11' }
212+
- { name: aarch64_cuda12_py311, libucxx_slice: aarch64_cuda12_py314, demands: ucx_arm64, rapids_cuda_version: '12.9.1', rapids_py_version: '3.11' }
213+
- { name: aarch64_cuda13_py311, libucxx_slice: aarch64_cuda13_py314, demands: ucx_arm64, rapids_cuda_version: '13.0.2', rapids_py_version: '3.11' }
214+
wheel_distributed_ucxx_slices:
215+
- { name: x86_64_cuda12_py314, demands: ucx_docker -equals yes, rapids_cuda_version: '12.9.1', rapids_py_version: '3.14' }
216+
- { name: x86_64_cuda13_py314, demands: ucx_docker -equals yes, rapids_cuda_version: '13.0.2', rapids_py_version: '3.14' }
217+
docs_slices:
218+
- { name: x86_64_cuda13_py311, cpp_slice: x86_64_cuda13_py311, python_slice: x86_64_cuda13_py311,
219+
demands: ucx_docker -equals yes, rapids_cuda_version: '13.2.0', rapids_py_version: '3.11' }

buildlib/pr/ucxx_build.yml

Lines changed: 200 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,20 @@
11
parameters:
22
dependsOn: [Static_check]
3+
condition: succeeded()
34
conda_container: ucxx_rapidsai_ci_conda
45
wheel_container: ucxx_rapidsai_ci_wheel
56
conda_cpp_slices: []
67
conda_python_slices: []
78
wheel_libucxx_slices: []
89
wheel_ucxx_slices: []
910
wheel_distributed_ucxx_slices: []
11+
docs_slices: []
1012

1113
stages:
1214
- stage: UCXX_build
15+
displayName: 'UCXX build + publish'
1316
dependsOn: ${{ parameters.dependsOn }}
17+
condition: ${{ parameters.condition }}
1418
variables:
1519
UCX_DIR: $(Agent.BuildDirectory)/ucx
1620
UCXX_DIR: $(Agent.BuildDirectory)/ucxx
@@ -44,6 +48,31 @@ stages:
4448
inputs:
4549
pathToPublish: $(RAPIDS_BLD_OUTPUT_DIR)
4650
artifactName: ucxx-conda-cpp-${{ slice.name }}
51+
# TODO Phase 3 cutover: provision CONDA_RAPIDSAI_TOKEN (release tag)
52+
# and CONDA_RAPIDSAI_NIGHTLY_TOKEN (cron/ResourceTrigger) in Azure
53+
# secret store, then delete `condition: false`.
54+
- bash: |
55+
set -eEo pipefail
56+
case "$BUILD_REASON" in
57+
IndividualCI) tok="$RELEASE_TOK" ;;
58+
Schedule|ResourceTrigger) tok="$NIGHTLY_TOK" ;;
59+
*) echo "unexpected Build.Reason=$BUILD_REASON" >&2; exit 1 ;;
60+
esac
61+
shopt -s nullglob
62+
pkgs=("$(RAPIDS_BLD_OUTPUT_DIR)"/*/*.conda "$(RAPIDS_BLD_OUTPUT_DIR)"/*/*.tar.bz2)
63+
if [ ${#pkgs[@]} -eq 0 ]; then
64+
echo "ERROR: no conda packages found under $(RAPIDS_BLD_OUTPUT_DIR)" >&2
65+
exit 1
66+
fi
67+
anaconda -t "$tok" upload \
68+
--label "${RAPIDS_CONDA_UPLOAD_LABEL:-main}" \
69+
--skip-existing --no-progress \
70+
"${pkgs[@]}"
71+
displayName: Upload conda-cpp to anaconda.org
72+
condition: false
73+
env:
74+
RELEASE_TOK: $(CONDA_RAPIDSAI_TOKEN)
75+
NIGHTLY_TOK: $(CONDA_RAPIDSAI_NIGHTLY_TOKEN)
4776
4877
- ${{ each slice in parameters.conda_python_slices }}:
4978
- job: ucxx_conda_python_build_${{ slice.name }}
@@ -84,6 +113,31 @@ stages:
84113
inputs:
85114
pathToPublish: $(RAPIDS_BLD_OUTPUT_DIR)
86115
artifactName: ucxx-conda-python-${{ slice.name }}
116+
# TODO Phase 3 cutover: provision CONDA_RAPIDSAI_TOKEN (release tag)
117+
# and CONDA_RAPIDSAI_NIGHTLY_TOKEN (cron/ResourceTrigger) in Azure
118+
# secret store, then delete `condition: false`.
119+
- bash: |
120+
set -eEo pipefail
121+
case "$BUILD_REASON" in
122+
IndividualCI) tok="$RELEASE_TOK" ;;
123+
Schedule|ResourceTrigger) tok="$NIGHTLY_TOK" ;;
124+
*) echo "unexpected Build.Reason=$BUILD_REASON" >&2; exit 1 ;;
125+
esac
126+
shopt -s nullglob
127+
pkgs=("$(RAPIDS_BLD_OUTPUT_DIR)"/*/*.conda "$(RAPIDS_BLD_OUTPUT_DIR)"/*/*.tar.bz2)
128+
if [ ${#pkgs[@]} -eq 0 ]; then
129+
echo "ERROR: no conda packages found under $(RAPIDS_BLD_OUTPUT_DIR)" >&2
130+
exit 1
131+
fi
132+
anaconda -t "$tok" upload \
133+
--label "${RAPIDS_CONDA_UPLOAD_LABEL:-main}" \
134+
--skip-existing --no-progress \
135+
"${pkgs[@]}"
136+
displayName: Upload conda-python to anaconda.org
137+
condition: false
138+
env:
139+
RELEASE_TOK: $(CONDA_RAPIDSAI_TOKEN)
140+
NIGHTLY_TOK: $(CONDA_RAPIDSAI_NIGHTLY_TOKEN)
87141
88142
- ${{ each slice in parameters.wheel_libucxx_slices }}:
89143
- job: ucxx_wheel_libucxx_build_${{ slice.name }}
@@ -113,6 +167,32 @@ stages:
113167
inputs:
114168
pathToPublish: $(RAPIDS_BLD_OUTPUT_DIR)
115169
artifactName: ucxx-wheel-libucxx-${{ slice.name }}
170+
# TODO Phase 3 cutover: provision CONDA_RAPIDSAI_WHEELS_NIGHTLY_TOKEN
171+
# in Azure secret store, then delete `condition: false`. (Upstream
172+
# uses the same wheels token for both release and nightly uploads.)
173+
# ci-wheel image is pyenv-based: anaconda-client not preinstalled.
174+
- bash: |
175+
set -eEo pipefail
176+
case "$BUILD_REASON" in
177+
IndividualCI|Schedule|ResourceTrigger) : ;;
178+
*) echo "unexpected Build.Reason=$BUILD_REASON" >&2; exit 1 ;;
179+
esac
180+
pip install --user --quiet anaconda-client
181+
export PATH="$HOME/.local/bin:$PATH"
182+
shopt -s nullglob
183+
whls=("$(RAPIDS_BLD_OUTPUT_DIR)"/*.whl)
184+
if [ ${#whls[@]} -eq 0 ]; then
185+
echo "ERROR: no wheels found under $(RAPIDS_BLD_OUTPUT_DIR)" >&2
186+
exit 1
187+
fi
188+
anaconda -t "$WHEEL_TOKEN" upload \
189+
--label "${RAPIDS_CONDA_UPLOAD_LABEL:-main}" \
190+
--skip-existing --no-progress \
191+
"${whls[@]}"
192+
displayName: Upload libucxx wheel to anaconda.org
193+
condition: false
194+
env:
195+
WHEEL_TOKEN: $(CONDA_RAPIDSAI_WHEELS_NIGHTLY_TOKEN)
116196
117197
- ${{ each slice in parameters.wheel_ucxx_slices }}:
118198
- job: ucxx_wheel_ucxx_build_${{ slice.name }}
@@ -154,6 +234,32 @@ stages:
154234
inputs:
155235
pathToPublish: $(RAPIDS_BLD_OUTPUT_DIR)
156236
artifactName: ucxx-wheel-ucxx-${{ slice.name }}
237+
# TODO Phase 3 cutover: provision CONDA_RAPIDSAI_WHEELS_NIGHTLY_TOKEN
238+
# in Azure secret store, then delete `condition: false`. (Upstream
239+
# uses the same wheels token for both release and nightly uploads.)
240+
# ci-wheel image is pyenv-based: anaconda-client not preinstalled.
241+
- bash: |
242+
set -eEo pipefail
243+
case "$BUILD_REASON" in
244+
IndividualCI|Schedule|ResourceTrigger) : ;;
245+
*) echo "unexpected Build.Reason=$BUILD_REASON" >&2; exit 1 ;;
246+
esac
247+
pip install --user --quiet anaconda-client
248+
export PATH="$HOME/.local/bin:$PATH"
249+
shopt -s nullglob
250+
whls=("$(RAPIDS_BLD_OUTPUT_DIR)"/*.whl)
251+
if [ ${#whls[@]} -eq 0 ]; then
252+
echo "ERROR: no wheels found under $(RAPIDS_BLD_OUTPUT_DIR)" >&2
253+
exit 1
254+
fi
255+
anaconda -t "$WHEEL_TOKEN" upload \
256+
--label "${RAPIDS_CONDA_UPLOAD_LABEL:-main}" \
257+
--skip-existing --no-progress \
258+
"${whls[@]}"
259+
displayName: Upload ucxx wheel to anaconda.org
260+
condition: false
261+
env:
262+
WHEEL_TOKEN: $(CONDA_RAPIDSAI_WHEELS_NIGHTLY_TOKEN)
157263
158264
- ${{ each slice in parameters.wheel_distributed_ucxx_slices }}:
159265
- job: ucxx_wheel_dist_ucxx_build_${{ slice.name }}
@@ -183,3 +289,97 @@ stages:
183289
inputs:
184290
pathToPublish: $(RAPIDS_BLD_OUTPUT_DIR)
185291
artifactName: ucxx-wheel-distributed-ucxx-${{ slice.name }}
292+
# TODO Phase 3 cutover: provision CONDA_RAPIDSAI_WHEELS_NIGHTLY_TOKEN
293+
# in Azure secret store, then delete `condition: false`. (Upstream
294+
# uses the same wheels token for both release and nightly uploads.)
295+
# ci-wheel image is pyenv-based: anaconda-client not preinstalled.
296+
- bash: |
297+
set -eEo pipefail
298+
case "$BUILD_REASON" in
299+
IndividualCI|Schedule|ResourceTrigger) : ;;
300+
*) echo "unexpected Build.Reason=$BUILD_REASON" >&2; exit 1 ;;
301+
esac
302+
pip install --user --quiet anaconda-client
303+
export PATH="$HOME/.local/bin:$PATH"
304+
shopt -s nullglob
305+
whls=("$(RAPIDS_BLD_OUTPUT_DIR)"/*.whl)
306+
if [ ${#whls[@]} -eq 0 ]; then
307+
echo "ERROR: no wheels found under $(RAPIDS_BLD_OUTPUT_DIR)" >&2
308+
exit 1
309+
fi
310+
anaconda -t "$WHEEL_TOKEN" upload \
311+
--label "${RAPIDS_CONDA_UPLOAD_LABEL:-main}" \
312+
--skip-existing --no-progress \
313+
"${whls[@]}"
314+
displayName: Upload distributed-ucxx wheel to anaconda.org
315+
condition: false
316+
env:
317+
WHEEL_TOKEN: $(CONDA_RAPIDSAI_WHEELS_NIGHTLY_TOKEN)
318+
319+
- ${{ each slice in parameters.docs_slices }}:
320+
- job: ucxx_docs_build_${{ slice.name }}
321+
workspace:
322+
clean: all
323+
pool:
324+
name: MLNX
325+
demands: ${{ slice.demands }}
326+
displayName: 'UCXX docs-build (${{ slice.name }})'
327+
container: ${{ parameters.conda_container }}
328+
timeoutInMinutes: 60
329+
dependsOn:
330+
- ucxx_conda_cpp_build_${{ slice.cpp_slice }}
331+
- ucxx_conda_python_build_${{ slice.python_slice }}
332+
variables:
333+
RAPIDS_CUDA_VERSION: ${{ slice.rapids_cuda_version }}
334+
RAPIDS_PY_VERSION: ${{ slice.rapids_py_version }}
335+
DOCS_OUT_DIR: $(Build.ArtifactStagingDirectory)/docs
336+
steps:
337+
- checkout: self
338+
path: ucx
339+
fetchDepth: 100
340+
retryCountOnTaskFailure: 5
341+
- checkout: ucxx
342+
path: ucxx
343+
retryCountOnTaskFailure: 5
344+
- task: DownloadBuildArtifacts@1
345+
displayName: Fetch conda-cpp artifact
346+
inputs:
347+
buildType: current
348+
artifactName: ucxx-conda-cpp-${{ slice.cpp_slice }}
349+
downloadPath: $(System.DefaultWorkingDirectory)/_dl_cpp
350+
- task: DownloadBuildArtifacts@1
351+
displayName: Fetch conda-python artifact
352+
inputs:
353+
buildType: current
354+
artifactName: ucxx-conda-python-${{ slice.python_slice }}
355+
downloadPath: $(System.DefaultWorkingDirectory)/_dl_py
356+
# TODO Phase 3 cutover: ucxx ci/build_docs.sh overwrites
357+
# RAPIDS_DOCS_DIR with mktemp; needs upstream tweak (or wrapper in
358+
# build_ucxx.sh) before docs output is reachable here. Then provision
359+
# RAPIDS_AWS_KEY/RAPIDS_AWS_SECRET and flip the conditions below.
360+
- bash: bash $(UCX_DIR)/buildlib/tools/build_ucxx.sh docs
361+
displayName: Build UCXX docs
362+
condition: false
363+
env:
364+
CPP_CHANNEL_DIR: $(System.DefaultWorkingDirectory)/_dl_cpp/ucxx-conda-cpp-${{ slice.cpp_slice }}
365+
PYTHON_CHANNEL_DIR: $(System.DefaultWorkingDirectory)/_dl_py/ucxx-conda-python-${{ slice.python_slice }}
366+
RAPIDS_DOCS_DIR: $(DOCS_OUT_DIR)
367+
- task: PublishBuildArtifacts@1
368+
displayName: Publish docs artifact
369+
condition: false
370+
inputs:
371+
pathToPublish: $(DOCS_OUT_DIR)
372+
artifactName: ucxx-docs-${{ slice.name }}
373+
- bash: |
374+
set -eEo pipefail
375+
ver=$(head -1 "$(UCXX_DIR)/VERSION" | sed -E 's/^([0-9]+)\.([0-9]+).*/\1.\2/')
376+
if [ -z "$ver" ]; then
377+
echo "ERROR: could not parse MAJOR.MINOR from $(UCXX_DIR)/VERSION" >&2
378+
exit 1
379+
fi
380+
aws s3 sync "$(DOCS_OUT_DIR)/" "s3://rapidsai-docs/ucxx/${ver}/"
381+
displayName: Upload docs to S3
382+
condition: false
383+
env:
384+
AWS_ACCESS_KEY_ID: $(RAPIDS_AWS_KEY)
385+
AWS_SECRET_ACCESS_KEY: $(RAPIDS_AWS_SECRET)

buildlib/tools/build_ucxx.sh

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,16 @@ phase=${1:?phase required}
1717
export RAPIDS_CUDA_VERSION RAPIDS_PY_VERSION
1818
mkdir -p "$RAPIDS_BLD_OUTPUT_DIR"
1919

20+
# rapids-generate-version reads GITHUB_REF: tag pattern -> clean version,
21+
# anything else -> alpha + git-distance. Spoof from Azure context so release
22+
# tag pushes produce "X.YY.PP" and cron/branch builds produce "X.YY.PPaN".
23+
if [ -n "${BUILD_REASON:-}" ] && [ -z "${GITHUB_REF:-}" ]; then
24+
case "$BUILD_REASON" in
25+
IndividualCI) export GITHUB_REF="${BUILD_SOURCEBRANCH:-refs/heads/main}" ;;
26+
*) export GITHUB_REF="refs/heads/main" ;;
27+
esac
28+
fi
29+
2030
case "$phase" in
2131
conda_*) export RAPIDS_CONDA_BLD_OUTPUT_DIR="$RAPIDS_BLD_OUTPUT_DIR" ;;
2232
wheel_*) export RAPIDS_WHEEL_BLD_OUTPUT_DIR="$RAPIDS_BLD_OUTPUT_DIR" ;;

0 commit comments

Comments
 (0)