Git Integration
By default, the source code for a persistent query in the "Script Editor" tab is stored by the Persistent Query Controller as part of the query's configuration. However, with Git integration, a persistent query's source code isn't stored in Deephaven, but loaded directly from its associated Git repository.
For more information on configuring persistent queries, see Persistent Query Configuration Viewer/Editor.
Configuring Git Integration
To enable Git integration, several properties must be set in the Deephaven controller's configuration. One global property must be set, followed by several properties for each repository.
The global property is:
iris.scripts.repos
— a comma-separated list of git repositories that Deephaven should use
The additional properties for each repository are listed below:
iris.scripts.repo.<repo_name>.groups
— a comma-separated list of the Deephaven groups who may access the repository.iris.scripts.repo.<repo_name>.updateEnabled
— Set to true to automatically update the repository (i.e., run a git pull) once per minute. This helps ensure that when a query runs, it uses the most recent version of the script available in the repository's remote origin.iris.scripts.repo.<repo_name>.branch
— the Git branch to check outiris.scripts.repo.<repo_name>.prefixDisplayPathsWithRepoName
— If true, the "Choose Script" dialog of the Persistent Query Configuration Editor will include the repository's name next to each script path. This helps disambiguate scripts for users who have access to multiple repositories.iris.scripts.repo.<repo_name>.root
— the directory on the filesystem into which Deephaven will clone the git repository. Each repository must have a distinct root directory. If a relative path is used, the path will be relative to the workspace directory of the Controller process. On Deephaven servers, this will normally be/db/TempFiles/irisadmin/iris_controller
.iris.scripts.repo.shared.paths=IrisQueries/groovy,IrisUtils/groovy
— the paths, relative to the repository's root directory, to include. Files in all other paths will not be available to Deephaven queries.iris.scripts.repo.<repo_name>.uri
— the SSH URI used to access the git repository, such as[email protected]:illumon/iris.git
Note: The fingerprint of the RSA key for the server specified in this URI must be in the ssh known hosts file for the user the controller runs as. In a typical installation, the controller runs as the `
irisadmin
` user, and the appropriate known hosts file is `~irisadmin/.ssh/known_hosts
`. For example, if the git URI is "[email protected]:mycompany/iris.git
", the Git server can be added to the to the known hosts file with the following command:
sudo -u irisadmin /bin/sh -c 'ssh-keyscan -t rsa gitlab.mycompany.net >> ~irisadmin/.ssh/known_hosts'
It is prudent to print the received key and verify that it matches the server. The key that was added can be viewed with this command:
sudo -u irisadmin tail ~irisadmin/.ssh/known_hosts
Also, for repository updates (i.e., git pull) to be enabled, the Persistent Query Controller must not be configured to use a local git repository.
PersistentQueryController.useLocalGit
— Optional — Set totrue
to use a local repository as the script source. This disables repository updates globally, regardless of each repository'supdateEnabled
setting. The default value isfalse
, causing Deephaven to check out the configured branch from the remote.
Example Configuration
The example configuration below configures Deephaven to read scripts from three repositories: team1
, team2
, and shared
. All users can access scripts in the shared
repository, but the team1
and team2
repositories are restricted to specific users. All three repositories will use a branch called master
.
iris.scripts.repos=shared,team1,team2
iris.scripts.repo.shared.groups=*
iris.scripts.repo.shared.updateEnabled=true
iris.scripts.repo.shared.branch=master
iris.scripts.repo.shared.prefixDisplayPathsWithRepoName=false
iris.scripts.repo.shared.root=../git/shared
iris.scripts.repo.shared.paths=IrisQueries/groovy,IrisUtils/groovy
[email protected]:common-libs/shared.git
iris.scripts.repo.team1.groups=user1,user2,user3
iris.scripts.repo.team1.updateEnabled=true
iris.scripts.repo.team1.branch=master
iris.scripts.repo.team1.prefixDisplayPathsWithRepoName=false
iris.scripts.repo.team1.root=../git/team1
iris.scripts.repo.team1.paths=IrisQueries/groovy
[email protected]:team1/team1.git
iris.scripts.repo.team2.groups=user1,user4,user5
iris.scripts.repo.team2.updateEnabled=true
iris.scripts.repo.team2.branch=master
iris.scripts.repo.team2.prefixDisplayPathsWithRepoName=false
iris.scripts.repo.team2.root=../git/team2
iris.scripts.repo.team2.paths=IrisQueries/groovy
[email protected]:team2/team2.git
Last Updated: 16 February 2021 18:07 -04:00 UTC Deephaven v.1.20200928 (See other versions)
Deephaven Documentation Copyright 2016-2020 Deephaven Data Labs, LLC All Rights Reserved