Skip to content

Commit 065fbae

Browse files
Rhia2antonsviridov-srcMaedahBatool
authored
Add documentation for configuring Maven with a private repository for… (#704)
… SCIP-JAVA private-maven-repository-configuration-scip-java.mdx - Added a new Markdown file detailing the steps to configure Maven to use a private Nexus or Artifactory repository for SCIP-JAVA indexing. - Includes guidance for single repository testing and automated configuration across multiple repositories via Sourcegraph's Lua inference script. - Docs placed under the Code Navigation section to aid users in secure dependency management for SCIP-JAVA. <!-- Explain the changes introduced in your PR --> ## Pull Request approval Although pull request approval is not enforced for this repository in order to reduce friction, merging without a review will generate a ticket for the docs team to review your changes. So if possible, have your pull request approved before merging. --------- Co-authored-by: Anton Sviridov <anton.sviridov@sourcegraph.com> Co-authored-by: Maedah Batool <me@MaedahBatool.com>
1 parent bdcd281 commit 065fbae

File tree

1 file changed

+94
-0
lines changed

1 file changed

+94
-0
lines changed
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
# Configuring Maven to Use a Private Repository for Auto-Indexing
2+
3+
Configuring Maven to use a private repository, such as Nexus or Artifactory, with Sourcegraph is essential when dependencies are retrieved from private repositories that require authentication (as opposed to public repositories such as Maven Central). This guide covers steps to set up Maven for [scip-java](https://sourcegraph.github.io/scip-java/) indexing with a private repository, ensuring secure and consistent dependency resolution.
4+
5+
## Testing the Configuration on a Single Repository
6+
7+
To test and validate the Maven configuration, modify a single repository’s auto-indexing settings to include a custom settings.xml file. Refer to (Maven's official docs)[https://maven.apache.org/settings.html#quick-overview] for an overview of how this file is used to configure Maven repositories and other settings.
8+
9+
### Add Custom Index Job Configuration
10+
11+
- Access the repository’s index settings in Sourcegraph and open the “Raw” configuration panel.
12+
- Insert the following configuration:
13+
14+
```json
15+
{
16+
"steps": [],
17+
"local_steps": [
18+
"mkdir -p ~/.m2",
19+
"echo '<settings xmlns=\"http://maven.apache.org/SETTINGS/1.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd\"> <servers> <server> <id>repo</id> <username>$ARTIFACTORY_USER</username> <password>$ARTIFACTORY_PASSWORD</password> </server> </servers> </settings>' > ~/.m2/settings.xml"
20+
],
21+
"root": "",
22+
"indexer": "sourcegraph/scip-java:latest",
23+
"indexer_args": [
24+
"scip-java",
25+
"index",
26+
"--build-tool=auto"
27+
],
28+
"outfile": "index.scip",
29+
"requestedEnvVars": [
30+
"ARTIFACTORY_USER",
31+
"ARTIFACTORY_PASSWORD"
32+
]
33+
}
34+
```
35+
36+
### Set Up Executor Secrets
37+
38+
Before triggering the indexing process, make sure the environment variables `$ARTIFACTORY_USER` and `$ARTIFACTORY_PASSWORD` are created as [Executor Secrets](https://sourcegraph.com/docs/admin/executors/executor_secrets).
39+
40+
### Trigger Indexing
41+
42+
After configuring the repository, navigate to the "Precise Indexes" tab and click "Enqueue" to start indexing.
43+
44+
## Automating the Configuration Across All Repositories
45+
46+
After verifying the configuration on a single repository, you can automate the setup across all repositories by modifying the inference configuration using a Lua script.
47+
48+
### Create or Update the Lua Script
49+
50+
Navigate to `site-admin -> Code Graph -> Inference`, and replace or add the following Lua script for [scip-java](https://sourcegraph.github.io/scip-java/) indexing with Maven’s `settings.xml` setup:
51+
52+
```lua
53+
local path = require("path")
54+
local pattern = require("sg.autoindex.patterns")
55+
local recognizer = require("sg.autoindex.recognizer")
56+
local patterns = require "internal_patterns"
57+
58+
local new_steps = {
59+
'mkdir -p ~/.m2',
60+
[[echo "<?xml version=\"1.0\"?><settings xmlns=\"http://maven.apache.org/SETTINGS/1.0.0\"><servers><server><id>repo</id><username>$ARTIFACTORY_USER</username><password>$ARTIFACTORY_PASSWORD</password></server></servers></settings>" > ~/.m2/settings.xml]]
61+
}
62+
63+
local new_requested_env_variables = {'ARTIFACTORY_USER', 'ARTIFACTORY_PASSWORD'}
64+
local java_indexer = require("sg.autoindex.indexes").get "java"
65+
66+
local custom_java_recognizer = recognizer.new_path_recognizer {
67+
patterns = {
68+
pattern.new_path_basename("pom.xml"),
69+
pattern.new_path_basename("build.gradle"),
70+
pattern.new_path_basename("build.gradle.kts"),
71+
},
72+
generate = function(api, paths)
73+
api:register({
74+
local_steps = new_steps,
75+
requested_envvars = new_requested_env_variables,
76+
root = path.dirname(paths[1]),
77+
outfile = "index.scip",
78+
indexer = java_indexer,
79+
indexer_args = { "scip-java", "index", "--build-tool=auto" }
80+
})
81+
end
82+
}
83+
84+
return require("sg.autoindex.config").new({
85+
["custom.java"] = custom_java_recognizer,
86+
["sg.java"] = false
87+
})
88+
```
89+
90+
### Verify the Configuration
91+
92+
Once the Lua script is applied, you can verify that the configuration works by using the **"Preview results"** button in the Lua script editor under the "Inference Configuration" section. This will display the inferred index jobs for your repositories, showing details such as the root directory, indexer, indexer arguments, and environment variables used for each job.
93+
94+
If everything is configured correctly, the dependencies will be pulled from the specified private repository without issues.

0 commit comments

Comments
 (0)