feat(ops/modules): initialise module for running livegrep
Change-Id: Ic22118def24089cda25ccc74c9da670d41c6b323 Reviewed-on: https://cl.tvl.fyi/c/depot/+/10936 Tested-by: BuildkiteCI Reviewed-by: flokli <flokli@flokli.de>
This commit is contained in:
parent
d4d46b9d8a
commit
a9f5bb859f
3 changed files with 94 additions and 4 deletions
|
@ -17,6 +17,7 @@ in
|
|||
(mod "josh.nix")
|
||||
(mod "journaldriver.nix")
|
||||
(mod "known-hosts.nix")
|
||||
(mod "livegrep.nix")
|
||||
(mod "monorepo-gerrit.nix")
|
||||
(mod "owothia.nix")
|
||||
(mod "panettone.nix")
|
||||
|
@ -370,6 +371,9 @@ in
|
|||
# Run a SourceGraph code search instance
|
||||
sourcegraph.enable = true;
|
||||
|
||||
# Run a livegrep code search instance
|
||||
livegrep.enable = true;
|
||||
|
||||
# Run the Panettone issue tracker
|
||||
panettone = {
|
||||
enable = true;
|
||||
|
|
89
ops/modules/livegrep.nix
Normal file
89
ops/modules/livegrep.nix
Normal file
|
@ -0,0 +1,89 @@
|
|||
# Configures a code search instance using Livegrep.
|
||||
#
|
||||
# We do not currently build Livegrep in Nix, because it's a complex,
|
||||
# multi-language Bazel build and doesn't play nicely with Nix.
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.services.depot.livegrep;
|
||||
|
||||
livegrepConfig = {
|
||||
name = "livegrep";
|
||||
|
||||
fs_paths = [{
|
||||
name = "depot";
|
||||
path = "/depot";
|
||||
metadata.url_pattern = "https://code.tvl.fyi/tree/{path}?id={version}#n{lno}";
|
||||
}];
|
||||
|
||||
repositories = [{
|
||||
name = "depot";
|
||||
path = "/depot";
|
||||
revisions = [ "HEAD" ];
|
||||
|
||||
metadata = {
|
||||
url_pattern = "https://code.tvl.fyi/tree/{path}?id={version}#n{lno}";
|
||||
remote = "https://cl.tvl.fyi/depot.git";
|
||||
};
|
||||
}];
|
||||
};
|
||||
|
||||
configFile = pkgs.writeText "livegrep-config.json" (builtins.toJSON livegrepConfig);
|
||||
|
||||
# latest as of 2024-02-17
|
||||
image = "ghcr.io/livegrep/livegrep/base:033fa0e93c";
|
||||
in
|
||||
{
|
||||
options.services.depot.livegrep = with lib; {
|
||||
enable = mkEnableOption "Run livegrep code search for depot";
|
||||
|
||||
port = mkOption {
|
||||
description = "Port on which livegrep web UI should listen";
|
||||
type = types.int;
|
||||
default = 5477; # lgrp
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
virtualisation.oci-containers.containers.livegrep-codesearch = {
|
||||
inherit image;
|
||||
extraOptions = [ "--net=host" ];
|
||||
|
||||
volumes = [
|
||||
"${configFile}:/etc/livegrep-config.json:ro"
|
||||
"/var/lib/gerrit/git/depot.git:/depot:ro"
|
||||
];
|
||||
|
||||
entrypoint = "/livegrep/bin/codesearch";
|
||||
cmd = [
|
||||
"-grpc"
|
||||
"0.0.0.0:5427" # lgcs
|
||||
"-reload_rpc"
|
||||
"-revparse"
|
||||
"/etc/livegrep-config.json"
|
||||
];
|
||||
};
|
||||
|
||||
virtualisation.oci-containers.containers.livegrep-frontend = {
|
||||
inherit image;
|
||||
dependsOn = [ "livegrep-codesearch" ];
|
||||
extraOptions = [ "--net=host" ];
|
||||
|
||||
entrypoint = "/livegrep/bin/livegrep";
|
||||
cmd = [
|
||||
"-listen"
|
||||
"0.0.0.0:${toString cfg.port}"
|
||||
"-reload"
|
||||
"-connect"
|
||||
"localhost:5427"
|
||||
"-docroot"
|
||||
"/livegrep/web"
|
||||
# TODO(tazjin): docroot with styles etc.
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
# sudo docker exec -ti livegrep /livegrep/bin/codesearch -reload_rpc -revparse /var/lib/livegrep/config.jsno
|
||||
# sudo docker run -d --ip 172.17.0.3 --name livegrep -v /var/lib/livegrep:/varlib/livegrep -v /var/lib/gerrit/git/depot.git:/depot:ro -v /home/tazjin/livegrep-web:/livegrep/web:ro ghcr.io/livegrep/livegrep/base /livegrep/bin/livegrep -listen 0.0.0.0:8910 -reload -docroot /livegrep/webbsudo docker run -d --ip 172.17.0.3 --name livegrep -v /var/lib/livegrep:/varlib/livegrep -v /var/lib/gerrit/git/depot.git:/depot:ro -v /home/tazjin/livegrep-web:/livegrep/web:ro ghcr.io/livegrep/livegrep/base /livegrep/bin/livegrep -listen 0.0.0.0:8910 -reload -docroot /livegrep/webb
|
|
@ -7,15 +7,12 @@
|
|||
];
|
||||
|
||||
config = {
|
||||
# Short link support (i.e. plain http://at) for users with a
|
||||
# configured tvl.fyi/tvl.su search domain.
|
||||
services.nginx.virtualHosts."grep.tvl.fyi" = {
|
||||
enableACME = true;
|
||||
forceSSL = true;
|
||||
|
||||
locations."/" = {
|
||||
# experimental: manually run Docker container
|
||||
proxyPass = "http://172.17.0.3:8910";
|
||||
proxyPass = "http://127.0.0.1:${toString config.services.depot.livegrep.port}";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue