Shane Kilkelly f898f43b4e Correct instructions for starting service 8 ani în urmă
..
conf 1e4ef0cc5b Fully implement max file size 8 ani în urmă
lib d225b8cbd9 Add New Relic stuff 10 ani în urmă
src b91390c025 Fix gc job leak in tests 8 ani în urmă
.gitignore 33dbbe49ff Add makefile and basic dockerfile 8 ani în urmă
Dockerfile 394fd17dfa Working docker setup 8 ani în urmă
LICENSE 9f38a40cd2 Initial commit 12 ani în urmă
Makefile 394fd17dfa Working docker setup 8 ani în urmă
README.md f898f43b4e Correct instructions for starting service 8 ani în urmă
docker-compose.yml 394fd17dfa Working docker setup 8 ani în urmă
newrelic.yml d225b8cbd9 Add New Relic stuff 10 ani în urmă
pom.xml 3f1eb2b0c3 Revert "Revert "Update dependencies to latest stable versions"" 8 ani în urmă

README.md

writelatex-git-bridge

Required

  • maven (for building, running tests and packaging)
  • jdk-8 (for compiling and running)

Commands

To be run from the base directory:

Build jar: mvn package

Run tests: mvn test

Clean: mvn clean

Installation

Install dependencies:

sudo apt-get update
sudo apt-get install -y maven
sudo apt-get install -y openjdk-8-jdk
sudo update-alternatives --set java /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
sudo update-alternatives --set javac /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/javac

Create a config file according to the format below.

Run mvn package to build, test, and package it into a jar at target/writelatex-git-bridge-1.0-SNAPSHOT-jar-with-dependencies.jar.

Use java -jar <path_to_jar> <path_to_config_file> to run the server.

Runtime Configuration

The configuration file is in .json format.

{
    "port" (int): the port number,
    "rootGitDirectory" (string): the directory in which to store
                                 git repos and the db/atts,
    "apiBaseUrl" (string): base url for the snapshot api,
    "username" (string, optional): username for http basic auth,
    "password" (string, optional): password for http basic auth,
    "postbackBaseUrl" (string): the postback url,
    "serviceName" (string): current name of writeLaTeX
                            in case it ever changes,
    "oauth2" (object): { null or missing if oauth2 shouldn't be used
        "oauth2ClientID" (string): oauth2 client ID,
        "oauth2ClientSecret" (string): oauth2 client secret,
        "oauth2Server" (string): oauth2 server,
                                 with protocol and
                                 without trailing slash
    },
    "repoStore" (object, optional): { configure the repo store
        "maxFileSize" (long, optional): maximum size of a file, inclusive
    },
    "swapStore" (object, optional): { the place to swap projects to.
                                      if null, type defaults to
                                      "noop"
        "type" (string): "s3", "memory", "noop" (not recommended),
        "awsAccessKey" (string, optional): only for s3,
        "awsSecret" (string, optional): only for s3,
        "s3BucketName" (string, optional): only for s3
    },
    "swapJob" (object, optional): { configure the project
                                    swapping job.
                                    if null, defaults to no-op
        "minProjects" (int64): lower bound on number of projects
                               present. The swap job will never go
                               below this, regardless of what the
                               watermark shows. Regardless, if
                               minProjects prevents an eviction,
                               the swap job will WARN,
        "lowGiB" (int32): the low watermark for swapping,
                          i.e. swap until disk usage is below this,
        "highGiB" (int32): the high watermark for swapping,
                           i.e. start swapping when
                           disk usage becomes this,
        "intervalMillis" (int64): amount of time in between running
                                  swap job and checking watermarks.
                                  3600000 is 1 hour
    }
}

You have to restart the server for configuration changes to take effect.

Setup with v2 Dev-Environment

  • Set APP_GIT_BRIDGE_URL=http://localhost:8000 in v1 common.env
  • In this repo, copy conf/example.json to conf/local.json
  • Set up an OAuth app in v1
    • with scopes = 'git_bridge', and callback = 'http://v1.overleaf.test:500/no-callback'
  • Update values in conf/local.json:
    • Set oauth creds
    • swapStore = {type: "noop"}"
    • apiBaseUrl = "http://www.overleaf.test:5000/api/v0"
    • postbackBaseUrl = "http://git_bridge:8000"
    • oauth2Server = "http://www.overleaf.test:5000"
  • From this repo, docker-compose up