Repository navigation
CI: Jenkins integration testing (do not merge) #12094
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from all commits
0fdb0b5
a55b980
ec3581c
d934d93
6bdf90c
886bdca
e1b1d7d
c0def8f
1e41a32
3bc509a
33d6056
77f4c12
bfc4886
be0fa8b
2d470cd
25bb37d
f7042d3
8b873f8
4ae4056
7ae90e6
21966c5
44f471f
1e90995
0e1e70e
d62ca89
2fbdf67
0b3bcea
b673fad
3713845
054f661
8fde76d
05283a5
8f15ac4
0184afd
10d1278
2f5a5aa
c7eff42
4c5c299
4ae8d09
01f7298
695c5b5
00aea5f
31732d9
982265a
20d2e6b
eae928f
9bf8db3
9730097
f8e47e2
b689117
f947e94
c3a2d3a
0d96afa
fbaaede
0f39f2d
4d857ff
1d4e9c7
73e97e0
a0177c8
17d28fc
dbd45cd
4a9aa7a
4b21052
4be32d2
6271f52
b52b3aa
d947dc3
fb86f81
9aeb703
2cd11b0
701dd56
d664e5d
df389a8
1e514f5
bdbddd0
5a382a7
6f636e8
e38afb1
6da8cf0
df16282
cc55934
50be477
386937b
ee516f8
619ff8d
d525252
188be2d
f99c7e9
28bbff3
e439623
b714474
f0cd51f
1edb458
af75bc5
71b26ac
56bf830
983e78d
dce91e7
827033d
4e2cacf
0e71e85
e5f6546
d67e38d
fcfb57b
6fb8892
7803685
135d352
8e65e6c
dddb371
5a9e10c
b178887
37bc689
9760af0
6f9ecf0
ca34a28
47f4dc1
d938f96
8d2577d
6427b41
0f9b4aa
ad494e7
acfca9d
75537c9
98f672a
99cf14a
96dc0a8
ff15981
61148ee
a501b75
f359e61
96874f9
eee9e77
b4326a7
f5f00a2
347aba9
bcbfc64
8b5d5a8
a2bc53d
e348e2f
028b9be
7cca551
394f4d2
553933e
d9bcc49
f89c845
26bb2f8
e0c8a2e
ae6acd4
9422002
ab14560
b00a06a
ca8c937
61d70cc
100ecd1
6210b93
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -31,7 +31,7 @@ RUN apt update && \ | |||||
|
|
||||||
| # Install scctl for slurm client management (x86_64 only, not available for ARM64) | ||||||
| RUN if [ "$(uname -m)" = "x86_64" ]; then \ | ||||||
| curl -s https://urm.nvidia.com/artifactory/sw-swx-lab-infra-generic/scctl/get-app.sh | bash -s -- --output-dir /usr/local/bin || echo "INFO: scctl installation failed, continuing..."; \ | ||||||
| curl -fsS https://artifactory.nvidia.com/artifactory/sw-swx-lab-infra-generic-local/scctl/get-app.sh | bash -s -- --output-dir /usr/local/bin; \ | ||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Dropping
Suggested change
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Dropping the Suggested change: There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The Suggestion: |
||||||
| else \ | ||||||
| echo "INFO: Skipping scctl installation on $(uname -m) architecture (not available)"; \ | ||||||
| fi | ||||||
|
|
||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,13 +1,13 @@ | ||
| # UCX's aarch64 CUDA 13 + MOFED 24.10 release image plus what the DL cluster job | ||
| # needs on top: gdrcopy, which the cluster has no environment module for, and | ||
| # the Python packaging module test_ucx_tls.py imports. | ||
| # needs on top: gdrcopy, which the cluster has no environment module for, the | ||
| # Python packaging module test_ucx_tls.py imports, and ip for the io_demo test. | ||
|
|
||
| FROM harbor.mellanox.com/ucx/aarch64/ubuntu24.04-mofed24.10-cuda13:1 | ||
|
|
||
| ARG GDRCOPY_VERSION=2.5.1 | ||
|
|
||
| RUN apt-get update && \ | ||
| apt-get install -y --no-install-recommends python3-setuptools && \ | ||
| apt-get install -y --no-install-recommends python3-setuptools iproute2 && \ | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. minor —
|
||
| rm -rf /var/lib/apt/lists/* | ||
|
|
||
| # configure finds gdrcopy under /usr/local on its own. | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -13,58 +13,148 @@ withCredentials([usernamePassword(credentialsId: 'github-token', passwordVariabl | |
| githubHelper = GithubHelper.getInstance("${GIT_PASSWORD}", VARIABLE_FROM_POST) | ||
| } | ||
|
|
||
| // Abort previous dispatcher runs for the same PR | ||
| // Abort previous dispatcher runs for the same PR and their leaf jobs | ||
| def currentPrNumber = githubHelper.getPRNumber()?.toString() | ||
| if (currentPrNumber) { | ||
| def slurper = new groovy.json.JsonSlurper() | ||
| try { | ||
| Jenkins.instance.getItemByFullName(env.JOB_NAME).builds.findAll { | ||
| def staleBuilds = Jenkins.instance.getItemByFullName(env.JOB_NAME).builds.findAll { | ||
| it.isBuilding() && it.number < currentBuild.number | ||
| }.each { b -> | ||
| }.findAll { b -> | ||
| def gd = b.getAction(hudson.model.ParametersAction)?.getParameters()?.find { it.name == 'VARIABLE_FROM_POST' }?.value | ||
| def otherPr = gd ? slurper.parseText(gd)?.issue?.number?.toString() : null | ||
| if (otherPr == currentPrNumber) { | ||
| echo "Aborting dispatcher #${b.number} for same PR #${currentPrNumber}" | ||
| b.doStop() | ||
| // JsonSlurper is created per call: it is not Serializable, and holding it in | ||
| // a local across the sleep below fails the pipeline state checkpoint. | ||
| def otherPr = gd ? new groovy.json.JsonSlurper().parseText(gd)?.issue?.number?.toString() : null | ||
| otherPr == currentPrNumber | ||
| } | ||
|
|
||
| if (staleBuilds) { | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
|
||
| echo "PR #${currentPrNumber}: found ${staleBuilds.size()} stale dispatcher(s) to abort" | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Residual coverage gap (needs CI run links): CPS-safety of the rewritten dispatcher abort loop — |
||
| } | ||
|
|
||
| // Targets to kill as [jobFullName, buildNumber] pairs - holding Run objects | ||
| // across the sleep below breaks the pipeline state checkpoint (WorkflowRun is | ||
| // not serializable). Leaf builds are collected from each stale dispatcher's | ||
| // console log and listed first, so they are killed before their dispatcher. | ||
| // Leaf jobs are logged as "UCX-OSS » <job>". | ||
| def targets = [] | ||
| staleBuilds.each { b -> | ||
| b.getLog(1000).each { line -> | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Leaf builds found by scraping console text: There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Leaf discovery via console-log scraping is fragile. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. minor: There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. minor: |
||
| def m = (line =~ /Starting building: (.+) #(\d+)/) | ||
| if (m) { | ||
| targets.add([m[0][1].replace(' » ', '/'), m[0][2] as int]) | ||
| } | ||
| } | ||
| } | ||
| targets.addAll(staleBuilds.collect { [env.JOB_NAME, it.number] }) | ||
| staleBuilds = null | ||
|
|
||
| // Stop gracefully first so pipeline_stop can release Slurm allocations. | ||
| targets.each { t -> | ||
| if (Jenkins.instance.getItemByFullName(t[0])?.getBuildByNumber(t[1])?.isBuilding()) { | ||
| echo "Stopping ${t[0]} #${t[1]}" | ||
| Jenkins.instance.getItemByFullName(t[0])?.getBuildByNumber(t[1])?.doStop() | ||
| } | ||
| } | ||
| for (int i = 0; i < 30; i++) { | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The graceful-stop wait is up to |
||
| def stopping = targets.findAll { t -> | ||
| Jenkins.instance.getItemByFullName(t[0])?.getBuildByNumber(t[1])?.isBuilding() | ||
| } | ||
| if (!stopping) break | ||
| sleep 10 | ||
| } | ||
|
|
||
| for (int attempt = 1; attempt <= 3; attempt++) { | ||
| def alive = targets.findAll { t -> | ||
| Jenkins.instance.getItemByFullName(t[0])?.getBuildByNumber(t[1])?.isBuilding() | ||
| } | ||
| if (!alive) break | ||
| alive.each { t -> | ||
| echo "${attempt > 1 ? 'Retry ' + attempt + ': ' : ''}Killing ${t[0]} #${t[1]}" | ||
| Jenkins.instance.getItemByFullName(t[0])?.getBuildByNumber(t[1])?.doKill() | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Can we There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. blocker: the abort path changed from |
||
| } | ||
| if (attempt < 3) sleep 5 | ||
| } | ||
| } catch(Exception e) { | ||
| echo "Could not abort previous dispatchers: ${e.message}" | ||
| echo "Could not abort previous builds: ${e.message}" | ||
| } | ||
| } | ||
|
|
||
| def sha = githubHelper.getMergedSHA() | ||
| def pipelineOverviewUrl = "${env.BUILD_URL}pipeline-overview/" | ||
|
|
||
| githubHelper.updateCommitStatus(pipelineOverviewUrl, "Blossom CI started", GitHubCommitState.PENDING) | ||
| githubHelper.updateCommitStatus(pipelineOverviewUrl, "UCX CI started", GitHubCommitState.PENDING) | ||
| currentBuild.description = githubHelper.getBuildDescription() | ||
|
|
||
| def jobs = [ | ||
| 'ucx-codestyle-oss', | ||
| 'ucx-static-checks-oss', | ||
| 'ucx-coverity-oss', | ||
| 'ucx-build-oss', | ||
| 'ucx-build-static-oss', | ||
| 'ucx-test-oss', | ||
| 'ucx-test-gpu-oss', | ||
| 'ucx-test-dl-gpu-oss', | ||
| // Basic compile gates every leaf but codestyle, as on Azure: a PR that does | ||
| // not build must not take GPU, BlueField or Slurm slots. | ||
| def gateJob = 'UCX-OSS/ucx-basic-compile-oss' | ||
|
|
||
| // Leaf jobs to dispatch, keyed by parallel-branch name | ||
| def gateStageJobs = [ | ||
| 'codestyle': 'UCX-OSS/ucx-codestyle-oss', | ||
| ] | ||
| def leafJobs = [ | ||
| 'static-checks': 'UCX-OSS/ucx-static-checks-oss', | ||
| 'coverity': 'UCX-OSS/ucx-coverity-oss', | ||
| 'build': 'UCX-OSS/ucx-build-oss', | ||
| 'build-static': 'UCX-OSS/ucx-build-static-oss', | ||
| 'test': 'UCX-OSS/ucx-test-oss', | ||
| 'gpu': 'UCX-OSS/ucx-test-gpu-oss', | ||
| 'cuda': 'UCX-OSS/ucx-test-cuda-oss', | ||
| 'dl-gpu': 'UCX-OSS/ucx-test-dl-gpu-oss', | ||
| 'bindings': 'UCX-OSS/ucx-test-bindings-oss', | ||
| 'bindings-gpu': 'UCX-OSS/ucx-test-bindings-gpu-oss', | ||
| 'bindings-arm': 'UCX-OSS/ucx-test-bindings-arm-oss', | ||
| 'ucxx': 'UCX-OSS/ucx-test-ucxx-oss', | ||
| 'ucxx-gpu': 'UCX-OSS/ucx-test-ucxx-gpu-oss', | ||
| 'namespace': 'UCX-OSS/ucx-test-namespace-oss', | ||
| 'wirecompat': 'UCX-OSS/ucx-test-wirecompat-oss', | ||
| 'wirecompat-gpu': 'UCX-OSS/ucx-test-wirecompat-gpu-oss', | ||
| 'efa': 'UCX-OSS/ucx-test-efa-oss', | ||
| 'mad': 'UCX-OSS/ucx-test-mad-oss', | ||
| 'bf': 'UCX-OSS/ucx-test-bf-oss', | ||
| ] | ||
|
|
||
| try { | ||
| def fanout = [:] | ||
| for (def j in jobs) { | ||
| def jobName = "UCX-OSS/${j}" | ||
| fanout[jobName] = { | ||
| build job: jobName, parameters: [ | ||
| string(name: 'sha1', value: sha), | ||
| string(name: 'githubData', value: VARIABLE_FROM_POST), | ||
| ], propagate: false, wait: true | ||
| // Compute the merged SHA once so all leaf jobs test the same commit | ||
| def mergedSHA = githubHelper.getMergedSHA() | ||
| def leafParams = [ | ||
| string(name: 'sha1', value: mergedSHA), | ||
| string(name: 'githubData', value: VARIABLE_FROM_POST) | ||
| ] | ||
|
|
||
| // Leaf jobs report their own GitHub statuses; the dispatcher build stays | ||
| // SUCCESS unless dispatching itself fails. catchError paints a failed | ||
| // leaf's branch red without failing the build, and all branches run to | ||
| // completion regardless of sibling failures. | ||
| def leafBranches = { jobs -> | ||
| jobs.collectEntries { branchName, jobName -> | ||
| [(branchName): { | ||
| catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE', catchInterruptions: false) { | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. with |
||
| build job: jobName, parameters: leafParams, wait: true | ||
| } | ||
| }] | ||
| } | ||
| } | ||
| parallel fanout | ||
| githubHelper.updateCommitStatus(pipelineOverviewUrl, "Blossom CI passed", GitHubCommitState.SUCCESS) | ||
|
|
||
| // Any non-SUCCESS gate result, an abort included, skips the leaf jobs. | ||
| def gate = null | ||
| parallel(leafBranches(gateStageJobs) + ['basic-compile': { | ||
| catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE', catchInterruptions: false) { | ||
| gate = build job: gateJob, parameters: leafParams, wait: true, propagate: false | ||
| if (gate.result != 'SUCCESS') { | ||
| error("Basic compile ${gate.result}: ${gate.absoluteUrl}") | ||
| } | ||
| } | ||
| }]) | ||
| if (gate?.result != 'SUCCESS') { | ||
| error("Basic compile did not pass, skipping the other jobs: ${gate?.absoluteUrl}") | ||
| } | ||
|
|
||
| parallel(leafBranches(leafJobs)) | ||
|
|
||
| githubHelper.updateCommitStatus(pipelineOverviewUrl, "UCX CI ended", GitHubCommitState.SUCCESS) | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. minor: Both the success and failure paths now post the same description, |
||
| } catch(Exception ex) { | ||
| println ex | ||
| githubHelper.updateCommitStatus(pipelineOverviewUrl, "Blossom CI failed", GitHubCommitState.FAILURE) | ||
| githubHelper.updateCommitStatus(pipelineOverviewUrl, "UCX CI ended", GitHubCommitState.FAILURE) | ||
| throw ex | ||
| } | ||
| Original file line number | Diff line number | Diff line change | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -49,11 +49,10 @@ | |||||||||
| - git: | ||||||||||
| url: "https://github.com/openucx/ucx.git" | ||||||||||
| branches: [ 'master' ] | ||||||||||
| shallow-clone: true | ||||||||||
| depth: 100 | ||||||||||
| refspec: "+refs/heads/*:refs/remotes/origin/* +refs/pull/*:refs/remotes/origin/pr/*" | ||||||||||
| browser: githubweb | ||||||||||
| browser-url: "https://github.com/openucx/ucx" | ||||||||||
| wipe-workspace: false | ||||||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Why There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. why were There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. why |
||||||||||
| script-path: ".ci/jenkins/Jenkinsfile.dispatcher" | ||||||||||
|
|
||||||||||
| - job-template: | ||||||||||
|
|
@@ -100,11 +99,10 @@ | |||||||||
| - git: | ||||||||||
| url: "https://github.com/openucx/ucx.git" | ||||||||||
| branches: [ '$sha1' ] | ||||||||||
| shallow-clone: true | ||||||||||
| depth: 100 | ||||||||||
| refspec: "+refs/heads/*:refs/remotes/origin/* +refs/pull/*:refs/remotes/origin/pr/*" | ||||||||||
| browser: githubweb | ||||||||||
| browser-url: "https://github.com/openucx/ucx" | ||||||||||
| wipe-workspace: false | ||||||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Same concern as line 55: There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. minor: why There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. why There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. blocker:
Suggested change
That keeps the local git objects (which is presumably why shallow-clone was dropped — JUCX needs There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Are |
||||||||||
| script-path: ".ci/jenkins/Jenkinsfile.github" | ||||||||||
|
|
||||||||||
| - project: | ||||||||||
|
|
@@ -121,6 +119,14 @@ | |||||||||
| jobs: | ||||||||||
| - "{jjb_proj}" | ||||||||||
|
|
||||||||||
| - project: | ||||||||||
| name: ucx-basic-compile | ||||||||||
| jjb_proj: "ucx-basic-compile-oss" | ||||||||||
| jjb_conf_file: ".ci/pipeline/basic_compile_matrix.yaml" | ||||||||||
| jjb_description: "UCX Basic compile gate (GitHub Blossom). Do NOT edit via Web GUI!" | ||||||||||
| jobs: | ||||||||||
| - "{jjb_proj}" | ||||||||||
|
|
||||||||||
| - project: | ||||||||||
| name: ucx-static-checks | ||||||||||
| jjb_proj: "ucx-static-checks-oss" | ||||||||||
|
|
@@ -169,10 +175,114 @@ | |||||||||
| jobs: | ||||||||||
| - "{jjb_proj}" | ||||||||||
|
|
||||||||||
| - project: | ||||||||||
| name: ucx-test-cuda | ||||||||||
| jjb_proj: "ucx-test-cuda-oss" | ||||||||||
| jjb_conf_file: ".ci/pipeline/test_cuda_matrix.yaml" | ||||||||||
| jjb_description: "UCX CUDA memory hooks and SONAME suffix tests on funk (GitHub Blossom). Do NOT edit via Web GUI!" | ||||||||||
| jobs: | ||||||||||
| - "{jjb_proj}" | ||||||||||
|
|
||||||||||
| - project: | ||||||||||
| name: ucx-test-dl-gpu | ||||||||||
| jjb_proj: "ucx-test-dl-gpu-oss" | ||||||||||
| jjb_conf_file: ".ci/pipeline/test_dl_matrix.yaml" | ||||||||||
| jjb_description: "UCX GTest on DL cluster (GB200/aarch64). Do NOT edit via Web GUI!" | ||||||||||
| jobs: | ||||||||||
| - "{jjb_proj}" | ||||||||||
|
|
||||||||||
| - project: | ||||||||||
| name: ucx-test-bindings | ||||||||||
| jjb_proj: "ucx-test-bindings-oss" | ||||||||||
| jjb_conf_file: ".ci/pipeline/test_bindings_matrix.yaml" | ||||||||||
| jjb_description: "UCX Go and JUCX bindings tests (GitHub Blossom). Do NOT edit via Web GUI!" | ||||||||||
| jobs: | ||||||||||
| - "{jjb_proj}" | ||||||||||
|
|
||||||||||
| - project: | ||||||||||
| name: ucx-test-bindings-gpu | ||||||||||
| jjb_proj: "ucx-test-bindings-gpu-oss" | ||||||||||
| jjb_conf_file: ".ci/pipeline/test_bindings_gpu_matrix.yaml" | ||||||||||
| jjb_description: "UCX Go and JUCX GPU bindings tests on funk (GitHub Blossom). Do NOT edit via Web GUI!" | ||||||||||
| jobs: | ||||||||||
| - "{jjb_proj}" | ||||||||||
|
|
||||||||||
| - project: | ||||||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Two new jobs are registered but never dispatched: |
||||||||||
| name: ucx-test-bindings-arm | ||||||||||
| jjb_proj: "ucx-test-bindings-arm-oss" | ||||||||||
| jjb_conf_file: ".ci/pipeline/test_bindings_arm_matrix.yaml" | ||||||||||
| jjb_description: "UCX JUCX tests on DL cluster (GB200/aarch64) (GitHub Blossom). Do NOT edit via Web GUI!" | ||||||||||
| jobs: | ||||||||||
| - "{jjb_proj}" | ||||||||||
|
|
||||||||||
| - project: | ||||||||||
| name: ucx-test-ucxx | ||||||||||
| jjb_proj: "ucx-test-ucxx-oss" | ||||||||||
| jjb_conf_file: ".ci/pipeline/test_ucxx_matrix.yaml" | ||||||||||
| jjb_description: "UCXX builds and CPU tests against UCX (GitHub Blossom). Do NOT edit via Web GUI!" | ||||||||||
| jobs: | ||||||||||
| - "{jjb_proj}" | ||||||||||
|
|
||||||||||
| - project: | ||||||||||
| name: ucx-test-ucxx-gpu | ||||||||||
| jjb_proj: "ucx-test-ucxx-gpu-oss" | ||||||||||
| jjb_conf_file: ".ci/pipeline/test_ucxx_gpu_matrix.yaml" | ||||||||||
| jjb_description: "UCXX wheel and GPU tests against UCX on funk (GitHub Blossom). Do NOT edit via Web GUI!" | ||||||||||
| jobs: | ||||||||||
| - "{jjb_proj}" | ||||||||||
|
|
||||||||||
| - project: | ||||||||||
| name: ucx-test-namespace | ||||||||||
| jjb_proj: "ucx-test-namespace-oss" | ||||||||||
| jjb_conf_file: ".ci/pipeline/test_namespace_matrix.yaml" | ||||||||||
| jjb_description: "UCX namespace tests (GitHub Blossom). Do NOT edit via Web GUI!" | ||||||||||
| jobs: | ||||||||||
| - "{jjb_proj}" | ||||||||||
|
|
||||||||||
| - project: | ||||||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Existing thread (+1, still true): There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. +1 (existing thread, still true): |
||||||||||
| name: ucx-test-namespace-gpu | ||||||||||
| jjb_proj: "ucx-test-namespace-gpu-oss" | ||||||||||
| jjb_conf_file: ".ci/pipeline/test_namespace_gpu_matrix.yaml" | ||||||||||
| jjb_description: "UCX GPU namespace tests on funk (GitHub Blossom). Do NOT edit via Web GUI!" | ||||||||||
| jobs: | ||||||||||
| - "{jjb_proj}" | ||||||||||
|
|
||||||||||
| - project: | ||||||||||
| name: ucx-test-wirecompat | ||||||||||
| jjb_proj: "ucx-test-wirecompat-oss" | ||||||||||
| jjb_conf_file: ".ci/pipeline/test_wirecompat_matrix.yaml" | ||||||||||
| jjb_description: "UCX wire compatibility tests (GitHub Blossom). Do NOT edit via Web GUI!" | ||||||||||
| jobs: | ||||||||||
| - "{jjb_proj}" | ||||||||||
|
|
||||||||||
| - project: | ||||||||||
| name: ucx-test-wirecompat-gpu | ||||||||||
| jjb_proj: "ucx-test-wirecompat-gpu-oss" | ||||||||||
| jjb_conf_file: ".ci/pipeline/test_wirecompat_gpu_matrix.yaml" | ||||||||||
| jjb_description: "UCX GPU wire compatibility tests on funk (GitHub Blossom). Do NOT edit via Web GUI!" | ||||||||||
| jobs: | ||||||||||
| - "{jjb_proj}" | ||||||||||
|
|
||||||||||
| - project: | ||||||||||
| name: ucx-test-efa | ||||||||||
| jjb_proj: "ucx-test-efa-oss" | ||||||||||
| jjb_conf_file: ".ci/pipeline/test_efa_matrix.yaml" | ||||||||||
| jjb_description: "UCX EFA tests on AWS (GitHub Blossom). Do NOT edit via Web GUI!" | ||||||||||
| jobs: | ||||||||||
| - "{jjb_proj}" | ||||||||||
|
|
||||||||||
| - project: | ||||||||||
| name: ucx-test-mad | ||||||||||
| jjb_proj: "ucx-test-mad-oss" | ||||||||||
| jjb_conf_file: ".ci/pipeline/test_mad_matrix.yaml" | ||||||||||
| jjb_description: "UCX MAD tests (GitHub Blossom). Do NOT edit via Web GUI!" | ||||||||||
| jobs: | ||||||||||
| - "{jjb_proj}" | ||||||||||
|
|
||||||||||
| - project: | ||||||||||
| name: ucx-test-bf | ||||||||||
| jjb_proj: "ucx-test-bf-oss" | ||||||||||
| jjb_conf_file: ".ci/pipeline/test_bf_matrix.yaml" | ||||||||||
| jjb_description: "UCX GTest on BlueField (GitHub Blossom). Do NOT edit via Web GUI!" | ||||||||||
| jobs: | ||||||||||
| - "{jjb_proj}" | ||||||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The scctl URL fix will not reach the x86_64 jobs: all consumers still pin
CI_IMAGE_TAG: "20260223-1"(test_gpu,test_cuda,test_bindings_gpu,test_ucxx_gpu,test_namespace_gpu,test_wirecompat_gpu), and ci-demo only builds afile:-based image when the tag is missing (hence thebuild_dockersforce parameter in the job template).Dockerfile.dl-basegot its tag bumped (20260906-1→20261018-1) in the same diff — pls bump the build_helper tag too. Dropping the|| echo "... continuing"also means a failed download now fails the image build, which makes the stale-image case silent rather than loud.