telerik / docs-seed

Telerik Documentation Infrastructure
https://docs.telerik.com
Apache License 2.0
7 stars 21 forks source link
docker documentation progress telerik

docs-seed repo

Contains the documentation site implementation.

Local Setup

This section describes how to run the documentation locally.

Prerequisites

  • For products such as Kendo UI for jQuery, UI for ASP.NET MVC, and UI for ASP.NET Core, the documentation is part of the source code repo. For these products, 'DOCS-PATH' is a nested folder in the cloned repo, for example, "D:\Work\kendo-ui-core\docs".

Instructions (without Docker)

  1. Install Ruby 2.3.3 (64-bit or 32-bit).

    Select Add Ruby executables to your PATH and Associate .rb and .rbw files with this Ruby installation during the installation.

  2. Download and extract the Ruby DevKit 4.7.2 (64-bit or 32-bit). Note the location of the extracted archive (for example: C:\RubyDevKit).

  3. Install and init the Ruby DevKit. For more information, see here.

    cd C:\RubyDevKit
    ruby dk.rb init
    ruby dk.rb install 
  4. Install RubyGems 3.2.29.

    gem update --system 3.2.29
  5. Install Bundler 2.3.11.

    gem install bundler -v 2.3.11

    If you experience SSL errors with Bundler, similar to the one described in RubyGems SSL Certificate Update, follow the solution steps from Bundler.io - Installing new RubyGems certificates.

  6. Clone the docs-seed repo.

    git clone git@github.com:telerik/docs-seed.git
  7. Go to the directory for the pulled docs-seed repo (for example, D:\Work\docs-seed).

  8. Open your preferred Bash-enabled terminal (for example, gitBash).

  9. Run the following command and pass the DOCS-PATH path (the quotes are mandatory):

    sh copy_local.sh "D:\Work\xaml-docs"

    If you are running the documentation on a macOS or another OS where the robocopy command is unavailable, pass a second parameter to the copy_local.sh script: sh copy_local.sh "D:\Work\xaml-docs" true.

  10. In the terminal, navigate to the DOCS-PATH directory.

    cd D:\Work\xaml-docs
  11. Install the required dependencies:

    bundle install 
  12. Run the following command in the root folder of the cloned documentation repo:

    bundle exec jekyll serve
  13. In your browser, navigate to the server address shown in the terminal: http://127.0.0.1:4000/.
    For documentation sets nested in the documentation repo, you need to navigate to the respective folder. For example, for the WPF documentation, the correct server address will be http://127.0.0.1:4000/devtools/wpf/.

    If you can't open the URL, replace the 127.0.0.1 with localhost (http://localhost:4000).

    If you want to change the host or port, pass the --host or --port arguments to the command from Step 12. For example, bundle exec jekyll serve --host=0.0.0.0 --port=1234.

Instructions (with Docker)

Caution As of November 2023, the support for the docs-seed setup via Docker is limited. See Instructions (without Docker) instead.

  1. Ensure that you have installed Docker with the default settings enabled. See the official Docker installation guide.

    You can use Docker Community Edition (CE).

  2. Clone the docs-seed repo.

    git clone git@github.com:telerik/docs-seed.git
  3. Go to the directory in which you've pulled it (for example, D:\Work\docs-seed).

  4. Open a terminal of your choice (for example, gitBash).

  5. Run the following command by passing the DOCS-PATH path (the quotes are mandatory):

    sh copy_local.sh "D:\Work\xaml-docs"

    If you are running the documentation on a macOS or another OS where the robocopy command is unavailable, pass a second parameter to the copy_local.sh script: sh copy_local.sh "D:\Work\xaml-docs" true.

  6. Go to the DOCS-PATH directory.

  7. Open the Dockerfile with an editor

  8. Delete the following two rows:

    ADD Gemfile ${APP_ROOT}/
    ADD Gemfile.lock ${APP_ROOT}/
  9. Add the following row:

    ENV BUNDLER_VERSION=2.1.4
  10. Delete the GemFile.lock file

  11. Open a terminal of your choice (for example, gitBash).

  12. Execute the following bash command in the root folder (where the Dockerfile is located).

    sh start-docs.sh
  13. Open the documentation site on the server address shown in the terminal: http://0.0.0.0:4000/. If you can't open the URL, replace the 0.0.0.0 with localhost: http://localhost:4000. For example, for the WPF documentation, this will be http://0.0.0.0:4000/devtools/wpf/.

  14. To stop the web site and the container in which it has been served, navigate to the terminal in which you've executed the previous command, and press CTRL+C. On passing an additional config file for the WPF and Silverlight documentation, refer to this section.

