Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
135 commits
Select commit Hold shift + click to select a range
8e3c3f0
Create LICENSE
cjnolet Jun 5, 2025
8ec0201
Initial commit
cjnolet Jul 2, 2025
39de07f
Create .pre-commit-config.yaml
cjnolet Jul 2, 2025
6020469
Updates
cjnolet Jul 2, 2025
98d5f03
update copyright
benfred Jul 2, 2025
42e5d02
standardize license text
benfred Jul 2, 2025
2b2ae08
Create CONTRIBUTING.md
cjnolet Jul 8, 2025
cdfeca0
Update README.md
cjnolet Jul 16, 2025
c5cf67b
Adding codeowners
cjnolet Jul 25, 2025
d3ff041
feat: add ops-bot config
gforsyth Jul 30, 2025
ad8813f
Add the Spotless Maven plugin (and other initial changes) (NVIDIA/cuv…
narangvivek10 Jul 30, 2025
9ed4a68
Update package names (NVIDIA/cuvs-lucene#9)
narangvivek10 Jul 31, 2025
054fafb
Updates to adapt with cuVS-Java API changes (NVIDIA/cuvs-lucene#10)
narangvivek10 Aug 2, 2025
2bbd0e3
Merge pull request NVIDIA/cuvs-lucene#12 from dantegd/fea-add-ci
dantegd Aug 11, 2025
906cca6
Enable CI (NVIDIA/cuvs-lucene#15)
dantegd Aug 26, 2025
9e23cba
simplify build scripts (NVIDIA/cuvs-lucene#19)
jameslamb Aug 27, 2025
1509652
Build and test with CUDA 13.0 (NVIDIA/cuvs-lucene#20)
jameslamb Sep 2, 2025
d8af7fe
Use branch-25.10 again (NVIDIA/cuvs-lucene#21)
jameslamb Sep 5, 2025
68f04dc
Configure repo for automatic release notes generation (NVIDIA/cuvs-lu…
AyodeAwe Sep 22, 2025
22c71b2
Fix Tests/CI, refactor merge to call CAGRA's merge(), implement CAGRA…
chatman Sep 24, 2025
19aadc1
CAGRA to HNSW serialization and search on CPU (NVIDIA/cuvs-lucene#16)
narangvivek10 Sep 26, 2025
1bed6b2
Remove hnswlib index (NVIDIA/cuvs-lucene#24)
narangvivek10 Oct 1, 2025
d52d250
Update pom.xml - Add meta information, configure Maven Surefire Plugi…
narangvivek10 Oct 2, 2025
29f8dfd
Removing 10.2 codecs to avoid backward compatibility issues during Lu…
narangvivek10 Oct 3, 2025
d642fec
Avoid copying vectors to heap before creating dataset matrix (NVIDIA/…
chatman Oct 9, 2025
f4bd682
Upgrade to cuvs-java maven central artifacts, single-vector bugfix (N…
chatman Oct 17, 2025
e3c53e3
Use main branch (NVIDIA/cuvs-lucene#32)
rockhowse Oct 21, 2025
d0649a7
Use main shared-workflows branch (NVIDIA/cuvs-lucene#33)
rockhowse Oct 21, 2025
2e28888
Add Javadocs and configure the Apache Maven Javadoc Plugin (NVIDIA/cu…
narangvivek10 Oct 24, 2025
f15d934
Fix cuvs-lucene Github artifact publication (NVIDIA/cuvs-lucene#34)
mythrocks Oct 31, 2025
2e5dc2b
Add support to build the sources jar. (NVIDIA/cuvs-lucene#44)
mythrocks Nov 13, 2025
b00e7d0
Use SPDX for all copyright headers (NVIDIA/cuvs-lucene#47)
narangvivek10 Nov 17, 2025
2f8977c
updated update-version.sh to handle release branch version changes (N…
rockhowse Nov 18, 2025
9a88a3b
Merge pull request NVIDIA/cuvs-lucene#51 from rapidsai/version-update…
AyodeAwe Nov 18, 2025
339f564
Update for release branch release/25.12
AyodeAwe Nov 18, 2025
ac8f525
Modify CI pipeline to use latest cuvs-java instead of the one release…
narangvivek10 Nov 25, 2025
c1837ba
Use strict priority in CI conda tests (NVIDIA/cuvs-lucene#53)
bdice Nov 25, 2025
0025e3d
Setup Java Code Coverage and add more tests (NVIDIA/cuvs-lucene#42)
narangvivek10 Nov 25, 2025
65a8b65
Lucene version agnostic vector format implementation (NVIDIA/cuvs-luc…
narangvivek10 Nov 25, 2025
fceaf1a
Modify CI pipeline to use latest cuvs-java instead of the one release…
narangvivek10 Nov 25, 2025
de0b8e4
Use strict priority in CI conda tests (NVIDIA/cuvs-lucene#53)
bdice Nov 25, 2025
ba1ed61
Setup Java Code Coverage and add more tests (NVIDIA/cuvs-lucene#42)
narangvivek10 Nov 25, 2025
4446492
Lucene version agnostic vector format implementation (NVIDIA/cuvs-luc…
narangvivek10 Nov 25, 2025
38d4355
Make RAPIDS_BRANCH have release/25.12
narangvivek10 Nov 26, 2025
ef5c64c
Use strict priority in CI conda tests (NVIDIA/cuvs-lucene#60)
bdice Dec 2, 2025
3cb76cf
Merge pull request NVIDIA/cuvs-lucene#56 from SearchScale/vivek/bring…
gforsyth Dec 4, 2025
54f89cd
Updates to the logging setup and adapt with latest cuvs-java changes …
narangvivek10 Dec 4, 2025
fae2db0
Merge release/25.12 into main
narangvivek10 Dec 5, 2025
1453189
Enable merge barriers (NVIDIA/cuvs-lucene#68)
KyleFromNVIDIA Dec 9, 2025
ca71f92
Merge branch 'main' into main-merge-release/25.12
narangvivek10 Dec 10, 2025
d4a3a83
Merge pull request NVIDIA/cuvs-lucene#66 from SearchScale/main-merge-…
rapids-bot[bot] Dec 10, 2025
43b4986
Fix for issue - pipeline marked successful even when the build failed…
narangvivek10 Jan 5, 2026
432400f
Update spotless config - remove license header enforcement (NVIDIA/cu…
narangvivek10 Jan 5, 2026
46ce1d5
Fix groupId in build.sh and remove warnings (NVIDIA/cuvs-lucene#69)
narangvivek10 Jan 5, 2026
2e191ff
Setup examples (NVIDIA/cuvs-lucene#72)
narangvivek10 Jan 6, 2026
43225c7
Refactor GPUPerLeafCuVSKnnCollector, plug in iTopK and search width v…
narangvivek10 Jan 6, 2026
2413df0
Setup JMH (NVIDIA/cuvs-lucene#71)
narangvivek10 Jan 6, 2026
9a6567b
Cleanup FilterCuVSProvider (NVIDIA/cuvs-lucene#77)
narangvivek10 Jan 6, 2026
fb17889
Fix spotless plugin configuration for examples (NVIDIA/cuvs-lucene#88)
narangvivek10 Jan 6, 2026
8bb8171
build and test against CUDA 13.1.0 (NVIDIA/cuvs-lucene#89)
jameslamb Jan 8, 2026
4b3adc8
Fix for result returned was not in topk (NVIDIA/cuvs-lucene#94)
narangvivek10 Jan 12, 2026
238f925
Setup ThreadLocal based CuVSResources usage (NVIDIA/cuvs-lucene#87)
narangvivek10 Jan 13, 2026
2546fc2
Use main shared-workflows branch (NVIDIA/cuvs-lucene#96)
jameslamb Jan 14, 2026
9b87665
Revert "Prepare release/26.02"
AyodeAwe Jan 16, 2026
7a0f494
Prepare release/26.02
AyodeAwe Jan 16, 2026
2131359
Update to 26.04 (NVIDIA/cuvs-lucene#98)
AyodeAwe Jan 16, 2026
db06f9d
Add quantization vector formats, writers, and codecs (NVIDIA/cuvs-luc…
punAhuja Jan 22, 2026
af0c6ff
Merge pull request NVIDIA/cuvs-lucene#100 from rapidsai/release/26.02
GPUtester Jan 22, 2026
4222db2
fix(build): build package on merge to `release/*` branch (NVIDIA/cuvs…
gforsyth Jan 26, 2026
17eebcb
Merge pull request NVIDIA/cuvs-lucene#102 from rapidsai/release/26.02
GPUtester Jan 26, 2026
3d3043b
Make CAGRA graph build algo configurable (NVIDIA/cuvs-lucene#73)
narangvivek10 Jan 28, 2026
bef3a47
Merge pull request NVIDIA/cuvs-lucene#107 from rapidsai/release/26.02
GPUtester Jan 28, 2026
5f97c26
Revise README with build and test details (NVIDIA/cuvs-lucene#108)
cjnolet Jan 28, 2026
3bb8782
Update readme (NVIDIA/cuvs-lucene#111)
narangvivek10 Jan 28, 2026
9388dfd
Merge pull request NVIDIA/cuvs-lucene#112 from rapidsai/release/26.02
GPUtester Jan 28, 2026
cb4fe5a
Add a multi-threaded test for searching on the GPU (NVIDIA/cuvs-lucen…
narangvivek10 Jan 29, 2026
04cef69
Merge pull request NVIDIA/cuvs-lucene#113 from rapidsai/release/26.02
GPUtester Jan 29, 2026
7a2bd19
use CUDA 13.1.1, update pre-commit hooks (NVIDIA/cuvs-lucene#116)
jameslamb Feb 3, 2026
3d65177
Setup parameter validation and encapsulate parameters (NVIDIA/cuvs-lu…
narangvivek10 Feb 3, 2026
a1753c1
check-nightly-ci: update to new version (NVIDIA/cuvs-lucene#119)
jameslamb Feb 20, 2026
53fb7e9
Make CAGRA build algo configurable for the AcceleratedHNSW (NVIDIA/cu…
narangvivek10 Mar 5, 2026
79c041c
Revert "Prepare release/26.04"
AyodeAwe Mar 12, 2026
86d8e84
Prepare release/26.04
AyodeAwe Mar 12, 2026
d3700d8
Update to 26.06 (NVIDIA/cuvs-lucene#123)
AyodeAwe Mar 12, 2026
cf6d755
Code improvements - Index and search on the GPU API (NVIDIA/cuvs-luce…
narangvivek10 Apr 1, 2026
a3ad02e
Code improvements - AcceleratedHNSW API (NVIDIA/cuvs-lucene#115)
narangvivek10 Apr 2, 2026
77cdc53
Merge release/26.04 into main
AyodeAwe Apr 6, 2026
b3784f5
Resolve forward-merge release/26.04 into main (NVIDIA/cuvs-lucene#130)
AyodeAwe Apr 6, 2026
d18d9c7
Introduce a heuristic approach to CAGRA build algorithm selection and…
narangvivek10 May 4, 2026
8426eda
Build and test with CUDA 13.2.0 (NVIDIA/cuvs-lucene#144)
bdice May 12, 2026
982f445
fix(ci): resolve all zizmor findings and add zizmor pre-commit checks…
gforsyth May 14, 2026
5971bfe
Prepare release/26.06
jolorunyomi May 15, 2026
05e9a4c
Revert "Prepare release/26.06"
jolorunyomi May 15, 2026
dd3f051
Update to 26.08.00
jolorunyomi May 15, 2026
342e62e
Merge pull request NVIDIA/cuvs-lucene#148 from rapidsai/version-updat…
jolorunyomi May 15, 2026
39910bf
Add SECURITY.md (NVIDIA/cuvs-lucene#154)
jameslamb May 29, 2026
3b5a084
use GCS mirror for Maven, fix benchmarks version, other small changes…
jameslamb Jun 26, 2026
8ffc410
Build and test with CUDA 13.3.0 (NVIDIA/cuvs-lucene#164)
bdice Jun 26, 2026
ff0878c
Update CODEOWNERS team names for rapidsai->NVIDIA migration
josephine-wolf-oberholtzer Jun 26, 2026
535aaf8
Add verify-codeowners pre-commit check
josephine-wolf-oberholtzer Jun 26, 2026
dca9597
Disable verify-codeowners check
josephine-wolf-oberholtzer Jun 26, 2026
534a962
Merge pull request NVIDIA/cuvs-lucene#169 from josephine-wolf-oberhol…
josephine-wolf-oberholtzer Jun 26, 2026
2b95f5a
cuvs-lucene-137: increase max-number of HNSW layers in CAGRA_HNSW's c…
nvzm123 Jul 15, 2026
b7048c4
Revert "Prepare release/26.08"
jolorunyomi Jul 16, 2026
69bb9da
Prepare release/26.08
jolorunyomi Jul 16, 2026
abc5517
Update to 26.10.00
jolorunyomi Jul 16, 2026
a0108af
Merge pull request NVIDIA/cuvs-lucene#176 from NVIDIA/version-update-…
jolorunyomi Jul 16, 2026
93ccb67
Upgrade cuda 12.9.1 -> 12.9.2 (NVIDIA/cuvs-lucene#179)
imotov Jul 21, 2026
d80835c
Update README.md (NVIDIA/cuvs-lucene#136)
aamijar Jul 23, 2026
fb5113a
Merge pull request NVIDIA/cuvs-lucene#180 from NVIDIA/release/26.08
GPUtester Jul 23, 2026
ec367ed
Backport NVIDIA/cuvs-lucene#179 Upgrade cuda 12.9.1 -> 12.9.2 to 26.0…
imotov Jul 27, 2026
6093019
Merge pull request NVIDIA/cuvs-lucene#183 from NVIDIA/release/26.08
GPUtester Jul 27, 2026
8790636
Use a proper libcuvs library when RAPIDS_VERSION points to a PR branc…
imotov Jul 27, 2026
e273e8d
Merge pull request NVIDIA/cuvs-lucene#184 from NVIDIA/release/26.08
GPUtester Jul 27, 2026
20f945b
Implement dataset-based CAGRA params in FilterCuVSProvider (NVIDIA/cu…
jamxia155 Jul 29, 2026
e5120ae
Merge pull request NVIDIA/cuvs-lucene#188 from NVIDIA/release/26.08
GPUtester Jul 29, 2026
7cfbd74
enforce 'yamllint' checks, expand changed-files exclusions (NVIDIA/cu…
jameslamb Jul 29, 2026
80b003e
remove hard-coded CI matrices (NVIDIA/cuvs-lucene#189)
jameslamb Jul 29, 2026
859c1a9
Multi segment cagra search (NVIDIA/cuvs-lucene#133)
jamxia155 Jul 30, 2026
2f2e29e
Merge pull request NVIDIA/cuvs-lucene#190 from NVIDIA/release/26.08
GPUtester Jul 30, 2026
3751a1b
Fix cuvs-lucene to work with NVIDIA/cuvs#1846
imotov Jul 31, 2026
153137d
Switch RAPIDS_BRANCH to release/26.08
imotov Jul 31, 2026
6a17e86
Merge pull request NVIDIA/cuvs-lucene#192 from imotov/fix-cuvs-lucene…
cjnolet Jul 31, 2026
be6b4f3
Merge pull request NVIDIA/cuvs-lucene#193 from NVIDIA/release/26.08
GPUtester Jul 31, 2026
a847edd
Merge main branch of 'cuvs-lucene' into cuvs
imotov Aug 4, 2026
fa46aed
Move: Delete redundant cuvs-lucene project files
imotov Aug 1, 2026
317318a
Move: Update build script
imotov Aug 1, 2026
9737c2e
Move: Update CI scripts
imotov Aug 1, 2026
b58979f
Move: fix update-version.sh
imotov Aug 1, 2026
3d68cd1
Move: Update READMEs
imotov Aug 1, 2026
39d1633
Move: sccache is not needed in this java build
imotov Aug 4, 2026
2760d2a
Move: Bring spotless application in line with cuvs-lucene
imotov Aug 4, 2026
c20e685
Move: add ignored words to codespell config
imotov Aug 4, 2026
b57e9c9
Redo: pre-commit run
imotov Aug 4, 2026
f251a6a
Move: avoid maven repo - it rate limits
imotov Aug 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,41 @@ jobs:
artifact-name: "cuvs-java-cuda${{ matrix.CUDA_VER }}"
file_to_upload: "java/cuvs-java/target/"
sha: ${{ inputs.sha }}
lucene-build-matrix:
needs: cpp-build
permissions:
contents: read
uses: rapidsai/shared-workflows/.github/workflows/compute-matrix.yaml@main
with:
build_type: pull-request
matrix_name: conda-cpp-build
matrix_filter: map(select(.ARCH == "amd64"))
lucene-build:
# Depends on the Java job for the cuvs-java artifact that cuvs-lucene builds against.
needs: [lucene-build-matrix, java-build]
permissions:
actions: read
contents: read
id-token: write
packages: read
pull-requests: read
secrets: inherit # zizmor: ignore[secrets-inherit]
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@main
# Artifacts are not published from these jobs, so it's safe to run for multiple CUDA versions.
# If these jobs start producing artifacts, the names will have to differentiate between CUDA versions.
strategy:
fail-fast: false
matrix: ${{ fromJSON(needs.lucene-build-matrix.outputs.matrix) }}
with:
build_type: ${{ inputs.build_type || 'branch' }}
branch: ${{ inputs.branch }}
arch: "amd64"
date: ${{ inputs.date }}
container_image: "rapidsai/ci-conda:26.10-cuda${{ matrix.CUDA_VER }}-${{ matrix.LINUX_VER }}-py${{ matrix.PY_VER }}"
script: "ci/build_lucene.sh cuvs-java-cuda${{ matrix.CUDA_VER }}"
artifact-name: "cuvs-lucene-cuda${{ matrix.CUDA_VER }}"
file_to_upload: "java/cuvs-lucene/target/"
sha: ${{ inputs.sha }}
python-build:
needs: [cpp-build]
permissions:
Expand Down
45 changes: 45 additions & 0 deletions .github/workflows/pr.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ jobs:
- rocky8-clib-tests
- conda-java-build-and-tests-matrix
- conda-java-build-and-tests
- conda-lucene-build-and-tests-matrix
- conda-lucene-build-and-tests
- rust-build-matrix
- rust-build
- go-build-matrix
Expand Down Expand Up @@ -134,6 +136,7 @@ jobs:
- '!ci/release/update-version.sh'
- '!ci/run_cuvs_pytests.sh'
- '!ci/test_java.sh'
- '!ci/test_lucene.sh'
- '!ci/test_python.sh'
- '!ci/test_wheel_cuvs.sh'
- '!ci/validate_wheel.sh'
Expand Down Expand Up @@ -215,12 +218,14 @@ jobs:
- '!.yamllint.yaml'
- '!ci/build_go.sh'
- '!ci/build_java.sh'
- '!ci/build_lucene.sh'
- '!ci/build_rust.sh'
- '!ci/check_style.sh'
- '!ci/release/update-version.sh'
- '!ci/run_ctests.sh'
- '!ci/test_cpp.sh'
- '!ci/test_java.sh'
- '!ci/test_lucene.sh'
- '!ci/test_standalone_c.sh'
- '!ci/test_wheel_cuvs.sh'
- '!ci/validate_wheel.sh'
Expand Down Expand Up @@ -260,6 +265,7 @@ jobs:
- '!ci/build_docs.sh'
- '!ci/build_go.sh'
- '!ci/build_java.sh'
- '!ci/build_lucene.sh'
- '!ci/build_python.sh'
- '!ci/build_rust.sh'
- '!ci/build_standalone_c.sh'
Expand All @@ -268,6 +274,7 @@ jobs:
- '!ci/run_ctests.sh'
- '!ci/test_cpp.sh'
- '!ci/test_java.sh'
- '!ci/test_lucene.sh'
- '!ci/test_python.sh'
- '!ci/test_standalone_c.sh'
- '!ci/validate_wheel.sh'
Expand Down Expand Up @@ -311,6 +318,7 @@ jobs:
- '!ci/build_docs.sh'
- '!ci/build_go.sh'
- '!ci/build_java.sh'
- '!ci/build_lucene.sh'
- '!ci/build_python.sh'
- '!ci/build_wheel*.sh'
- '!ci/check_style.sh'
Expand All @@ -319,6 +327,7 @@ jobs:
- '!ci/run_cuvs_pytests.sh'
- '!ci/test_cpp.sh'
- '!ci/test_java.sh'
- '!ci/test_lucene.sh'
- '!ci/test_python.sh'
- '!ci/test_wheel_cuvs.sh'
- '!ci/validate_wheel.sh'
Expand Down Expand Up @@ -353,6 +362,7 @@ jobs:
- '!SECURITY.md'
- '!ci/build_docs.sh'
- '!ci/build_java.sh'
- '!ci/build_lucene.sh'
- '!ci/build_python.sh'
- '!ci/build_rust.sh'
- '!ci/build_wheel*.sh'
Expand All @@ -362,6 +372,7 @@ jobs:
- '!ci/run_cuvs_pytests.sh'
- '!ci/test_cpp.sh'
- '!ci/test_java.sh'
- '!ci/test_lucene.sh'
- '!ci/test_python.sh'
- '!ci/test_standalone_c.sh'
- '!ci/test_wheel_cuvs.sh'
Expand Down Expand Up @@ -555,6 +566,40 @@ jobs:
script: "ci/test_java.sh"
artifact-name: "cuvs-java-cuda${{ matrix.CUDA_VER }}"
file_to_upload: "java/cuvs-java/target/"
conda-lucene-build-and-tests-matrix:
needs: [conda-cpp-build, changed-files]
permissions:
contents: read
uses: rapidsai/shared-workflows/.github/workflows/compute-matrix.yaml@main
if: fromJSON(needs.changed-files.outputs.changed_file_groups).test_java || fromJSON(needs.changed-files.outputs.changed_file_groups).test_cpp
with:
build_type: pull-request
matrix_name: conda-cpp-build
matrix_filter: map(select(.ARCH == "amd64"))
conda-lucene-build-and-tests:
# Depends on the Java job for the cuvs-java artifact that cuvs-lucene builds against.
needs: [conda-lucene-build-and-tests-matrix, conda-java-build-and-tests]
permissions:
actions: read
contents: read
id-token: write
packages: read
pull-requests: read
secrets: inherit # zizmor: ignore[secrets-inherit]
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@main
# Artifacts are not published from these jobs, so it's safe to run for multiple CUDA versions.
# If these jobs start producing artifacts, the names will have to differentiate between CUDA versions.
strategy:
fail-fast: false
matrix: ${{ fromJSON(needs.conda-lucene-build-and-tests-matrix.outputs.matrix) }}
with:
build_type: pull-request
node_type: "gpu-l4-latest-1"
arch: "amd64"
container_image: "rapidsai/ci-conda:26.10-cuda${{ matrix.CUDA_VER }}-${{ matrix.LINUX_VER }}-py${{ matrix.PY_VER }}"
script: "ci/test_lucene.sh cuvs-java-cuda${{ matrix.CUDA_VER }}"
artifact-name: "cuvs-lucene-cuda${{ matrix.CUDA_VER }}"
file_to_upload: "java/cuvs-lucene/target/"
rust-build-matrix:
needs: [conda-cpp-build, changed-files]
permissions:
Expand Down
35 changes: 35 additions & 0 deletions .github/workflows/test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,41 @@ jobs:
script: "ci/test_java.sh"
artifact-name: "cuvs-java-cuda${{ matrix.CUDA_VER }}"
file_to_upload: "java/cuvs-java/target/"
conda-lucene-build-and-tests-matrix:
permissions:
contents: read
uses: rapidsai/shared-workflows/.github/workflows/compute-matrix.yaml@main
with:
build_type: ${{ inputs.build_type }}
matrix_name: conda-cpp-build
matrix_filter: map(select(.ARCH == "amd64"))
conda-lucene-build-and-tests:
# Depends on the Java job for the cuvs-java artifact that cuvs-lucene builds against.
needs: [conda-lucene-build-and-tests-matrix, conda-java-build-and-tests]
permissions:
actions: read
contents: read
id-token: write
packages: read
pull-requests: read
secrets: inherit # zizmor: ignore[secrets-inherit]
uses: rapidsai/shared-workflows/.github/workflows/custom-job.yaml@main
# Artifacts are not published from these jobs, so it's safe to run for multiple CUDA versions.
# If these jobs start producing artifacts, the names will have to differentiate between CUDA versions.
strategy:
fail-fast: false
matrix: ${{ fromJSON(needs.conda-lucene-build-and-tests-matrix.outputs.matrix) }}
with:
build_type: ${{ inputs.build_type }}
branch: ${{ inputs.branch }}
date: ${{ inputs.date }}
sha: ${{ inputs.sha }}
node_type: "gpu-l4-latest-1"
arch: "amd64"
container_image: "rapidsai/ci-conda:26.10-cuda${{ matrix.CUDA_VER }}-${{ matrix.LINUX_VER }}-py${{ matrix.PY_VER }}"
script: "ci/test_lucene.sh cuvs-java-cuda${{ matrix.CUDA_VER }}"
artifact-name: "cuvs-lucene-cuda${{ matrix.CUDA_VER }}"
file_to_upload: "java/cuvs-lucene/target/"
wheel-tests-cuvs:
permissions:
actions: read
Expand Down
2 changes: 1 addition & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ repos:
name: spotless-fmt
entry: ci/checks/run_spotless.sh
pass_filenames: false
files: ^java/cuvs-java/src/.*\.java$
files: ^java/(cuvs-java|cuvs-lucene)/([^/]+/)?src/.*\.java$
exclude: .*/panama/.*
language: script
- id: clang-format-with-cmake-placeholders
Expand Down
19 changes: 17 additions & 2 deletions build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ ARGS=$*
# scripts, and that this script resides in the repo dir!
REPODIR=$(cd "$(dirname "$0")"; pwd)

VALIDARGS="clean libcuvs python rust go java docs tests bench-ann examples --uninstall -v -g -n --allgpuarch --no-mg --mnmg-tests --no-cpu --cpu-only --no-shared-libs --no-nvtx --show_depr_warn --incl-cache-stats --time -h --run-java-tests"
VALIDARGS="clean libcuvs python rust go java lucene docs tests bench-ann examples --uninstall -v -g -n --allgpuarch --no-mg --mnmg-tests --no-cpu --cpu-only --no-shared-libs --no-nvtx --show_depr_warn --incl-cache-stats --time -h --run-java-tests"
HELP="$0 [<target> ...] [<flag> ...] [--cmake-args=\"<args>\"] [--cache-tool=<tool>] [--limit-tests=<targets>] [--limit-bench-ann=<targets>] [--build-metrics=<filename>]
where <target> is:
clean - remove all existing build artifacts and configuration (start over)
Expand All @@ -29,6 +29,7 @@ HELP="$0 [<target> ...] [<flag> ...] [--cmake-args=\"<args>\"] [--cache-tool=<to
rust - build the cuvs Rust bindings
go - build the cuvs Go bindings
java - build the cuvs Java bindings
lucene - build the cuvs-lucene Apache Lucene codecs (requires the Java bindings)
docs - build the documentation
tests - build the tests
bench-ann - build end-to-end ann benchmarks
Expand Down Expand Up @@ -74,7 +75,8 @@ FERN_DOCS_DIR=${REPODIR}/fern
PYTHON_BUILD_DIR=${REPODIR}/python/cuvs/_skbuild
RUST_BUILD_DIR=${REPODIR}/rust/target
JAVA_BUILD_DIR=${REPODIR}/java/cuvs-java/target
BUILD_DIRS="${LIBCUVS_BUILD_DIR} ${PYTHON_BUILD_DIR} ${RUST_BUILD_DIR} ${JAVA_BUILD_DIR}"
LUCENE_BUILD_DIR=${REPODIR}/java/cuvs-lucene/target
BUILD_DIRS="${LIBCUVS_BUILD_DIR} ${PYTHON_BUILD_DIR} ${RUST_BUILD_DIR} ${JAVA_BUILD_DIR} ${LUCENE_BUILD_DIR}"

# Set defaults for vars modified by flags to this script
CMAKE_LOG_LEVEL=""
Expand Down Expand Up @@ -555,6 +557,19 @@ if (( NUMARGS == 0 )) || hasArg java; then
fi
fi

# Build the cuvs-lucene codecs
if (( NUMARGS == 0 )) || hasArg lucene; then
if ! hasArg java; then
echo "Please add 'java' to this script's arguments (ex. './build.sh libcuvs java lucene') if the cuvs Java bindings are not already built"
fi
cd "${REPODIR}"/java/cuvs-lucene
if hasArg --run-java-tests; then
./build.sh --run-java-tests
else
./build.sh
fi
fi

RAPIDS_VERSION="$(sed -E -e 's/^([0-9]{2})\.([0-9]{2})\.([0-9]{2}).*$/\1.\2.\3/' "${REPODIR}/VERSION")"
export RAPIDS_VERSION
RAPIDS_VERSION_MAJOR_MINOR="$(sed -E -e 's/^([0-9]{2})\.([0-9]{2})\.([0-9]{2}).*$/\1.\2/' "${REPODIR}/VERSION")"
Expand Down
98 changes: 98 additions & 0 deletions ci/build_lucene.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
#!/bin/bash
# SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0

set -euo pipefail

# Takes the name of the cuvs-java artifact uploaded by the Java job, plus an optional
# --run-java-tests flag.
# TODO: Remove the flag handling when build and test workflows are separated,
# and test_lucene.sh no longer calls build_lucene.sh
# ref: https://github.com/rapidsai/cuvs/issues/868
EXTRA_BUILD_ARGS=()
CUVS_JAVA_ARTIFACT=""
for arg in "$@"; do
case "${arg}" in
--run-java-tests) EXTRA_BUILD_ARGS+=("${arg}") ;;
*) CUVS_JAVA_ARTIFACT="${arg}" ;;
esac
done

if [ -z "${CUVS_JAVA_ARTIFACT}" ]; then
echo "Error: name of the cuvs-java artifact is missing" >&2
exit 1
fi

if [ -e "/opt/conda/etc/profile.d/conda.sh" ]; then
. /opt/conda/etc/profile.d/conda.sh
fi

rapids-logger "Configuring conda strict channel priority"
conda config --set channel_priority strict

rapids-logger "Downloading artifacts from previous jobs"
CPP_CHANNEL=$(rapids-download-from-github "$(rapids-artifact-name conda_cpp libcuvs cuvs --cuda "$RAPIDS_CUDA_VERSION")")
CUVS_JAVA_DIR=$(rapids-download-from-github "${CUVS_JAVA_ARTIFACT}")

rapids-logger "Generate Java testing dependencies"

ENV_YAML_DIR="$(mktemp -d)"

rapids-dependency-file-generator \
--output conda \
--file-key java \
--prepend-channel "${CPP_CHANNEL}" \
--matrix "cuda=${RAPIDS_CUDA_VERSION%.*};arch=$(arch)" | tee "${ENV_YAML_DIR}/env.yaml"

rapids-mamba-retry env create --yes -f "${ENV_YAML_DIR}/env.yaml" -n java

# Temporarily allow unbound variables for conda activation.
set +u
conda activate java
set -u

rapids-print-env

# libcuvs comes from the conda environment here. cuvs-lucene depends on the plain cuvs-java jar,
# which bundles no native libraries, so the JVM resolves libcuvs_c.so through the dynamic loader
# and the environment's lib directory has to be on LD_LIBRARY_PATH.
export LD_LIBRARY_PATH="${CONDA_PREFIX}/lib${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}"

rapids-logger "Install the cuvs-java artifact into the local Maven repository"

# cuvs-lucene resolves cuvs-java from the local Maven repository. Rather than rebuilding the Java
# bindings here, install the jar built by the Java job. Its pom.xml travels with the artifact and
# supplies the coordinates, so no version needs to be hardcoded.
CUVS_JAVA_POM="${CUVS_JAVA_DIR}/pom.xml"
if [ ! -f "${CUVS_JAVA_POM}" ]; then
echo "Could not find pom.xml in the cuvs-java artifact at ${CUVS_JAVA_DIR}" >&2
exit 1
fi

# The artifact also carries the per-architecture native jar and the sources/javadoc/test jars;
# cuvs-lucene depends on the plain one.
mapfile -t CUVS_JAVA_JARS < <(find "${CUVS_JAVA_DIR}" -maxdepth 1 -name 'cuvs-java-*.jar' \
! -name '*-sources.jar' ! -name '*-javadoc.jar' ! -name '*-tests.jar' ! -name '*-cuda*.jar')
if [ "${#CUVS_JAVA_JARS[@]}" -ne 1 ]; then
echo "Expected exactly one cuvs-java jar in ${CUVS_JAVA_DIR}, found: ${CUVS_JAVA_JARS[*]:-none}" >&2
exit 1
fi

# Install cuvs jar into .m2, cd is needed to pick up pom.xml in order to avoid rate limit of main maven repo
pushd java/cuvs-lucene
mvn --batch-mode install:install-file -Dfile="${CUVS_JAVA_JARS[0]}" -DpomFile="${CUVS_JAVA_POM}"
popd

EXITCODE=0
trap "EXITCODE=1" ERR
set +e

rapids-logger "Run cuvs-lucene build"

RAPIDS_CUDA_MAJOR="${RAPIDS_CUDA_VERSION%%.*}"
export RAPIDS_CUDA_MAJOR

bash ./build.sh lucene "${EXTRA_BUILD_ARGS[@]}"

rapids-logger "Test script exiting with value: $EXITCODE"
exit ${EXITCODE}
14 changes: 12 additions & 2 deletions ci/checks/run_spotless.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
# SPDX-FileCopyrightText: Copyright (c) 2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0

# pre-commit hook wrapper that runs 'spotless:apply' to format the Java client sources.
# pre-commit hook wrapper that runs 'spotless:apply' to format the Java sources of every Maven
# project under java/.
#
# Most cuvs contributors do not work on the Java client and do not have Maven installed. For them
# (running outside CI without Maven) this skips gracefully, so that 'pre-commit run --all-files'
Expand All @@ -20,4 +21,13 @@ if ! command -v mvn >/dev/null 2>&1; then
exit 0
fi

exec mvn --batch-mode --quiet -f java/cuvs-java/pom.xml spotless:apply
POMS=(
java/cuvs-java/pom.xml
java/cuvs-lucene/pom.xml
java/cuvs-lucene/bench/pom.xml
java/cuvs-lucene/examples/pom.xml
)

for pom in "${POMS[@]}"; do
mvn --batch-mode --quiet -f "${pom}" spotless:apply
done
Loading
Loading