Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-docs.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'doc/setup.md')
-rw-r--r--doc/setup.md353
1 files changed, 353 insertions, 0 deletions
diff --git a/doc/setup.md b/doc/setup.md
new file mode 100644
index 00000000..7fda51c9
--- /dev/null
+++ b/doc/setup.md
@@ -0,0 +1,353 @@
+# Set up and preview the documentation site locally
+
+You can set up and compile the docs site on your own computer, and use it to
+preview changes you make to GitLab documentation.
+
+## Requirements
+
+To preview any changes you make to GitLab documentation, you need:
+
+- Environment: Unix/Linux or macOS.
+- Ruby, at version specified in:
+ - [`.ruby-version`](https://gitlab.com/gitlab-org/gitlab-docs/-/blob/main/.ruby-version)
+ - [`.tool-versions`](https://gitlab.com/gitlab-org/gitlab-docs/-/blob/main/.tool-versions)
+- Node.js, at the version specified in [`.tool-versions`](https://gitlab.com/gitlab-org/gitlab-docs/-/blob/main/.tool-versions).
+- Yarn, at the version specified in [`.tool-versions`](https://gitlab.com/gitlab-org/gitlab-docs/-/blob/main/.tool-versions).
+- [jq](https://stedolan.github.io/jq/), needed by some [Rake tasks](raketasks.md).
+- Xcode *(macOS only)*:
+ - Run `xcode-select --install` to install the command line tools only.
+ - Or download and install the entire package using the macOS's App Store.
+
+NOTE:
+On Windows, the process described here would be different, but as most
+contributors use Unix, we go over this process for macOS and Linux users.
+
+Alternatively, you can use [Gitpod](#gitpod-integration) to access a
+cloud-based, pre-configured GitLab documentation site.
+
+## Install dependencies
+
+There are a couple of options for installing dependencies for `gitlab-docs`:
+
+- Using [separate dependency managers](#use-separate-dependency-managers) for Ruby, Node.js, and
+ Yarn.
+- The [unified dependency manager](#use-asdf) `asdf` for Ruby, Node.js, and Yarn.
+
+The choice of which to use might depend on what you currently use. For example, you may have already
+[set up a dependency manager for GDK](https://gitlab.com/gitlab-org/gitlab-development-kit/-/blob/main/doc/index.md#install-dependencies).
+
+If you don't yet have Ruby, Node.js, and Yarn set up, use [`asdf`](https://asdf-vm.com/#/).
+
+### Use separate dependency managers
+
+In the instructions below, you:
+
+- Install Ruby using `rbenv`.
+- Install Node.js using `nvm`.
+- Install Yarn using your preferred method in their installation instructions.
+
+#### Ruby
+
+To install Ruby using [`rbenv`](https://github.com/rbenv/rbenv):
+
+1. [Install `rbenv`](https://github.com/rbenv/rbenv#installation).
+1. Install the supported version of Ruby:
+
+ ```shell
+ rbenv install <supported-version>
+ ```
+
+1. Use the newly installed Ruby:
+
+ ```shell
+ rbenv global <supported-version>
+ ```
+
+Check your:
+
+- Ruby version with `ruby --version`.
+- Bundler version with `bundle --version`.
+
+#### Node.js
+
+To install Node.js using [`nvm`](https://github.com/nvm-sh/nvm):
+
+1. [Install `nvm`](https://github.com/nvm-sh/nvm#installation-and-update).
+1. Install the latest Node.js:
+
+ ```shell
+ nvm install --lts
+ ```
+
+1. Use the newly installed Node.js:
+
+ ```shell
+ nvm use --lts --default
+ ```
+
+Check your Node.js version with `node -v`.
+
+#### Yarn
+
+Install [yarn](https://yarnpkg.com/en/docs/install), a package manager for the
+Node.js ecosystem.
+
+Check your Yarn version with `yarn -v`.
+
+### Use `asdf`
+
+To install Ruby, Node.js, and Yarn using `asdf`:
+
+1. [Install `asdf`](https://asdf-vm.com/#/core-manage-asdf-vm?id=install).
+1. Add the Ruby, Node.js, and Yarn [`asdf` plugins](https://asdf-vm.com/#/core-manage-plugins)
+ required to install versions of these dependencies:
+
+ ```shell
+ asdf plugin add ruby
+ asdf plugin add nodejs
+ asdf plugin add yarn
+ ```
+
+1. [Install](https://asdf-vm.com/#/core-manage-versions) the dependencies listed in the project's
+ `.tool-versions` file:
+
+ ```shell
+ asdf install
+ ```
+
+1. Set the installed versions of Ruby, Node.js, and Yarn to be global for projects that don't use
+ `.tool-versions` files. For example to set Ruby 2.7.4 as the global default, run:
+
+ ```shell
+ asdf global ruby 2.7.4
+ ```
+
+Check your:
+
+- Ruby version with `ruby --version`.
+- Bundler version with `bundle --version`.
+- Node.js version with `node -v`.
+- Yarn version with `yarn -v`
+
+## Install Nanoc's dependencies
+
+The project depends on many Ruby and Node.js libraries. To install these:
+
+1. Open a terminal and navigate to your local checkout of this project.
+1. Run:
+
+ ```shell
+ bundle install && yarn install --frozen-lockfile
+ ```
+
+## Nanoc data sources
+
+GitLab Docs uses Nanoc's [data sources](https://nanoc.app/doc/data-sources/) to import
+and compile the content from the projects we source docs from. The locations of the
+four projects are relative to the location of `gitlab-docs` (defined in
+[`nanoc.yaml`](https://gitlab.com/gitlab-org/gitlab-docs/-/blob/8d9e30f14623c907f29f73883fefcae034092b39/nanoc.yaml#L48-75)).
+Each of the four projects must be at the same root level as `gitlab-docs` and named:
+
+- GitLab: `gitlab`
+- Runner: `gitlab-runner`
+- Omnibus: `omnibus-gitlab`
+- Charts: `charts-gitlab`
+
+If any of the four projects is missing or is misnamed, `nanoc live` will throw an
+error, but you'll still be able to preview the site. However, live reloading
+will not work, so you'll need to manually recompile Nanoc with `nanoc compile`
+when you make changes.
+
+For more information, see the [troubleshooting section](#troubleshooting).
+
+## Clone the repositories
+
+Since this process clones a few repositories, it might be a good idea to
+create a separate directory to have them all together. For example, to store all
+local checkouts in a `dev` directory:
+
+1. Open a terminal and run:
+
+ ```shell
+ mkdir -p ~/dev
+ ```
+
+1. Navigate to the directory you'd like the repositories to be cloned:
+
+ ```shell
+ cd ~/dev
+ ```
+
+1. Clone the documentation's website repository:
+
+ ```shell
+ ## Using SSH (for GitLab Team members)
+ git clone git@gitlab.com:gitlab-org/gitlab-docs.git
+
+ ## Using HTTPS (for external contributors)
+ git clone https://gitlab.com/gitlab-org/gitlab-docs.git
+ ```
+
+1. Clone the repositories you wish to contribute documentation changes to. Clone these projects
+ **in the same directory** as the `gitlab-docs` project
+ (see [data sources](#nanoc-data-sources)). For example, `~/dev`:
+
+ - **GitLab contributors** that don't have Developer access to the projects,
+ fork the ones you want and then clone them by using your forked version:
+
+ ```shell
+ ## Using HTTPS (for members that do not have Developer access)
+ git clone https://gitlab.com/<username>/gitlab.git
+ git clone https://gitlab.com/<username>/gitlab-runner.git
+ git clone https://gitlab.com/<username>/omnibus-gitlab.git
+ git clone https://gitlab.com/<username>/charts/gitlab.git charts-gitlab
+ ```
+
+ - For members that have Developer access (usually the
+ **GitLab Team members**), clone the required repositories using SSH:
+
+ ```shell
+ ## Using SSH (for members that have Developer access)
+ git clone git@gitlab.com:gitlab-org/gitlab.git
+ git clone git@gitlab.com:gitlab-org/gitlab-runner.git
+ git clone git@gitlab.com:gitlab-org/omnibus-gitlab.git
+ git clone git@gitlab.com:gitlab-org/charts/gitlab.git charts-gitlab
+ ```
+
+If you cloned the projects into `~/dev`, you should now have the following projects:
+
+- `~/dev/gitlab-docs`
+- `~/dev/gitlab`
+- `~/dev/gitlab-runner`
+- `~/dev/omnibus-gitlab`
+- `~/dev/charts-gitlab`
+
+## Preview the documentation website
+
+Run the following command from the root directory of the `gitlab-docs` project to build the documentation site and bring the embedded
+web server up:
+
+```shell
+bundle exec nanoc live
+```
+
+This generates the site and you can view it in your browser at <http://localhost:3000>.
+
+To preview the site on another port, use:
+
+```shell
+bundle exec nanoc live -p 3004
+```
+
+This generates the site and you can view it in your browser at <http://localhost:3004>.
+
+### Preview on mobile
+
+If you want to check how your changes look on mobile devices, you can use:
+
+- [Responsive Design Mode](https://support.apple.com/en-au/guide/safari-developer/dev84bd42758/mac)
+ on Safari.
+- [Responsive Design Mode](https://developer.mozilla.org/en-US/docs/Tools/Responsive_Design_Mode)
+ on Firefox.
+- [Device Mode](https://developers.google.com/web/tools/chrome-devtools/device-mode)
+ on Chrome.
+
+An alternative is to preview the documentation site with your own devices, as
+long as they are connected to the same network as your computer.
+
+To do that, we need to change the IP address Nanoc is serving on from the
+default `http://127.0.0.1` to your computer's
+[private IPv4 address](https://www.howtogeek.com/236838/how-to-find-any-devices-ip-address-mac-address-and-other-network-connection-details/).
+
+Once you know your computer's private IPv4, use the flag `-o`. For
+example, let's say your current IPv4 address is `192.168.0.105`:
+
+```shell
+bundle exec nanoc live -o 192.168.0.105
+```
+
+Now, open your mobile's browser and type `http://192.168.0.105:3000`, and you should
+be able to navigate through the docs site. This process applies to previewing the
+docs site on every device connected to your network.
+
+## Gitpod integration
+
+To avoid having to build and maintain a local environment for running the GitLab
+documentation site, use [Gitpod](https://www.gitpod.io) to deploy a
+pre-configured documentation site for your development use.
+
+For additional information, see the
+[GDK Gitpod docs](https://gitlab.com/gitlab-org/gitlab-development-kit/-/blob/main/doc/howto/gitpod.md).
+
+### Get started with Gitpod
+
+To start developing with Gitpod:
+
+1. Create a [Gitpod](https://www.gitpod.io) account and connect it to your
+ GitLab account.
+1. Enable the integration in your GitLab [profile preferences](https://gitlab.com/-/profile/preferences).
+1. Open the GitLab documentation site in Gitpod:
+
+ - If you're a GitLab team member, open the
+ [GitLab documentation site environment](https://gitpod.io/#https://gitlab.com/gitlab-org/gitlab-docs/).
+
+ - If you're a community contributor:
+
+ 1. Fork the [GitLab Docs repository](https://gitlab.com/gitlab-org/gitlab-docs/-/forks/new).
+ 1. Select **Gitpod** in the repository view of your fork. If you don't see
+ **Gitpod**, open the **Web IDE** dropdown.
+
+### Check out branches in Gitpod
+
+To switch to another branch:
+
+1. In the bottom blue bar, select the current branch name. GitLab displays a
+ context menu with a list of branches.
+1. Enter the name of the branch you want to switch to, and then select it from
+ the list.
+1. To create a new branch, select **Create new branch**, provide a name for the
+ branch, and then press <kbd>Enter</kbd>.
+
+### Commit and push changes in Gitpod
+
+To commit and push changes:
+
+1. In the left sidebar, select the **Source Control: Git** tab.
+1. Review the displayed changes you want to add to the commit. To add all files,
+ select the **Plus** icon next to the **Changes** section.
+1. Enter a commit message in the text area.
+1. Select the checkmark icon at the top of the **Source Control** section to
+ commit your changes.
+1. Push your changes by selecting the **Synchronize changes** action in the
+ bottom blue toolbar. If Gitpod asks you how you want to synchronize your
+ changes, select **Push and pull**.
+
+## Troubleshooting
+
+If you see a `Nanoc::Core::Site::DuplicateIdentifierError` error, confirm you have no symlinks
+in the `content` directory.
+
+This is usually caused in local instances of GitLab Docs where symlinks were used to link
+to documentation projects for content.
+
+### `ftype: No such file or directory @ rb_file_s_ftype`
+
+If you run into this error, it means you're probably still using symlinks
+under the `content/` directory. In June 2021, we
+[switched](https://gitlab.com/gitlab-org/gitlab-docs/-/merge_requests/1742)
+to [Nanoc's data sources](#nanoc-data-sources) to build the site instead of
+using symlinks.
+
+Make sure no symlinks exist, and rebuild the site like you would normally do:
+
+```shell
+rm -f content/{ee,runner,omnibus,charts}
+```
+
+### `realpath: No such file or directory @ rb_check_realpath_internal`
+
+If you run into this error, it means you're missing one of the four projects
+`gitlab-docs` relies on to build the content of the docs site.
+
+See [Nanoc data sources](#nanoc-data-sources) to learn where the four projects
+should be placed and what names they should have.