Troubleshooting

Get More Detailed Error Message

To get more information and a full stack trace of the error, add --trace after your jekyll command. For example, bundle exec jekyll build --trace.

Does Not Serve

You executed sh start-docs.sh but you did not see any Jekyll output. Instead, the command ended with the input device is not a TTY. If you are using mintty, try prefixing the command with 'winpty'.

This happens when using Git Bash with the MinTTY console. This console does not allow combinations such as Ctrl+C to pass to the Docker container and that's why you get such an error.

To solve this issue, prefix the command with winpty:

winpty sh start-docs.sh

Aa an alternative, re-install Git Bash and choose the default Windows terminal this time. For more details, refer to the Docker for Windows: Interactive Sessions in MinTTY Git Bash post.

Ctrl+C Does Not Work

When you want to stop serving the docs, you may have to repeat the Ctrl+C command or press Enter after it.

.gitignore Is always Modified

The scripts that copy the seed repo to the content repo (MY-REPO) also update the .gitignore file to avoid creating unstaged changes together with the work files that must not be committed. If you keep getting the .gitignore checked out, identify the changes as compared to the original and commit the version that matches what the tool generates to your repo.

Performance

Docker is a resource-intensive tool. If you are not using it on a daily basis, consider preventing it from running on startup. Right-click its Tray icon and navigate to Settings > General. Uncheck Start Docker when you log in. This can save you time when booting up/logging in, but you will need to explicitly start Docker before working on any docs-seed documentation.

Also, it tends to require a lot of HDD space, which may be an issue if you are running it on an SSD drive with a limited capacity. You can reduce its quota by navigating to the Settings dialog > Advanced and either change the image location, and/or reduce its max size. This also lets you limit its RAM consumption.

Encoding Problems while Building

When you try to build the documentation site, you may see an error including the following incomplete "\n" on UTF-16LE message. It might be caused because of different things. Use the following steps to try to fix or workaround it:

  1. Ensure Node.js is installed by typing node -v in a command prompt. The machine must be restarted after a Node.js installation.

  2. Allow files with long paths using the following command:

    git config --system core.longpaths true
  3. Add the following System Environment Variables

    • JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
    • LANG: en_GB.UTF-8
  4. Modify the runtimes.rb file in the execJs gem by changing the UTF-16LE with the UTF-8 value. For details, see the instructions here or here. The runtimes.rb file is located in [Ruby Installation folder]\lib\ruby\gems\2.3.0\gems\execjs-2.7.0\lib\execjs.

Known Error Messages

Extra Features

You might find the following features useful:

Additional Config File

To add an additional config.yml file, pass it to the above command as follows:

sh start-docs.sh _silverlight.yml

LiveSync

To monitor the changes you are making on the built documentation, execute the following command in a new terminal in the root directory of the site:

sh watch.sh

You need to have Node.js installed.

Only Build

To only run jekyll build and not jekyll serve, execute the following bash command:

sh build-docs.sh

This can be useful if you want to (or already have) set up a local IIS to point to the _site folder in your documentation repo. This allows you to also test redirects that jekyll serve does not support.

Build Site Partially

To speed up the building time of the web site, you can pass only specific parts of it—the folders you want to include in the site.

To achieve this, execute the sh modify-config.sh script with passing the corresponding arguments which are:

For example, if you want to build only the documentation for two controls, the Barcode and the Chart, you are using Docker, and you have an extra config YAML file. Then you have to open a terminal and execute the following command:

sh modify-config.sh --include=controls/barcode,controls/Chart --docker=true --config=_extra.yml

Exclude Articles from Navigation Tree

If you have some obsolete articles or whole folders that you need to hide from the navigation tree, use the exclude_navigation array in the settings of the config.yml file in your repository. The example below shows how to exclude listing all articles in knowledge-base folder as well as sharepoint folder.

For example, from https://github.com/telerik/ajax-docs/blob/master/_config.yml#L6, exclude_navigation: ["sharepoint/2007/*" ,"knowledge-base/*"]

Webinar Banner

Moved in wiki under the Announcements banner article.

Build API Reference

A DocFX-based infrastructure generates the API reference portion of the site for you. To use it, you need the following:

Documentation Best Practices

If you need to create new documentation (for example, for a new product), use docs-content-seed repository as an auxiliary part to this one.

For best practices and industry standards on creating and maintaining documentation, go to the public Progress DevTools Style Guide.

docs-seed Syntax Guidelines

To ensure the syntax you use when you add or edit the documentation will properly render the content, read the syntax guidelines in the docs-seed Wiki.