| # docsyserver |
| |
| An application that serves up documentation stored in a git repository rendered |
| via Hugo using the Docsy template. |
| |
| The application checks out the designated repository and renders all the |
| documentation that it then serves over HTTP. |
| |
| It checks for updates to the repo every five minutes, pulling and re-rendering |
| the documentation. |
| |
| In addition it understands the Gerrit code review system and allows for |
| previewing changes to documentation by visiting any URL into the documentation |
| with a `cl` query parameter, e.g. `?cl=NNNNN` and the documentation with that |
| reviews most recent changes to the documentation patched in and rendered. |
| |
| The detailed design doc is at http://go/docsyserver. |
| |
| ## Directory Structure |
| |
| - `BUILD.bazel` - Builds a Docker container that contains a checkout of the |
| Docsy example repo, along with all the dependencies needed to build it, |
| including Hugo and npm. All third-party dependencies are contained in the |
| gcr.io/skia-public/docsyserver-base base container, which is also built with |
| rules in this file. |
| |
| - `go/docsyserver` - The application. |
| |
| - `go/codereview` - An abstraction of the functionality used from Gerrit. In |
| theory a new implementation of CodeReview could be made that supports GitHub |
| or other code review systems. |
| |
| - `go/docsy` - An abstraction of running the `hugo` executable over the source |
| documentation using the Docsy template. |
| |
| - `go/docset` - Manages checking out the repo, patching CLs for documentation |
| under code review, and cleaning up after code review issues are closed. |
| |
| - `images/head-end.html` - If there are script sources that need to be added to |
| each page those should go in this file, which will be placed in the right |
| directory in the docsy template. |
| |
| ## Building |
| |
| To build a local docker image run: |
| |
| $ make |
| |
| This will build the executable and store it at `$GOPATH/bin/docsyserver`. |
| |
| ## Running locally with docker |
| |
| First build the docker image, which only needs to be done once: |
| |
| $ make build-local-image |
| |
| Then run a local instance, changing `$(SKIA)` to the local checkout of Skia: |
| |
| docker run --entrypoint=/serve.sh -ti -p 1313:1313 --user=root -v $(SKIA)/site:/input bazel/docsyserver:docsyserver_container |
| |
| The content will now be available at [localhost:1313](http://localhost:1313/). |
| The server will automatically re-render the HTML and refresh the page as the |
| source documents are edited, there's no need to restart the server after you |
| make documentation changes. |
| |
| ## Running locally |
| |
| To run, execute the docker image and supply the following flags: |
| |
| $ docsyserver --local [flags] |
| |
| ``` |
| -alsologtostderr |
| log to standard error as well as files |
| -doc_path string |
| The relative directory, from the top of the repo, where the documents are located. (default "site") |
| -doc_repo string |
| The repo to check out. (default "https://skia.googlesource.com/skia") |
| -gerrit_url string |
| The gerrit URL. (default "https://skia-review.googlesource.com") |
| -hugo string |
| The absolute path to the hugo executable. (default "hugo") |
| -port string |
| HTTP service address (e.g., ':8000') (default ":8000") |
| ``` |
| |
| You must have the `gcloud` command line tool installed and authorized, as that's |
| how docsyserver with the `--local` flag will create an OAuth 2.0 bearer token to |
| access Gerrit. You will also need a local checkout of the Docsy example project |
| and Hugo installed. See the |
| [Docsy docs](https://www.docsy.dev/docs/getting-started/) for installation |
| instructions. |
| |
| The full set of flags are: |
| |
| ``` |
| -alsologtostderr |
| log to standard error as well as files |
| -doc_path string |
| The relative directory, from the top of the repo, where the documents are located. (default "site") |
| -doc_repo string |
| The repo to check out. (default "https://skia.googlesource.com/skia") |
| -docsy_dir string |
| The directory where docsy is found. (default "../../docsy-example") |
| -gerrit_url string |
| The gerrit URL. (default "https://skia-review.googlesource.com") |
| -hugo string |
| The absolute path to the hugo executable. (default "hugo") |
| -local |
| Running locally if true. As opposed to in production. |
| -log_backtrace_at value |
| when logging hits line file:N, emit a stack trace |
| -log_dir string |
| If non-empty, write log files in this directory |
| -logtostderr |
| log to standard error instead of files |
| -port string |
| HTTP service address (e.g., ':8000') (default ":8000") |
| -prom_port string |
| Metrics service address (e.g., ':10110') (default ":20000") |
| -stderrthreshold value |
| logs at or above this threshold go to stderr |
| -v value |
| log level for V logs |
| -vmodule value |
| comma-separated list of pattern=N settings for file-filtered logging |
| -work_dir string |
| The directory to check out the doc repo into. (default "/tmp") |
| ``` |