blob: 710f7847fc67856ff4cd786cb1ad74db10321382 [file] [log] [blame]
// Licensed to the Apache Software Foundation (ASF) under one or more
// contributor license agreements. See the NOTICE file distributed with
// this work for additional information regarding copyright ownership.
// The ASF licenses this file to You under the Apache License, Version 2.0
// (the "License"); you may not use this file except in compliance with
// the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
= Apache Ignite Documentation
:toc:
:toc-title:
== Overview
The Apache Ignite documentation is maintained in the repository with the code base, in the "/docs" subdirectory. The directory contains the source files, HTML templates and css styles.
The Apache Ignite documentation is written in link:https://asciidoctor.org/docs/what-is-asciidoc/[asciidoc].
The Asciidoc files are compiled into HTML pages and published to https://ignite.apache.org/docs.
.Content of the docs directory
[cols="1,4",opts="stretch"]
|===
| pass:[_]docs | The directory with .adoc files and code-snippets.
| pass:[_]config.yml | Jekyll configuration file.
|===
== Building the Docs Locally
To build the docs locally, you can install `jekyll` and other dependencies on your machine, or you can use Jekyll docker image.
=== Install Jekyll and Asciidoctor
. Install Jekyll by following this instruction: https://jekyllrb.com/docs/installation/[window=_blank]
. In the “/docs directory, run the following command:
+
[source, shell]
----
$ bundle
----
+
This should install all dependencies, including `asciidoctor`.
. Start jekyll:
+
[source, shell]
----
$ bundle exec jekyll s
----
The command compiles the Asciidoc files into HTML pages and starts a local webserver.
Open `http://localhost:4000/docs[window=_blank]` in your browser.
=== Run with Docker
The following command starts jekyll in a container and downloads all dependencies. Run the command in the “/docs directory.
[source, shell]
----
$ docker run -v "$PWD:/srv/jekyll" -p 4000:4000 jekyll/jekyll:latest jekyll s
----
Open `http://localhost:4000/docs[window=_blank]` in your browser.
=== Troubleshooting
Below are some issues you might hit during an installation of the Jekyll environment or while building the tutorials.
Let us know if you come across a new and found a workaround.
==== MacOS: Issues with FFI library during Jekyll installation
You should see an error trace similar to this: https://github.com/ffi/ffi/issues/653
Attempt to fix the problem by following this sequence of commands (typically it's the last command only):
[source, text]
----
brew reinstall libffi
export LDFLAGS="-L/usr/local/opt/libffi/lib"
export CPPFLAGS="-I/usr/local/opt/libffi/include"
export PKG_CONFIG_PATH="/usr/local/opt/libffi/lib/pkgconfig"
gem install --user-install bundler jekyll
----
==== MacOS: jekyll-asciidoc gem is not installed by default
Try to follow this procedure to fix the issue.
* Comment out the `rm -rf $tmp_dir` at the very end of the `build.sh` script, so that the temp folder is not deleted after the execution.
* Run `build.sh` (fails with `Could not find gem 'jekyll-asciidoc'...` error).
* Go to `tmp/web_site` folder.
* Run `bundle install`.
* Revert the `build.sh` script and run it again.
==== MacOS: can't build project due to inability to load openssl
You should see an error like this:
`LoadError: dlopen(/Users/dmagda/.rbenv/versions/2.6.2/lib/ruby/2.6.0/x86_64-darwin18/digest/sha1.bundle, 9): Library not loaded: /usr/local/opt/openssl/lib/libssl.1.0.0.dylib
Referenced from: /Users/dmagda/.rbenv/versions/2.6.2/lib/ruby/2.6.0/x86_64-darwin18/digest/sha1.bundle`
Try to upgrade Ruby, rbenv to the latest version (2.7.1) and then reinstall Jekyll. Use the official instructions:
https://jekyllrb.com/docs/installation/
== How to Contribute
If you want to contribute to the documentation, add or modify the relevant page in the `docs/_docs` directory.
This directory contains all .adoc files (which are then rendered into HTML pages and published on the web-site).
Because we use asciidoc for documentation, consider the following points:
* Get familiar with the asciidoc format: https://asciidoctor.org/docs/user-manual/. You don’t have to read the entire manual. Search through it when you want to learn how to create a numbered list, or insert an image, or use italics.
* Please read the link:https://asciidoctor.org/docs/asciidoc-recommended-practices:[AsciiDoc Recommended Practices] and try to adhere to those when editing the .adoc source files.
The following sections explain specific asciidoc syntax that we use.
=== Table of content
The table of content is defined in the `_data/toc.yaml` file.
If you want to add a new page, make sure to update the TOC.
=== Changing an URL of an existing page
If you rename an already published page or change the page's path in the `/_data/toc.yaml` file,
you must configure a proper redirect from the old to the new URL in the following files of the Ignite website:
https://github.com/apache/ignite-website/blob/master/.htaccess
Reach out to documentation maintainers if you need any help with this.
=== Links to other sections in the docs
All .adoc files are located in the "docs/_docs" directory.
Any link to the files within the directory must be relative to that directory.
Remove the file extension (.adoc).
For example:
[source, adoc]
----
link:persistence/native-persistence[Native Persistence]
----
This is a link to the Native Persistence page.
=== Links to external resources
When referencing an external resource, make the link to open in a new window by adding the `window=_blank` attribute:
[source, adoc]
----
link:https://docs.oracle.com/javase/8/docs/technotes/guides/security/SunProviders.html#SunJSSE_Protocols[Supported protocols,window=_blank]
----
=== Tabs
We use custom syntax to insert tabs. Tabs are used to provide code samples for different programming languages.
Tabs are defined by the `tabs` block:
```
[tabs]
--
individual tabs are defined here
--
```
Each tab is defined by the 'tab' directive:
```
tab:tab_name[]
```
where `tab_name` is the title of the tab.
The content of the tab is everything that is given between the tab title, and the next tab or the end of the block.
```asciidoc
[tabs]
--
tab:XML[]
The content of the XML tab goes here
tab:Java[]
The content of the Java tab is here
tab:C#/.NET[]
tab:C++[unsupported]
--
```
=== Callouts
Use the syntax below if you need to bring reader's attention to some details:
[NOTE]
====
[discrete]
=== Callout Title
Callout Text
====
Change the callout type to `CAUTION` if you want to put out a warning:
[CAUTION]
====
[discrete]
=== Callout Title
Callout Text
====
=== Code Snippets
Code snippets must be taken from a compilable source code file (e.g. java, cs, js, etc).
We use the `include` feature of asciidoc.
Source code files are located in the `docs/_docs/code-snippets/{language}` folders.
To add a code snippet to a page, follow these steps:
* Create a file in the code snippets directory, e.g. _docs/code-snippets/java/org/apache/ignite/snippets/JavaThinClient.java
* Enclose the piece of code you want to include within named tags (see https://asciidoctor.org/docs/user-manual/#by-tagged-regions). Give the tag a self-evident name.
For example:
+
```
[source, java]
----
// tag::clientConnection[]
ClientConfiguration cfg = new ClientConfiguration().setAddresses("127.0.0.1:10800");
try (IgniteClient client = Ignition.startClient(cfg)) {
ClientCache<Integer, String> cache = client.cache("myCache");
// get data from the cache
}
// end::clientConnection[]
----
```
* Include the tag in the adoc file:
+
[source, adoc,subs="macros"]
----
\include::{javaCodeDir}/JavaThinClient.java[tag=clientConnection,indent=0]
----