Show More
@@ -0,0 +1,172 b'' | |||||
|
1 | # Makefile for Sphinx documentation | |||
|
2 | # | |||
|
3 | ||||
|
4 | # You can set these variables from the command line. | |||
|
5 | SPHINXOPTS = -W | |||
|
6 | SPHINXBUILD = ../result/bin/sphinx-build | |||
|
7 | PAPER = | |||
|
8 | BUILDDIR = _build | |||
|
9 | ||||
|
10 | # Internal variables. | |||
|
11 | PAPEROPT_a4 = -D latex_paper_size=a4 | |||
|
12 | PAPEROPT_letter = -D latex_paper_size=letter | |||
|
13 | ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . | |||
|
14 | # the i18n builder cannot share the environment and doctrees with the others | |||
|
15 | I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . | |||
|
16 | ||||
|
17 | .PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext | |||
|
18 | ||||
|
19 | help: | |||
|
20 | @echo "Please use \`make <target>' where <target> is one of" | |||
|
21 | @echo " html to make standalone HTML files" | |||
|
22 | @echo " dirhtml to make HTML files named index.html in directories" | |||
|
23 | @echo " singlehtml to make a single large HTML file" | |||
|
24 | @echo " pickle to make pickle files" | |||
|
25 | @echo " json to make JSON files" | |||
|
26 | @echo " htmlhelp to make HTML files and a HTML help project" | |||
|
27 | @echo " qthelp to make HTML files and a qthelp project" | |||
|
28 | @echo " devhelp to make HTML files and a Devhelp project" | |||
|
29 | @echo " epub to make an epub" | |||
|
30 | @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" | |||
|
31 | @echo " latexpdf to make LaTeX files and run them through pdflatex" | |||
|
32 | @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" | |||
|
33 | @echo " text to make text files" | |||
|
34 | @echo " man to make manual pages" | |||
|
35 | @echo " texinfo to make Texinfo files" | |||
|
36 | @echo " info to make Texinfo files and run them through makeinfo" | |||
|
37 | @echo " gettext to make PO message catalogs" | |||
|
38 | @echo " changes to make an overview of all changed/added/deprecated items" | |||
|
39 | @echo " xml to make Docutils-native XML files" | |||
|
40 | @echo " pseudoxml to make pseudoxml-XML files for display purposes" | |||
|
41 | @echo " linkcheck to check all external links for integrity" | |||
|
42 | @echo " doctest to run all doctests embedded in the documentation (if enabled)" | |||
|
43 | ||||
|
44 | clean: | |||
|
45 | rm -rf $(BUILDDIR) | |||
|
46 | ||||
|
47 | html: | |||
|
48 | $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html | |||
|
49 | @echo | |||
|
50 | @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." | |||
|
51 | ||||
|
52 | dirhtml: | |||
|
53 | $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml | |||
|
54 | @echo | |||
|
55 | @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." | |||
|
56 | ||||
|
57 | singlehtml: | |||
|
58 | $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml | |||
|
59 | @echo | |||
|
60 | @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." | |||
|
61 | ||||
|
62 | pickle: | |||
|
63 | $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle | |||
|
64 | @echo | |||
|
65 | @echo "Build finished; now you can process the pickle files." | |||
|
66 | ||||
|
67 | json: | |||
|
68 | $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json | |||
|
69 | @echo | |||
|
70 | @echo "Build finished; now you can process the JSON files." | |||
|
71 | ||||
|
72 | htmlhelp: | |||
|
73 | $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp | |||
|
74 | @echo | |||
|
75 | @echo "Build finished; now you can run HTML Help Workshop with the" \ | |||
|
76 | ".hhp project file in $(BUILDDIR)/htmlhelp." | |||
|
77 | ||||
|
78 | qthelp: | |||
|
79 | $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp | |||
|
80 | @echo | |||
|
81 | @echo "Build finished; now you can run "qcollectiongenerator" with the" \ | |||
|
82 | ".qhcp project file in $(BUILDDIR)/qthelp, like this:" | |||
|
83 | @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/RhodeCodeInstaller.qhcp" | |||
|
84 | @echo "To view the help file:" | |||
|
85 | @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/RhodeCodeInstaller.qhc" | |||
|
86 | ||||
|
87 | devhelp: | |||
|
88 | $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp | |||
|
89 | @echo | |||
|
90 | @echo "Build finished." | |||
|
91 | @echo "To view the help file:" | |||
|
92 | @echo "# mkdir -p $$HOME/.local/share/devhelp/RhodeCodeInstaller" | |||
|
93 | @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/RhodeCodeInstaller" | |||
|
94 | @echo "# devhelp" | |||
|
95 | ||||
|
96 | epub: | |||
|
97 | $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub | |||
|
98 | @echo | |||
|
99 | @echo "Build finished. The epub file is in $(BUILDDIR)/epub." | |||
|
100 | ||||
|
101 | latex: | |||
|
102 | $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex | |||
|
103 | @echo | |||
|
104 | @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." | |||
|
105 | @echo "Run \`make' in that directory to run these through (pdf)latex" \ | |||
|
106 | "(use \`make latexpdf' here to do that automatically)." | |||
|
107 | ||||
|
108 | latexpdf: | |||
|
109 | $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex | |||
|
110 | @echo "Running LaTeX files through pdflatex..." | |||
|
111 | $(MAKE) -C $(BUILDDIR)/latex all-pdf | |||
|
112 | @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." | |||
|
113 | ||||
|
114 | latexpdfja: | |||
|
115 | $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex | |||
|
116 | @echo "Running LaTeX files through platex and dvipdfmx..." | |||
|
117 | $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja | |||
|
118 | @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." | |||
|
119 | ||||
|
120 | text: | |||
|
121 | $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text | |||
|
122 | @echo | |||
|
123 | @echo "Build finished. The text files are in $(BUILDDIR)/text." | |||
|
124 | ||||
|
125 | man: | |||
|
126 | $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man | |||
|
127 | @echo | |||
|
128 | @echo "Build finished. The manual pages are in $(BUILDDIR)/man." | |||
|
129 | ||||
|
130 | texinfo: | |||
|
131 | $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo | |||
|
132 | @echo | |||
|
133 | @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." | |||
|
134 | @echo "Run \`make' in that directory to run these through makeinfo" \ | |||
|
135 | "(use \`make info' here to do that automatically)." | |||
|
136 | ||||
|
137 | info: | |||
|
138 | $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo | |||
|
139 | @echo "Running Texinfo files through makeinfo..." | |||
|
140 | make -C $(BUILDDIR)/texinfo info | |||
|
141 | @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." | |||
|
142 | ||||
|
143 | gettext: | |||
|
144 | $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale | |||
|
145 | @echo | |||
|
146 | @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." | |||
|
147 | ||||
|
148 | changes: | |||
|
149 | $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes | |||
|
150 | @echo | |||
|
151 | @echo "The overview file is in $(BUILDDIR)/changes." | |||
|
152 | ||||
|
153 | linkcheck: | |||
|
154 | $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck | |||
|
155 | @echo | |||
|
156 | @echo "Link check complete; look for any errors in the above output " \ | |||
|
157 | "or in $(BUILDDIR)/linkcheck/output.txt." | |||
|
158 | ||||
|
159 | doctest: | |||
|
160 | $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest | |||
|
161 | @echo "Testing of doctests in the sources finished, look at the " \ | |||
|
162 | "results in $(BUILDDIR)/doctest/output.txt." | |||
|
163 | ||||
|
164 | xml: | |||
|
165 | $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml | |||
|
166 | @echo | |||
|
167 | @echo "Build finished. The XML files are in $(BUILDDIR)/xml." | |||
|
168 | ||||
|
169 | pseudoxml: | |||
|
170 | $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml | |||
|
171 | @echo | |||
|
172 | @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." |
@@ -0,0 +1,19 b'' | |||||
|
1 | {% extends "!layout.html" %} | |||
|
2 | {% set css_files = css_files + ['_static/add.css'] %} | |||
|
3 | {% set css_files = css_files + ['https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css'] %} | |||
|
4 | ||||
|
5 | {% block footer %} | |||
|
6 | {{ super() }} | |||
|
7 | ||||
|
8 | <script> | |||
|
9 | (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ | |||
|
10 | (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), | |||
|
11 | m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) | |||
|
12 | })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); | |||
|
13 | ||||
|
14 | ga('create', 'UA-55639800-3', 'auto'); | |||
|
15 | ga('send', 'pageview'); | |||
|
16 | ||||
|
17 | </script> | |||
|
18 | ||||
|
19 | {% endblock %} |
@@ -0,0 +1,9 b'' | |||||
|
1 | Configuration Setup | |||
|
2 | =================== | |||
|
3 | ||||
|
4 | .. toctree:: | |||
|
5 | :maxdepth: 1 | |||
|
6 | ||||
|
7 | connect-enterprise | |||
|
8 | alert-channels | |||
|
9 | auth-tokens |
@@ -0,0 +1,108 b'' | |||||
|
1 | .. _rae-cli: | |||
|
2 | ||||
|
3 | |RAE| CLI Guide | |||
|
4 | =============== | |||
|
5 | ||||
|
6 | appenlight-cleanup | |||
|
7 | ------------------ | |||
|
8 | ||||
|
9 | .. py:function:: appenlight_cleanup [-c, --config <PATH>] [-t, --types <choices>] | |||
|
10 | [-r, --resource <resource-id>] [-n, --namespace <resource-id>] | |||
|
11 | ||||
|
12 | Clean up the |RAE| database records. | |||
|
13 | ||||
|
14 | :argument -c --config: Location of the :file:`appenlight.ini` file. | |||
|
15 | :argument -t --types: (Optional) Specify the records you want to cleanup in | |||
|
16 | the database from the following options. The default value is ``logs``. | |||
|
17 | ||||
|
18 | :argument -r --resource: Specify which application's records you with to | |||
|
19 | clean up. The *<resource-id>* refers to your application ID number, | |||
|
20 | which you can get from the |RAE| interface. | |||
|
21 | ||||
|
22 | :argument -n --namespace: (Optional) Specify which namespace records you | |||
|
23 | wish to clean up. You can check the available namespace records in | |||
|
24 | your logs. | |||
|
25 | ||||
|
26 | ||||
|
27 | .. code-block:: bash | |||
|
28 | ||||
|
29 | # Clean up logs on resource ID 18 | |||
|
30 | $ ~/python/bin/appenlight_cleanup -c ~/appenlight/production.ini -t logs -r 18 | |||
|
31 | ||||
|
32 | appenlight-initializedb | |||
|
33 | ----------------------- | |||
|
34 | ||||
|
35 | .. py:function:: appenlight-initializedb <ini-file-name> | |||
|
36 | ||||
|
37 | Initialize |RAE| database. | |||
|
38 | ||||
|
39 | :argument -c --config: Location of the :file:`appenlight.ini` file. | |||
|
40 | :argument --username: (Optional) Specify the username of the | |||
|
41 | new administrator account. | |||
|
42 | :argument --password: Specify the password of the administrator account. | |||
|
43 | :argument --email: Specify the email of the administrator account. | |||
|
44 | :argument --auth-token: Specify the auth token for the administrator. | |||
|
45 | ||||
|
46 | .. code-block:: bash | |||
|
47 | ||||
|
48 | # Create a new dev.ini file and database | |||
|
49 | $ ~/python/bin/appenlight-initializedb -c dev.ini | |||
|
50 | ||||
|
51 | appenlight-migratedb | |||
|
52 | -------------------- | |||
|
53 | ||||
|
54 | .. py:function:: appenlight_migratedb <ini-file-name> | |||
|
55 | ||||
|
56 | Migrate the database associated with the specified :file:`.ini` file. | |||
|
57 | ||||
|
58 | .. code-block:: bash | |||
|
59 | ||||
|
60 | # Migrate the specified DB | |||
|
61 | $ ~/python/bin/appenlight-initializedb -c ~/appenlight/production.ini | |||
|
62 | ||||
|
63 | appenlight-reindex-elastic-search | |||
|
64 | --------------------------------- | |||
|
65 | ||||
|
66 | .. py:function:: appenlight_reindex-elastic-search [-c, --config <PATH>] [-t, --types <choices>] | |||
|
67 | ||||
|
68 | :argument -c --config: Location of the :file:`appenlight.ini` file. | |||
|
69 | :argument -t --types: (Optional) Specify the records you want to reindex in | |||
|
70 | the database from the following options. The default value is to | |||
|
71 | reindex all records. | |||
|
72 | ||||
|
73 | - ``reports`` | |||
|
74 | - ``logs`` | |||
|
75 | - ``metrics`` | |||
|
76 | - ``slow_calls`` | |||
|
77 | - ``template`` | |||
|
78 | - **other types inherited from plugins** | |||
|
79 | ||||
|
80 | .. code-block:: bash | |||
|
81 | ||||
|
82 | # Reindex reports | |||
|
83 | $ ~/python/bin/appenlight_reindex_elasticsearch -c ~/appenlight/production.ini -t reports | |||
|
84 | ||||
|
85 | # Reindex everything | |||
|
86 | $ ~/python/bin/appenlight_reindex_elasticsearch -c ~/appenlight/production.ini | |||
|
87 | ||||
|
88 | appenlight-uptime-monitor | |||
|
89 | ------------------------- | |||
|
90 | ||||
|
91 | .. py:function:: appenlight-uptime-monitor [-c, --config <PATH>] [-s, --sync-url <URL>] | |||
|
92 | [-u, --update-url <URL>] [-l, --location <ping-id>] [-k, --api-key <api-key>] | |||
|
93 | ||||
|
94 | |RAE| Uptime Monitor. | |||
|
95 | ||||
|
96 | :argument -c --config: Location of the :file:`appenlight.ini` file. | |||
|
97 | :argument -s --sync-url: Specify the source URL for monitoring. The | |||
|
98 | default url is ``http://127.0.0.1:6543/api/uptime_app_list``. | |||
|
99 | :argument -u --update-url: Specify the destination URL for the uptime | |||
|
100 | data. The default value is ``http://127.0.0.1:6543/api/uptime``. | |||
|
101 | :argument -l --location: Integer identifier for location of ping service. | |||
|
102 | The default location is ``1``. | |||
|
103 | :argument -k --api-key: The administrator user auth TOKEN. | |||
|
104 | ||||
|
105 | .. code-block:: bash | |||
|
106 | ||||
|
107 | # Run uptime monitoring script | |||
|
108 | $ ~/python/bin/appenlight-uptime-monitor -c uptime_config.ini |
@@ -0,0 +1,52 b'' | |||||
|
1 | Alert Channels | |||
|
2 | ============== | |||
|
3 | ||||
|
4 | You can configure |RAE| to send alerts to multiple channels. | |||
|
5 | ||||
|
6 | Email Channel | |||
|
7 | ------------- | |||
|
8 | ||||
|
9 | To configure an email alert channel and the rules criteria, use the following | |||
|
10 | steps: | |||
|
11 | ||||
|
12 | 1. Select :menuselection:`Settings --> Add Email Channel` | |||
|
13 | 2. Add your email address. | |||
|
14 | 3. On the :guilabel:`Alert channels` page, configure the notification rules | |||
|
15 | based on the following criteria. | |||
|
16 | ||||
|
17 | .. hlist:: | |||
|
18 | ||||
|
19 | - Application | |||
|
20 | - HTTP Status | |||
|
21 | - Request Duration | |||
|
22 | - Priority | |||
|
23 | - Domain | |||
|
24 | - URL Path | |||
|
25 | - Error | |||
|
26 | - Tag | |||
|
27 | - Group | |||
|
28 | ||||
|
29 | .. image:: ../images/set-alerts.png | |||
|
30 | ||||
|
31 | Additional Channels | |||
|
32 | ------------------- | |||
|
33 | ||||
|
34 | You can configure further channels using the following steps: | |||
|
35 | ||||
|
36 | 1. Select :menuselection:`Settings --> List Applications` | |||
|
37 | 2. Click :guilabel:`Integrations` beside the application for which you wish to | |||
|
38 | configure alerts. | |||
|
39 | ||||
|
40 | The following integrations are available, and you can read more in the | |||
|
41 | :ref:`integrations` section: | |||
|
42 | ||||
|
43 | .. hlist:: | |||
|
44 | ||||
|
45 | - Bitbucket | |||
|
46 | - Campfire | |||
|
47 | - Flowdock | |||
|
48 | - github | |||
|
49 | - Hipchat | |||
|
50 | - Jira | |||
|
51 | - Slack | |||
|
52 | - webhooks |
@@ -0,0 +1,48 b'' | |||||
|
1 | Application Monitoring | |||
|
2 | ====================== | |||
|
3 | ||||
|
4 | You can connect multiple applications to |RAE| for monitoring. To do this, | |||
|
5 | use the information in this section. | |||
|
6 | ||||
|
7 | Adding an Application | |||
|
8 | --------------------- | |||
|
9 | ||||
|
10 | 1. Select :menuselection:`Settings --> Create Application`. | |||
|
11 | 2. Set the :guilabel:`Application name` and :guilabel:`Application URL`. | |||
|
12 | 3. Click :guilabel:`Create Application`. | |||
|
13 | ||||
|
14 | .. note:: | |||
|
15 | ||||
|
16 | You will need to configure your application to communicate with |RAE|. | |||
|
17 | See the instructions for your particular framework in the | |||
|
18 | `Appenlight Developer Docs`_. | |||
|
19 | ||||
|
20 | Transfer Application Ownership | |||
|
21 | ------------------------------ | |||
|
22 | ||||
|
23 | 1. Select :menuselection:`Admin --> List Applications --> Settings` | |||
|
24 | 2. In the :guilabel:`Transfer Ownership` section, enter the following | |||
|
25 | details: | |||
|
26 | ||||
|
27 | - The current owner's password | |||
|
28 | - The new owner's username | |||
|
29 | ||||
|
30 | 3. Click :guilabel:`Transfer Ownership of application` | |||
|
31 | ||||
|
32 | Adding Users and User Groups | |||
|
33 | ---------------------------- | |||
|
34 | ||||
|
35 | Access to each application is granted on a :guilabel:`User Group` or | |||
|
36 | :guilabel:`User` basis, see the :ref:`user-perms` section for more details. | |||
|
37 | ||||
|
38 | Removing an Application | |||
|
39 | ----------------------- | |||
|
40 | ||||
|
41 | To remove an application from |RAE|, us the following steps. | |||
|
42 | ||||
|
43 | 1. Select :menuselection:`Admin --> List Applications` | |||
|
44 | 2. Click :guilabel:`Settings` beside the application you want to delete. | |||
|
45 | 3. Click :guilabel:`Delete my application` | |||
|
46 | ||||
|
47 | ||||
|
48 | .. _Appenlight Developer Docs: https://appenlight.rhodecode.com/page/api/main |
@@ -0,0 +1,16 b'' | |||||
|
1 | Authentication Tokens | |||
|
2 | ===================== | |||
|
3 | ||||
|
4 | These tokens are used to authenticate users when accessing information using | |||
|
5 | the API. | |||
|
6 | ||||
|
7 | Creating Tokens | |||
|
8 | --------------- | |||
|
9 | ||||
|
10 | To create Authentication Tokens, go to the | |||
|
11 | :menuselection:`Settings --> Auth Tokens` page. | |||
|
12 | ||||
|
13 | .. note:: | |||
|
14 | ||||
|
15 | The API is currently in BETA, so there is no real need to use | |||
|
16 | Authentication Tokens yet. |
@@ -0,0 +1,100 b'' | |||||
|
1 | .. _connect-enterprise: | |||
|
2 | ||||
|
3 | How To Use |AE| to Monitor |RCE| | |||
|
4 | ================================ | |||
|
5 | ||||
|
6 | .. raw:: html | |||
|
7 | ||||
|
8 | From the landing page, the <i class="fa fa-cog "></i> icon takes you to | |||
|
9 | the settings page.<br><br> | |||
|
10 | ||||
|
11 | 1. From the interface, create an application for |AE| to monitor: | |||
|
12 | :menuselection:`Settings --> Create Application` | |||
|
13 | 2. Add in your |RCE| instance details. | |||
|
14 | 3. Take note of the Public and Private API keys on the application page. You | |||
|
15 | will need to add the private key to your |RCE| configuration file. | |||
|
16 | ||||
|
17 | |RCE| Side Of The Setup | |||
|
18 | ----------------------- | |||
|
19 | ||||
|
20 | Once you have your |AE| account details, configure the |RCE| | |||
|
21 | :file:`home/{user}/.rccontrol/{instance-id}/rhodecode.ini` file with the | |||
|
22 | following details to set up the connection between the two systems. | |||
|
23 | ||||
|
24 | .. tip:: | |||
|
25 | ||||
|
26 | The section below should already be present in your configuration file if | |||
|
27 | running a recent version of |RCE|. | |||
|
28 | ||||
|
29 | * Enable the |AE| connection by setting ``appenlight = true``. | |||
|
30 | * Set your |AE| URL using the ``appenlight.server_url = URL`` option. | |||
|
31 | * Set your |AE| |authtoken| using the ``appenlight.api_key = TOKEN`` option. | |||
|
32 | ||||
|
33 | .. code-block:: ini | |||
|
34 | :emphasize-lines: 10,12,13 | |||
|
35 | ||||
|
36 | ################################### | |||
|
37 | ## ERROR AND LOG HANDLING SYSTEM ## | |||
|
38 | ################################### | |||
|
39 | ||||
|
40 | ## Appenlight is tailored to work with RhodeCode, see | |||
|
41 | ## http://appenlight.com for details how to obtain an account | |||
|
42 | ## you must install python package `appenlight_client` to make it work | |||
|
43 | ||||
|
44 | ## appenlight enabled | |||
|
45 | appenlight = false | |||
|
46 | ||||
|
47 | appenlight.server_url = https://api.appenlight.com | |||
|
48 | appenlight.api_key = YOUR_PRIVATE_API_KEY | |||
|
49 | ||||
|
50 | ## TWEAK AMOUNT OF INFO SENT HERE | |||
|
51 | ||||
|
52 | ## enables 404 error logging (default False) | |||
|
53 | appenlight.report_404 = false | |||
|
54 | ||||
|
55 | ## time in seconds after request is considered being slow (default 1) | |||
|
56 | appenlight.slow_request_time = 1 | |||
|
57 | ||||
|
58 | ## record slow requests in application | |||
|
59 | ## (needs to be enabled for slow datastore recording and time tracking) | |||
|
60 | appenlight.slow_requests = true | |||
|
61 | ||||
|
62 | ## enable hooking to application loggers | |||
|
63 | appenlight.logging = true | |||
|
64 | ||||
|
65 | ## minimum log level for log capture | |||
|
66 | appenlight.logging.level = WARNING | |||
|
67 | ||||
|
68 | ## send logs only from erroneous/slow requests | |||
|
69 | ## (saves API quota for intensive logging) | |||
|
70 | appenlight.logging_on_error = false | |||
|
71 | ||||
|
72 | ## list of additonal keywords that should be grabbed from environ object | |||
|
73 | ## can be string with comma separated list of words in lowercase | |||
|
74 | ## (by default client will always send following info: | |||
|
75 | ## 'REMOTE_USER', 'REMOTE_ADDR', 'SERVER_NAME', 'CONTENT_TYPE' + all keys that | |||
|
76 | ## start with HTTP* this list be extended with additional keywords here | |||
|
77 | appenlight.environ_keys_whitelist = "" | |||
|
78 | ||||
|
79 | ## list of keywords that should be blanked from request object | |||
|
80 | ## can be string with comma separated list of words in lowercase | |||
|
81 | ## (by default client will always blank keys that contain following words | |||
|
82 | ## 'password', 'passwd', 'pwd', 'auth_tkt', 'secret', 'csrf' | |||
|
83 | ## this list be extended with additional keywords set here | |||
|
84 | appenlight.request_keys_blacklist = "" | |||
|
85 | ||||
|
86 | ## list of namespaces that should be ignores when gathering log entries | |||
|
87 | ## can be string with comma separated list of namespaces | |||
|
88 | ## (by default the client ignores own entries: appenlight_client.client) | |||
|
89 | appenlight.log_namespace_blacklist = "" | |||
|
90 | ||||
|
91 | Verifying The Setup | |||
|
92 | ------------------- | |||
|
93 | ||||
|
94 | Once |RCE| and |AE| are working together you will see the monitoring begin on | |||
|
95 | your |AE| dashboard when you start carrying out actions in |RCE|. | |||
|
96 | ||||
|
97 | .. image:: ../images/ae-verify.png | |||
|
98 | ||||
|
99 | .. _sign up for an account: https://appenlight.rhodecode.com/ | |||
|
100 | .. _here: https://appenlight.rhodecode.com/page/api/main |
@@ -0,0 +1,64 b'' | |||||
|
1 | .. _feature-overview: | |||
|
2 | ||||
|
3 | Feature Overview | |||
|
4 | ================ | |||
|
5 | ||||
|
6 | Error Reporting | |||
|
7 | --------------- | |||
|
8 | ||||
|
9 | - Reports are grouped based on parameters such as *server*, *exception*, or | |||
|
10 | *view name*. | |||
|
11 | - Every report contains the stacktrace that generated it, and you can inspect | |||
|
12 | local frame variables from each stacktrace. | |||
|
13 | - It is possible to attach custom context data to reports. | |||
|
14 | - Separate occurrences of an error within a group can be inspected. | |||
|
15 | - Exception trends can be spotted by using the graphing features and | |||
|
16 | visualising the data. | |||
|
17 | - You can see application logs that happen during a specific request. | |||
|
18 | - You can identify slow calls and get a layered breakdown of request executions. | |||
|
19 | - You can access all request parameters in exception reports. | |||
|
20 | - Full-text search reports are available based on filters. | |||
|
21 | - You can set prioritization rules for your reports. | |||
|
22 | - You can set report alerts to notify someone immediately if a particular | |||
|
23 | problem occurs. | |||
|
24 | ||||
|
25 | ||||
|
26 | Performance Monitoring | |||
|
27 | ---------------------- | |||
|
28 | ||||
|
29 | - Automatic application performance monitoring once your system is connected | |||
|
30 | to |RAE|. | |||
|
31 | - Slow request are monitored with individual query details, and slow call | |||
|
32 | details can be viewed from the interface. | |||
|
33 | - You can view your application performance metrics and response time | |||
|
34 | statistics using filters to breakdown the data. | |||
|
35 | - You can get insights into different layers of your application including: SQL | |||
|
36 | queries, time traces, noSql data stores, cache layers, remote connection | |||
|
37 | times, and others. | |||
|
38 | - You can get a breakdown of the most accessed view in your application, and | |||
|
39 | their average response times. | |||
|
40 | - You can connect multiple servers to the system and filter data base on the | |||
|
41 | hostname. | |||
|
42 | - You can trace the performance of your own functions. | |||
|
43 | - You can use full-text search to get reports based on server, priority, | |||
|
44 | occurrences, average duration, url path, namespace and others. | |||
|
45 | - You can set prioritization rules for your reports. | |||
|
46 | ||||
|
47 | In-app Logging | |||
|
48 | -------------- | |||
|
49 | ||||
|
50 | - You can view external and in-app logs separately. | |||
|
51 | - Once connected your application will start streaming logs that you can then | |||
|
52 | use to generate reports. | |||
|
53 | - You can filter logs based on server, severity, log contents or | |||
|
54 | namespace. | |||
|
55 | - You can see logs that are being generated by specific requests. | |||
|
56 | ||||
|
57 | Collaboration Features | |||
|
58 | ---------------------- | |||
|
59 | ||||
|
60 | - You can add many users to your |RAE| instance. | |||
|
61 | - You can set read/write permissions to team members on a | |||
|
62 | per-connected-application basis. | |||
|
63 | - You can assign reports to team members for review. | |||
|
64 | - You can leave comments on reports. |
@@ -0,0 +1,56 b'' | |||||
|
1 | .. _user-perms: | |||
|
2 | ||||
|
3 | User Administration | |||
|
4 | =================== | |||
|
5 | ||||
|
6 | .. raw:: html | |||
|
7 | ||||
|
8 | From the landing page, them <i class="fa fa-wrench "></i> icon takes you | |||
|
9 | to the admin panel. User management is carried out using the following: | |||
|
10 | <br><br> | |||
|
11 | ||||
|
12 | - User Groups | |||
|
13 | - Users | |||
|
14 | ||||
|
15 | .. image:: ../images/user-mgmt.png | |||
|
16 | ||||
|
17 | Create A User Group | |||
|
18 | ------------------- | |||
|
19 | ||||
|
20 | 1. Select :menuselection:`Admin --> Create Group` | |||
|
21 | 2. Set the :guilabel:`Group Name` and :guilabel:`Description` | |||
|
22 | 3. Click :guilabel:`Add Group` | |||
|
23 | ||||
|
24 | Add/Remove Users From Group | |||
|
25 | --------------------------- | |||
|
26 | ||||
|
27 | 1. Select :menuselection:`Admin --> Groups --> Settings` | |||
|
28 | 2. From the :guilabel:`User List` pane, add or remove users. | |||
|
29 | ||||
|
30 | Create/Edit A User | |||
|
31 | ------------------ | |||
|
32 | ||||
|
33 | 1. Select :menuselection:`Admin --> Create User` | |||
|
34 | 2. Set the following user details: | |||
|
35 | ||||
|
36 | - :guilabel:`Username` | |||
|
37 | - :guilabel:`Password` | |||
|
38 | - :guilabel:`Email Address` | |||
|
39 | ||||
|
40 | 3. Click :guilabel:`Add Group` | |||
|
41 | ||||
|
42 | Setting Permissions | |||
|
43 | ------------------- | |||
|
44 | ||||
|
45 | Permissions are set for User Groups and Users on a per application basis. To | |||
|
46 | set their permissions to each one, use the following steps: | |||
|
47 | ||||
|
48 | 1. Select :menuselection:`Admin --> List Applications` | |||
|
49 | 2. Click the :guilabel:`Settings` button beside the application of your choice. | |||
|
50 | 3. From the :guilabel:`Permissions` panel, give the User Group or User access | |||
|
51 | to the application, and set their level of access from the following options: | |||
|
52 | ||||
|
53 | - :guilabel:`View` | |||
|
54 | - :guilabel:`Update Reports` | |||
|
55 | ||||
|
56 | 4. Click :guilabel:`Give permission` |
@@ -0,0 +1,33 b'' | |||||
|
1 | # Try and keep this list alphabetical | |||
|
2 | # ui is for user interface elements and messages | |||
|
3 | # button - that's obvious | |||
|
4 | ||||
|
5 | rst_epilog = ''' | |||
|
6 | .. |AE| replace:: Appenlight | |||
|
7 | .. |RAE| replace:: RhodeCode Appenlight | |||
|
8 | .. |authtoken| replace:: Authentication Token | |||
|
9 | .. |authtokens| replace:: **Auth Tokens** | |||
|
10 | .. |git| replace:: Git | |||
|
11 | .. |hg| replace:: Mercurial | |||
|
12 | .. |svn| replace:: Subversion | |||
|
13 | .. |LDAP| replace:: LDAP / Active Directory | |||
|
14 | .. |os| replace:: operating system | |||
|
15 | .. |OS| replace:: Operating System | |||
|
16 | .. |PY| replace:: Python | |||
|
17 | .. |pr| replace:: pull request | |||
|
18 | .. |prs| replace:: pull requests | |||
|
19 | .. |psf| replace:: Python Software Foundation | |||
|
20 | .. |repo| replace:: repository | |||
|
21 | .. |repos| replace:: repositories | |||
|
22 | .. |RCI| replace:: RhodeCode Control | |||
|
23 | .. |RCC| replace:: RhodeCode Control | |||
|
24 | .. |RCV| replace:: RhodeCode Enterprise | |||
|
25 | .. |RCM| replace:: RhodeCode Enterprise | |||
|
26 | .. |RCE| replace:: RhodeCode Enterprise | |||
|
27 | .. |RCX| replace:: RhodeCode Extensions | |||
|
28 | .. |RCT| replace:: RhodeCode Tools | |||
|
29 | .. |RCEBOLD| replace:: **RhodeCode Enterprise** | |||
|
30 | .. |RCEITALICS| replace:: `RhodeCode Enterprise` | |||
|
31 | .. |RC| replace:: RhodeCode | |||
|
32 | .. |RNS| replace:: Release Notes | |||
|
33 | ''' |
@@ -0,0 +1,307 b'' | |||||
|
1 | # -*- coding: utf-8 -*- | |||
|
2 | # | |||
|
3 | # RhodeCode Enterprise documentation build configuration file, created by | |||
|
4 | # sphinx-quickstart on Tue Nov 4 11:48:37 2014. | |||
|
5 | # | |||
|
6 | # This file is execfile()d with the current directory set to its | |||
|
7 | # containing dir. | |||
|
8 | # | |||
|
9 | # Note that not all possible configuration values are present in this | |||
|
10 | # autogenerated file. | |||
|
11 | # | |||
|
12 | # All configuration values have a default; values that are commented out | |||
|
13 | # serve to show the default. | |||
|
14 | ||||
|
15 | import sys | |||
|
16 | import os | |||
|
17 | import datetime | |||
|
18 | import sphinx_rtd_theme | |||
|
19 | ||||
|
20 | # If extensions (or modules to document with autodoc) are in another directory, | |||
|
21 | # add these directories to sys.path here. If the directory is relative to the | |||
|
22 | # documentation root, use os.path.abspath to make it absolute, like shown here. | |||
|
23 | sys.path.insert(0, os.path.abspath('.')) | |||
|
24 | import common | |||
|
25 | ||||
|
26 | # -- General configuration ------------------------------------------------ | |||
|
27 | ||||
|
28 | # If your documentation needs a minimal Sphinx version, state it here. | |||
|
29 | #needs_sphinx = '1.0' | |||
|
30 | ||||
|
31 | # Add any Sphinx extension module names here, as strings. They can be | |||
|
32 | # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom | |||
|
33 | # ones. | |||
|
34 | extensions = [ | |||
|
35 | 'sphinx.ext.intersphinx', | |||
|
36 | 'sphinx.ext.todo', | |||
|
37 | 'sphinx.ext.pngmath' | |||
|
38 | ] | |||
|
39 | ||||
|
40 | intersphinx_mapping = { | |||
|
41 | 'enterprise': ('https://docs.rhodecode.com/RhodeCode-Enterprise/', None), | |||
|
42 | 'control': ('https://docs.rhodecode.com/RhodeCode-Control/', None), | |||
|
43 | } | |||
|
44 | ||||
|
45 | if tags.has('dev'): | |||
|
46 | intersphinx_mapping.update({ | |||
|
47 | 'enterprise': ('https://ci.rhodecode.com/documentation/Momentum/', None), | |||
|
48 | 'control': ('https://ci.rhodecode.com/documentation/Control/', None), | |||
|
49 | }) | |||
|
50 | ||||
|
51 | ||||
|
52 | # Add any paths that contain templates here, relative to this directory. | |||
|
53 | templates_path = ['_templates'] | |||
|
54 | ||||
|
55 | # The suffix of source filenames. | |||
|
56 | source_suffix = '.rst' | |||
|
57 | ||||
|
58 | # The encoding of source files. | |||
|
59 | #source_encoding = 'utf-8-sig' | |||
|
60 | ||||
|
61 | # The master toctree document. | |||
|
62 | master_doc = 'index' | |||
|
63 | ||||
|
64 | # The version info for the project you're documenting, acts as replacement for | |||
|
65 | # |version| and |release|, also used in various other places throughout the | |||
|
66 | # built documents. | |||
|
67 | ||||
|
68 | # TODO: johbo: Move into common package for documentation utilities | |||
|
69 | def _get_version(): | |||
|
70 | with open('../VERSION') as f: | |||
|
71 | return f.read().strip() | |||
|
72 | ||||
|
73 | # The full version, including alpha/beta/rc tags. | |||
|
74 | release = _get_version() | |||
|
75 | # The short X.Y version. | |||
|
76 | version = '.'.join(release.split('.', 2)[:2]) # First two parts of release | |||
|
77 | ||||
|
78 | # General information about the project. | |||
|
79 | project = u'RhodeCode Appenlight %s ' % _get_version() | |||
|
80 | copyright = u'2014-{now.year}, RhodeCode GmbH'.format( | |||
|
81 | now=datetime.datetime.today()) | |||
|
82 | ||||
|
83 | ||||
|
84 | # The language for content autogenerated by Sphinx. Refer to documentation | |||
|
85 | # for a list of supported languages. | |||
|
86 | #language = None | |||
|
87 | ||||
|
88 | rst_epilog = common.rst_epilog + """ | |||
|
89 | .. |async| replace:: asynchronous | |||
|
90 | """ | |||
|
91 | ||||
|
92 | # There are two options for replacing |today|: either, you set today to some | |||
|
93 | # non-false value, then it is used: | |||
|
94 | #today = '' | |||
|
95 | # Else, today_fmt is used as the format for a strftime call. | |||
|
96 | #today_fmt = '%B %d, %Y' | |||
|
97 | ||||
|
98 | # List of patterns, relative to source directory, that match files and | |||
|
99 | # directories to ignore when looking for source files. | |||
|
100 | exclude_patterns = [ | |||
|
101 | # Special directories | |||
|
102 | '_build', | |||
|
103 | 'result', | |||
|
104 | ||||
|
105 | # Other RST files | |||
|
106 | 'install/install.rst', | |||
|
107 | 'admin/system-architecture.rst', | |||
|
108 | 'logs/logs.rst', | |||
|
109 | ||||
|
110 | ] | |||
|
111 | ||||
|
112 | ||||
|
113 | # The reST default role (used for this markup: `text`) to use for all | |||
|
114 | # documents. | |||
|
115 | #default_role = None | |||
|
116 | ||||
|
117 | # If true, '()' will be appended to :func: etc. cross-reference text. | |||
|
118 | #add_function_parentheses = True | |||
|
119 | ||||
|
120 | # If true, the current module name will be prepended to all description | |||
|
121 | # unit titles (such as .. function::). | |||
|
122 | #add_module_names = True | |||
|
123 | ||||
|
124 | # If true, sectionauthor and moduleauthor directives will be shown in the | |||
|
125 | # output. They are ignored by default. | |||
|
126 | #show_authors = False | |||
|
127 | ||||
|
128 | # The name of the Pygments (syntax highlighting) style to use. | |||
|
129 | pygments_style = 'sphinx' | |||
|
130 | ||||
|
131 | # A list of ignored prefixes for module index sorting. | |||
|
132 | #modindex_common_prefix = [] | |||
|
133 | ||||
|
134 | # If true, keep warnings as "system message" paragraphs in the built documents. | |||
|
135 | keep_warnings = tags.has("dev") | |||
|
136 | ||||
|
137 | ||||
|
138 | # -- Options for HTML output ---------------------------------------------- | |||
|
139 | ||||
|
140 | # The theme to use for HTML and HTML Help pages. See the documentation for | |||
|
141 | # a list of builtin themes. | |||
|
142 | #html_theme = 'rctheme' | |||
|
143 | html_theme = 'sphinx_rtd_theme' | |||
|
144 | ||||
|
145 | # Theme options are theme-specific and customize the look and feel of a theme | |||
|
146 | # further. For a list of options available for each theme, see the | |||
|
147 | # documentation. | |||
|
148 | #html_theme_options = {} | |||
|
149 | html_theme_path = [sphinx_rtd_theme.get_html_theme_path()] | |||
|
150 | ||||
|
151 | # Add any paths that contain custom themes here, relative to this directory. | |||
|
152 | #html_theme_path = [] | |||
|
153 | ||||
|
154 | # The name for this set of Sphinx documents. If None, it defaults to | |||
|
155 | # "<project> v<release> documentation". | |||
|
156 | #html_title = None | |||
|
157 | ||||
|
158 | # A shorter title for the navigation bar. Default is the same as html_title. | |||
|
159 | #html_short_title = None | |||
|
160 | ||||
|
161 | # The name of an image file (relative to this directory) to place at the top | |||
|
162 | # of the sidebar. | |||
|
163 | #html_logo = None | |||
|
164 | html_sidebars = { | |||
|
165 | '**': ['globaltoc.html'], | |||
|
166 | } | |||
|
167 | ||||
|
168 | # The name of an image file (within the static path) to use as favicon of the | |||
|
169 | # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 | |||
|
170 | # pixels large. | |||
|
171 | html_favicon = 'images/favicon.ico' | |||
|
172 | ||||
|
173 | # Add any paths that contain custom static files (such as style sheets) here, | |||
|
174 | # relative to this directory. They are copied after the builtin static files, | |||
|
175 | # so a file named "default.css" will overwrite the builtin "default.css". | |||
|
176 | html_static_path = ['static/css/add.css'] | |||
|
177 | ||||
|
178 | # Add any extra paths that contain custom files (such as robots.txt or | |||
|
179 | # .htaccess) here, relative to this directory. These files are copied | |||
|
180 | # directly to the root of the documentation. | |||
|
181 | #html_extra_path = [] | |||
|
182 | ||||
|
183 | # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, | |||
|
184 | # using the given strftime format. | |||
|
185 | #html_last_updated_fmt = '%b %d, %Y' | |||
|
186 | ||||
|
187 | # If true, SmartyPants will be used to convert quotes and dashes to | |||
|
188 | # typographically correct entities. | |||
|
189 | #html_use_smartypants = True | |||
|
190 | ||||
|
191 | # Custom sidebar templates, maps document names to template names. | |||
|
192 | #html_sidebars = {} | |||
|
193 | ||||
|
194 | # Additional templates that should be rendered to pages, maps page names to | |||
|
195 | # template names. | |||
|
196 | #html_additional_pages = {} | |||
|
197 | ||||
|
198 | # If false, no module index is generated. | |||
|
199 | #html_domain_indices = True | |||
|
200 | ||||
|
201 | # If false, no index is generated. | |||
|
202 | #html_use_index = True | |||
|
203 | ||||
|
204 | # If true, the index is split into individual pages for each letter. | |||
|
205 | #html_split_index = False | |||
|
206 | ||||
|
207 | # If true, links to the reST sources are added to the pages. | |||
|
208 | #html_show_sourcelink = True | |||
|
209 | ||||
|
210 | # If true, "Created using Sphinx" is shown in the HTML footer. Default is True. | |||
|
211 | #html_show_sphinx = True | |||
|
212 | ||||
|
213 | # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. | |||
|
214 | #html_show_copyright = True | |||
|
215 | ||||
|
216 | # If true, an OpenSearch description file will be output, and all pages will | |||
|
217 | # contain a <link> tag referring to it. The value of this option must be the | |||
|
218 | # base URL from which the finished HTML is served. | |||
|
219 | #html_use_opensearch = '' | |||
|
220 | ||||
|
221 | # This is the file name suffix for HTML files (e.g. ".xhtml"). | |||
|
222 | #html_file_suffix = None | |||
|
223 | ||||
|
224 | # Output file base name for HTML help builder. | |||
|
225 | htmlhelp_basename = 'rhodecode-appenlight' | |||
|
226 | ||||
|
227 | ||||
|
228 | # -- Options for LaTeX output --------------------------------------------- | |||
|
229 | ||||
|
230 | latex_elements = { | |||
|
231 | # The paper size ('letterpaper' or 'a4paper'). | |||
|
232 | #'papersize': 'letterpaper', | |||
|
233 | ||||
|
234 | # The font size ('10pt', '11pt' or '12pt'). | |||
|
235 | #'pointsize': '10pt', | |||
|
236 | ||||
|
237 | # Additional stuff for the LaTeX preamble. | |||
|
238 | #'preamble': '', | |||
|
239 | } | |||
|
240 | ||||
|
241 | # Grouping the document tree into LaTeX files. List of tuples | |||
|
242 | # (source start file, target name, title, | |||
|
243 | # author, documentclass [howto, manual, or own class]). | |||
|
244 | latex_documents = [ | |||
|
245 | ('index', 'RhodeCodeAppenlight.tex', u'RhodeCode Appenlight', | |||
|
246 | u'RhodeCode GmbH', 'manual'), | |||
|
247 | ] | |||
|
248 | ||||
|
249 | # The name of an image file (relative to this directory) to place at the top of | |||
|
250 | # the title page. | |||
|
251 | #latex_logo = None | |||
|
252 | ||||
|
253 | # For "manual" documents, if this is true, then toplevel headings are parts, | |||
|
254 | # not chapters. | |||
|
255 | #latex_use_parts = False | |||
|
256 | ||||
|
257 | # If true, show page references after internal links. | |||
|
258 | #latex_show_pagerefs = False | |||
|
259 | ||||
|
260 | # If true, show URL addresses after external links. | |||
|
261 | #latex_show_urls = False | |||
|
262 | ||||
|
263 | # Documents to append as an appendix to all manuals. | |||
|
264 | #latex_appendices = [] | |||
|
265 | ||||
|
266 | # If false, no module index is generated. | |||
|
267 | #latex_domain_indices = True | |||
|
268 | ||||
|
269 | ||||
|
270 | # -- Options for manual page output --------------------------------------- | |||
|
271 | ||||
|
272 | # One entry per manual page. List of tuples | |||
|
273 | # (source start file, name, description, authors, manual section). | |||
|
274 | man_pages = [ | |||
|
275 | ('rhodecode-enterprise', 'rhodecodeenterprise', u'RhodeCode Enterprise', | |||
|
276 | [u'RhodeCode GmbH'], 1) | |||
|
277 | ] | |||
|
278 | ||||
|
279 | # If true, show URL addresses after external links. | |||
|
280 | #man_show_urls = False | |||
|
281 | ||||
|
282 | ||||
|
283 | # -- Options for Texinfo output ------------------------------------------- | |||
|
284 | ||||
|
285 | # Grouping the document tree into Texinfo files. List of tuples | |||
|
286 | # (source start file, target name, title, author, | |||
|
287 | # dir menu entry, description, category) | |||
|
288 | texinfo_documents = [ | |||
|
289 | ('rhodecode-enterprise', 'RhodeCodeEnterprise', u'RhodeCode Enterprise', | |||
|
290 | u'Brian Butler', 'RhodeCodeEnterprise', 'One line description of project.', | |||
|
291 | 'Miscellaneous'), | |||
|
292 | ] | |||
|
293 | ||||
|
294 | # Documents to append as an appendix to all manuals. | |||
|
295 | #texinfo_appendices = [] | |||
|
296 | ||||
|
297 | # If false, no module index is generated. | |||
|
298 | #texinfo_domain_indices = True | |||
|
299 | ||||
|
300 | # How to display URL addresses: 'footnote', 'no', or 'inline'. | |||
|
301 | #texinfo_show_urls = 'footnote' | |||
|
302 | ||||
|
303 | # If true, do not generate a @detailmenu in the "Top" node's menu. | |||
|
304 | #texinfo_no_detailmenu = False | |||
|
305 | ||||
|
306 | # We want to see todo notes in case of a pre-release build of the documentation | |||
|
307 | todo_include_todos = True |
@@ -0,0 +1,37 b'' | |||||
|
1 | Creating Custom Dashboards | |||
|
2 | ========================== | |||
|
3 | ||||
|
4 | .. important:: | |||
|
5 | ||||
|
6 | To generate custom dashboards you need to use the |RAE| | |||
|
7 | `Logging API`_ to export the data you want to chart. See the example | |||
|
8 | scripts for doing this in the :ref:`log-script-eg` section. | |||
|
9 | ||||
|
10 | To create a custom dashboard, use the following steps. | |||
|
11 | ||||
|
12 | 1. From the |RAE| home page, select | |||
|
13 | :menuselection:`Charts --> Custom Dashboards --> Create Dashboard` | |||
|
14 | 2. Add a name in the :guilabel:`Dashboard title` files and save the chart. | |||
|
15 | Then you can click on the :guilabel:`Configure Chart` button to | |||
|
16 | start creating it. | |||
|
17 | 3. Configure the following basic chart settings: | |||
|
18 | ||||
|
19 | - The :guilabel:`Application` from which the data is being monitored. | |||
|
20 | - Select the :guilabel:`Chart Type`. | |||
|
21 | - Choose between a :guilabel:`Timeseries histogram` or a :guilabel:`Terms` | |||
|
22 | based chart. | |||
|
23 | - Select the :guilabel:`Aggregation type` from the drop down menu | |||
|
24 | ||||
|
25 | 4. From here on, it depends on what data is being used. In the following | |||
|
26 | example, this is being calculated: | |||
|
27 | ||||
|
28 | - the sum of sales in which the quantity of items sold was over 50 | |||
|
29 | - for *product_name 37* | |||
|
30 | - over the last 7 days | |||
|
31 | ||||
|
32 | .. image:: ../images/custom-dashboard.png | |||
|
33 | :alt: Custom Dashboard Setup | |||
|
34 | ||||
|
35 | .. _Logging API: https://appenlight.rhodecode.com/page/api/0.5/logs | |||
|
36 | ||||
|
37 |
@@ -0,0 +1,25 b'' | |||||
|
1 | .. _log-script-eg: | |||
|
2 | ||||
|
3 | Logging API Script Examples | |||
|
4 | =========================== | |||
|
5 | ||||
|
6 | To export data from your application to use with the custom dashboard feature, | |||
|
7 | use the following examples to create your export scripts. Once exported to | |||
|
8 | |RAE|, the data will be available to begin creating custom charts. | |||
|
9 | ||||
|
10 | .. tip:: | |||
|
11 | ||||
|
12 | To keep your charts up to date, you could run your export script as a cron | |||
|
13 | job. | |||
|
14 | ||||
|
15 | Example Script 1 | |||
|
16 | ---------------- | |||
|
17 | ||||
|
18 | .. literalinclude:: test_data_for_analytics_sales.py | |||
|
19 | :language: python | |||
|
20 | ||||
|
21 | Example Script 2 | |||
|
22 | ---------------- | |||
|
23 | ||||
|
24 | .. literalinclude:: test_data_for_analytics_tickets.py | |||
|
25 | :language: python |
@@ -0,0 +1,11 b'' | |||||
|
1 | Dashboards | |||
|
2 | ========== | |||
|
3 | ||||
|
4 | .. toctree:: | |||
|
5 | :maxdepth: 1 | |||
|
6 | ||||
|
7 | overview | |||
|
8 | creating-dashboards | |||
|
9 | export-scripts | |||
|
10 | ||||
|
11 |
@@ -0,0 +1,9 b'' | |||||
|
1 | Dashboard Overview | |||
|
2 | ================== | |||
|
3 | ||||
|
4 | |RAE| comes with a default dashboard and will populate the fields based on | |||
|
5 | the data it gathers from the connected applications. | |||
|
6 | ||||
|
7 | .. image:: ../images/default-dashboard.png | |||
|
8 | :alt: Appenlight Default Dashboard | |||
|
9 |
@@ -0,0 +1,41 b'' | |||||
|
1 | import requests | |||
|
2 | import json | |||
|
3 | import random | |||
|
4 | ||||
|
5 | from datetime import datetime, timedelta | |||
|
6 | ||||
|
7 | endpoint = 'https://api.appenlight.com/api/logs?protocol_version=0.5' | |||
|
8 | endpoint = 'http://127.0.0.1:6543/api/logs?protocol_version=0.5' | |||
|
9 | ||||
|
10 | ||||
|
11 | logs = [] | |||
|
12 | ||||
|
13 | date = datetime.utcnow() | |||
|
14 | for x in xrange(0, 500): | |||
|
15 | price = random.randint(1, 10) | |||
|
16 | quantity = random.randint(1, 15) | |||
|
17 | date = date - timedelta(hours=random.randint(1, 8)) | |||
|
18 | logs.append( | |||
|
19 | {"log_level": "INFO", | |||
|
20 | "message": "shop operation", | |||
|
21 | "timestamp": "", | |||
|
22 | "date": (date - timedelta(days=x)).strftime('%Y-%m-%dT%H:%M:%S.0'), | |||
|
23 | "namespace": "rc.shop.dummy_data", | |||
|
24 | "server": "dummy.server.com", | |||
|
25 | # "primary_key": x, | |||
|
26 | "permanent": True, | |||
|
27 | "tags": [["action", 'buy'], | |||
|
28 | ["product", 'product_name %s' % price], | |||
|
29 | ["price", price], | |||
|
30 | ["quantity", quantity], | |||
|
31 | ["total_payment", price * quantity], | |||
|
32 | ] | |||
|
33 | } | |||
|
34 | ) | |||
|
35 | ||||
|
36 | resp = requests.post(endpoint, data=json.dumps(logs), headers={ | |||
|
37 | "Content-Type": "application/json", | |||
|
38 | "X-appenlight-api-key": "Your.API.Key" | |||
|
39 | }) | |||
|
40 | ||||
|
41 | print resp.status_code, resp.text |
@@ -0,0 +1,42 b'' | |||||
|
1 | import requests | |||
|
2 | import json | |||
|
3 | import random | |||
|
4 | ||||
|
5 | from datetime import datetime, timedelta | |||
|
6 | ||||
|
7 | endpoint = 'https://api.appenlight.com/api/logs?protocol_version=0.5' | |||
|
8 | endpoint = 'http://127.0.0.1:6543/api/logs?protocol_version=0.5' | |||
|
9 | ||||
|
10 | ||||
|
11 | logs = [] | |||
|
12 | ||||
|
13 | date = datetime.utcnow() | |||
|
14 | for x in xrange(0, 500): | |||
|
15 | price = random.randint(1, 10) | |||
|
16 | quantity = random.randint(1, 15) | |||
|
17 | date = date - timedelta(hours=random.randint(1, 8)) | |||
|
18 | logs.append( | |||
|
19 | {"log_level": "INFO", | |||
|
20 | "message": "support ticket", | |||
|
21 | "timestamp": "", | |||
|
22 | "date": (date - timedelta(days=x)).strftime('%Y-%m-%dT%H:%M:%S.0'), | |||
|
23 | "namespace": "rc.support_tickets", | |||
|
24 | "server": "dummy2.server.com", | |||
|
25 | "permanent": True, | |||
|
26 | # "primary_key": x, | |||
|
27 | "tags": [ | |||
|
28 | ["product", 'product_name %s' % price], | |||
|
29 | ["status", | |||
|
30 | random.choice(['open', 'closed', 'pending', 'invalid'])], | |||
|
31 | ['owner', | |||
|
32 | random.choice(['brian', 'lisa', 'martin', 'karen', 'sarah'])] | |||
|
33 | ] | |||
|
34 | } | |||
|
35 | ) | |||
|
36 | ||||
|
37 | resp = requests.post(endpoint, data=json.dumps(logs), headers={ | |||
|
38 | "Content-Type": "application/json", | |||
|
39 | "X-appenlight-api-key": "Your.API.Key" | |||
|
40 | }) | |||
|
41 | ||||
|
42 | print resp.status_code, resp.text |
1 | NO CONTENT: new file 100644, binary diff hidden |
|
NO CONTENT: new file 100644, binary diff hidden |
1 | NO CONTENT: new file 100644, binary diff hidden |
|
NO CONTENT: new file 100644, binary diff hidden |
1 | NO CONTENT: new file 100644, binary diff hidden |
|
NO CONTENT: new file 100644, binary diff hidden |
1 | NO CONTENT: new file 100644, binary diff hidden |
|
NO CONTENT: new file 100644, binary diff hidden |
1 | NO CONTENT: new file 100644, binary diff hidden |
|
NO CONTENT: new file 100644, binary diff hidden |
1 | NO CONTENT: new file 100644, binary diff hidden |
|
NO CONTENT: new file 100644, binary diff hidden |
1 | NO CONTENT: new file 100644, binary diff hidden |
|
NO CONTENT: new file 100644, binary diff hidden |
1 | NO CONTENT: new file 100644, binary diff hidden |
|
NO CONTENT: new file 100644, binary diff hidden |
@@ -0,0 +1,43 b'' | |||||
|
1 | |RAE| | |||
|
2 | ===== | |||
|
3 | ||||
|
4 | |RAE| is an application performance monitoring system that can be hooked up | |||
|
5 | to your Web Apps. It can be used to monitor you applications in two ways. | |||
|
6 | ||||
|
7 | - Hosted on `appenlight.rhodecode.com`_ | |||
|
8 | - Self installed and managed, see the :ref:`install-ova` section. | |||
|
9 | ||||
|
10 | The following list gives a brief overview of the features available, and for a | |||
|
11 | more detailed explanation of what each of these mean see the | |||
|
12 | :ref:`feature-overview` section. | |||
|
13 | ||||
|
14 | .. hlist:: | |||
|
15 | ||||
|
16 | - Error Reporting | |||
|
17 | - Performance Monitoring | |||
|
18 | - Exception handling | |||
|
19 | - Report generation | |||
|
20 | - Customised dashboard creation | |||
|
21 | - Alert channels | |||
|
22 | ||||
|
23 | .. toctree:: | |||
|
24 | :maxdepth: 1 | |||
|
25 | :caption: Admin Documentation | |||
|
26 | ||||
|
27 | admin/overview | |||
|
28 | install/install-rae | |||
|
29 | admin/admin | |||
|
30 | admin/user-admin | |||
|
31 | admin/application-monitoring | |||
|
32 | integrations/integrations | |||
|
33 | admin/ae-cli | |||
|
34 | ||||
|
35 | .. toctree:: | |||
|
36 | :maxdepth: 1 | |||
|
37 | :caption: User Documentation | |||
|
38 | ||||
|
39 | reports/reports | |||
|
40 | logs/logs-overview | |||
|
41 | graphs/graphs | |||
|
42 | ||||
|
43 | .. _appenlight.rhodecode.com: https://appenlight.rhodecode.com |
@@ -0,0 +1,49 b'' | |||||
|
1 | .. _install-ova: | |||
|
2 | ||||
|
3 | Installation Using An OVA | |||
|
4 | ========================= | |||
|
5 | ||||
|
6 | |RAE| is currently only available as an OVA(Open Virtualization Archive) for | |||
|
7 | installation on virtual machines. To obtain this file, contact | |||
|
8 | support@rhodecode.com. | |||
|
9 | ||||
|
10 | The OVA is packaged using VMWare 8.0, so it would be better to use the same | |||
|
11 | version. You can use a different VMWare version but you will need to use | |||
|
12 | their copatibility option, | |||
|
13 | :menuselection:`virtual machine --> settings --> copatibility` | |||
|
14 | ||||
|
15 | Installation Steps | |||
|
16 | ------------------ | |||
|
17 | ||||
|
18 | To install |RAE| using an OVA and VMWare, use the following steps. | |||
|
19 | ||||
|
20 | 1. Contact |RC| to get the latest OVA file. | |||
|
21 | 2. Create a VMWare virtual machine using the OVA. | |||
|
22 | 3. Sign into the VM with the *User/Password* combination provided. | |||
|
23 | ||||
|
24 | - The OVA is an Ubuntu based VM and |RAE| will be automatically running. | |||
|
25 | - |RAE| will be served on https://rhodecode-appenlight.local. | |||
|
26 | ||||
|
27 | 4. To view your instance of |RAE| you will need to make changes | |||
|
28 | to your local machine's hosts file to resolve the IP Address of the VM. | |||
|
29 | ||||
|
30 | From the VM, use the ``ifconfig`` command to display the local network | |||
|
31 | settings and note the IP Address. | |||
|
32 | ||||
|
33 | .. code-block:: bash | |||
|
34 | ||||
|
35 | # Display your network details. | |||
|
36 | $ ifconfig -a | |||
|
37 | ||||
|
38 | 5. On your local machine, update the hosts file to resolve the IP Address | |||
|
39 | when you access the |RAE| URL: https://rhodecode-appenlight.local | |||
|
40 | ||||
|
41 | Where `192.0.2.0` is changed to your VMs IP Address. | |||
|
42 | ||||
|
43 | .. code-block:: bash | |||
|
44 | ||||
|
45 | # Appenlight VM IP Address | |||
|
46 | 192.0.2.0 rhodecode-appenlight.local | |||
|
47 | ||||
|
48 | Once running you can connect |RAE| and |RCE|. See the | |||
|
49 | :ref:`connect-enterprise` section. |
@@ -0,0 +1,16 b'' | |||||
|
1 | .. _installation: | |||
|
2 | ||||
|
3 | Installing |RAE| | |||
|
4 | ================ | |||
|
5 | ||||
|
6 | |RAE| is currently available in the following format for local installation. | |||
|
7 | To obtain this file, contact support@rhodecode.com. | |||
|
8 | ||||
|
9 | * OVA (Open Virtualization Archive) for installation on virtual machines. | |||
|
10 | ||||
|
11 | If you want |RAE| packaged in another format, please send us an email. | |||
|
12 | ||||
|
13 | .. toctree:: | |||
|
14 | :maxdepth: 2 | |||
|
15 | ||||
|
16 | install-rae |
@@ -0,0 +1,34 b'' | |||||
|
1 | .. _integrations: | |||
|
2 | ||||
|
3 | Integrations Overview | |||
|
4 | ===================== | |||
|
5 | ||||
|
6 | Each application that you connect to |RAE| can have its alerts and reports | |||
|
7 | fed to one of the supported 3rd party applications. You can set notification | |||
|
8 | rules so that only the reports and events that you deem relevant trigger an | |||
|
9 | action. To integrate with any of these, use the following steps: | |||
|
10 | ||||
|
11 | 1. From the |RAE| interface, click through to the | |||
|
12 | :menuselection:`Settings --> List applications --> Integrations` page for | |||
|
13 | your chosen application. | |||
|
14 | 2. Enter the required integration details. You will usually get these details | |||
|
15 | from your 3rd party application admin account. | |||
|
16 | 3. If necessary, on your 3rd party application account, enable the |RAE| | |||
|
17 | integration using whatever requirements are needed on their end. | |||
|
18 | ||||
|
19 | Supported Integrations | |||
|
20 | ---------------------- | |||
|
21 | ||||
|
22 | |RAE| currently supports integrations with the following applications: | |||
|
23 | ||||
|
24 | .. hlist:: | |||
|
25 | ||||
|
26 | - Bitbucket | |||
|
27 | - Campfire | |||
|
28 | - Flowdock | |||
|
29 | - Github | |||
|
30 | - HipChat | |||
|
31 | - Jira | |||
|
32 | - Slack | |||
|
33 | - Other Webhooks | |||
|
34 |
@@ -0,0 +1,38 b'' | |||||
|
1 | Log Monitoring Overview | |||
|
2 | ======================= | |||
|
3 | ||||
|
4 | |RAE| monitors the logs generated by your application and feeds these into a | |||
|
5 | log stream. You can view this log stream by clicking on the log icon on the | |||
|
6 | main landing page. | |||
|
7 | ||||
|
8 | Filtering The Log Feed | |||
|
9 | ---------------------- | |||
|
10 | ||||
|
11 | .. raw:: html | |||
|
12 | ||||
|
13 | From the landing page, the <i class="fa fa-list-alt "></i> icon takes you to | |||
|
14 | the logs page. To filter the log feed, use the following steps. | |||
|
15 | ||||
|
16 | 1. Go to the logs page by clicking on the icon. | |||
|
17 | 2. In the search parameters field, enter a filtering parameter, or multiple | |||
|
18 | filtering parameters. | |||
|
19 | 3. |RAE| will automatically update the logs listing to return only those logs | |||
|
20 | that match your criteria. | |||
|
21 | ||||
|
22 | This is a list of the available filtering parameters: | |||
|
23 | ||||
|
24 | .. hlist:: | |||
|
25 | :columns: 4 | |||
|
26 | ||||
|
27 | * *Application* | |||
|
28 | * *End Date* | |||
|
29 | * *Level* | |||
|
30 | * *Request ID* | |||
|
31 | * *Message* | |||
|
32 | * *Namespace* | |||
|
33 | * *Start Date* | |||
|
34 | * *Tag* | |||
|
35 | ||||
|
36 | .. image:: ../images/ae-logs.png | |||
|
37 | ||||
|
38 |
@@ -0,0 +1,48 b'' | |||||
|
1 | Error Reports Overview | |||
|
2 | ====================== | |||
|
3 | ||||
|
4 | |RAE| monitors your application and generates a list of reports based on | |||
|
5 | operations or views that generate errors. You can view this | |||
|
6 | report list by clicking the error report icon on the main landing page. | |||
|
7 | ||||
|
8 | Filtering Error Reports | |||
|
9 | ----------------------- | |||
|
10 | ||||
|
11 | .. raw:: html | |||
|
12 | ||||
|
13 | From the landing page, the <i class="fa fa-exclamation-triangle"></i> icon | |||
|
14 | takes you to the reports page. To filter the reports feed, use the | |||
|
15 | following steps. | |||
|
16 | ||||
|
17 | 1. Go to the reports page by clicking on the icon. | |||
|
18 | 2. In the search parameters field, enter a filtering parameter, or multiple | |||
|
19 | filtering parameters. | |||
|
20 | 3. |RAE| will automatically update the reports listing to return only those | |||
|
21 | that match your criteria. | |||
|
22 | ||||
|
23 | This is a list of the available filtering parameters: | |||
|
24 | ||||
|
25 | .. hlist:: | |||
|
26 | :columns: 4 | |||
|
27 | ||||
|
28 | * *Application* | |||
|
29 | * *Domain* | |||
|
30 | * *Error* | |||
|
31 | * *End Date* | |||
|
32 | * *HTTP Status* | |||
|
33 | * *Minimum Occurrences* | |||
|
34 | * *Priority* | |||
|
35 | * *Request ID* | |||
|
36 | * *Status* | |||
|
37 | * *Start Date* | |||
|
38 | * *Tag* | |||
|
39 | * *View Name* | |||
|
40 | ||||
|
41 | Viewing Reports | |||
|
42 | --------------- | |||
|
43 | ||||
|
44 | To open a report, click on the report error message on the reports list page. | |||
|
45 | This will open the full details. From this page you can manage the report, | |||
|
46 | for more information, see the :ref:`manage-reports` page. | |||
|
47 | ||||
|
48 | .. image:: ../images/ae-reports.png |
@@ -0,0 +1,25 b'' | |||||
|
1 | .. _manage-reports: | |||
|
2 | ||||
|
3 | Managing Reports | |||
|
4 | ================ | |||
|
5 | ||||
|
6 | Both slow reports and error reports can be managed in the same manner. | |||
|
7 | ||||
|
8 | Assigning reports | |||
|
9 | ----------------- | |||
|
10 | ||||
|
11 | To assign a report to a team member, from the report page use the following | |||
|
12 | steps: | |||
|
13 | ||||
|
14 | 1. Click the :menuselection:`Assign report to user` button. | |||
|
15 | 2. Select the team member from the drop down list. | |||
|
16 | 3. Click :menuselection:`OK`. | |||
|
17 | ||||
|
18 | The user will get an email notification, and a notification in their |RAE| | |||
|
19 | inbox. | |||
|
20 | ||||
|
21 | Sharing Reports | |||
|
22 | --------------- | |||
|
23 | ||||
|
24 | Reports can be made public if you need to share them outside your organisation. | |||
|
25 | To share a report, select the :menuselection:`Make Public` button. |
@@ -0,0 +1,11 b'' | |||||
|
1 | Performance Reports | |||
|
2 | =================== | |||
|
3 | ||||
|
4 | .. toctree:: | |||
|
5 | :maxdepth: 1 | |||
|
6 | ||||
|
7 | error-reports | |||
|
8 | slow-reports | |||
|
9 | managing-reports | |||
|
10 | ||||
|
11 |
@@ -0,0 +1,48 b'' | |||||
|
1 | Slow Reports Overview | |||
|
2 | ===================== | |||
|
3 | ||||
|
4 | |RAE| monitors your application and generates a list of reports based on | |||
|
5 | operations or views that perform slowly. You can view this report list by | |||
|
6 | clicking the icon on the main landing page. | |||
|
7 | ||||
|
8 | Filtering Slow Reports | |||
|
9 | ---------------------- | |||
|
10 | ||||
|
11 | .. raw:: html | |||
|
12 | ||||
|
13 | From the landing page, the <i class="fa fa-clock-o"></i> icon takes you to | |||
|
14 | the reports page. To filter the reports feed, use the following steps. | |||
|
15 | ||||
|
16 | 1. Go to the reports page by clicking on the icon. | |||
|
17 | 2. In the search parameters field, enter a filtering parameter, or multiple | |||
|
18 | filtering parameters. | |||
|
19 | 3. |RAE| will automatically update the reports listing to return only those | |||
|
20 | that match your criteria. | |||
|
21 | ||||
|
22 | This is a list of the available filtering parameters: | |||
|
23 | ||||
|
24 | .. hlist:: | |||
|
25 | :columns: 4 | |||
|
26 | ||||
|
27 | * *Application* | |||
|
28 | * *Domain* | |||
|
29 | * *End Date* | |||
|
30 | * *Minimum Occurrences* | |||
|
31 | * *Minimum Duration* | |||
|
32 | * *Priority* | |||
|
33 | * *Request ID* | |||
|
34 | * *Status* | |||
|
35 | * *Start Date* | |||
|
36 | * *Tag* | |||
|
37 | * *URL Path* | |||
|
38 | * *View Name* | |||
|
39 | ||||
|
40 | Viewing Reports | |||
|
41 | --------------- | |||
|
42 | ||||
|
43 | To open a report, click on the report error message on the reports list page. | |||
|
44 | This will open the full details. From this page you can manage the report, | |||
|
45 | for more information, see the :ref:`manage-reports` page. | |||
|
46 | ||||
|
47 | .. image:: ../images/ae-reports.png | |||
|
48 |
@@ -0,0 +1,13 b'' | |||||
|
1 | .menuselection, .guilabel { | |||
|
2 | font-size: .90em; | |||
|
3 | font-family: "proximanovaregular", "Proxima Nova Regular", "Proxima Nova", sans-serif; | |||
|
4 | font-style: oblique; | |||
|
5 | } | |||
|
6 | ||||
|
7 | .version{ | |||
|
8 | display: none; | |||
|
9 | } | |||
|
10 | ||||
|
11 | .pre{ | |||
|
12 | color:#000 | |||
|
13 | } |
@@ -0,0 +1,82 b'' | |||||
|
1 | PROJECTS = Appenlight-docs | |||
|
2 | ||||
|
3 | BLOG = blog | |||
|
4 | MKDOCS = ../result/bin/mkdocs | |||
|
5 | ||||
|
6 | help: | |||
|
7 | @echo "" | |||
|
8 | @echo "Please use \`make <target>' where <target> is one of" | |||
|
9 | @echo " all build all projects" | |||
|
10 | @echo " bootstrap build tools needed to build projects" | |||
|
11 | @echo " ci-docs Trigger by CI server to build the documentation." | |||
|
12 | @echo " ci-docs-publish Trigger by CI server to publish the" | |||
|
13 | @echo " documentation. Requires CI_TARGET to be set." | |||
|
14 | @echo " bootstrap build tools needed to build projects" | |||
|
15 | @echo " <project> build one project. list of projects you can find below" | |||
|
16 | @echo "" | |||
|
17 | @echo "Current projects:" | |||
|
18 | @for project in $(PROJECTS); do echo " - $$project"; done | |||
|
19 | @echo "" | |||
|
20 | ||||
|
21 | all: bootstrap | |||
|
22 | for item in $(PROJECTS); do \ | |||
|
23 | cd $$item && $(MAKE) html && cd ..; \ | |||
|
24 | mkdir -p www/$$item; \ | |||
|
25 | cp -R $$item/_build/html/* www/$$item/; \ | |||
|
26 | done | |||
|
27 | ||||
|
28 | blog: bootstrap | |||
|
29 | for item in $(BLOG) ; do \ | |||
|
30 | echo $$item ; \ | |||
|
31 | echo "Building blog" ; \ | |||
|
32 | nix-build && cd blog && ../result/bin/mkdocs build --clean && cd .. ; \ | |||
|
33 | echo "blog build" ; \ | |||
|
34 | echo "it's in the blog/site folder. Moving to www folder" ; \ | |||
|
35 | mkdir -p www/$$item; \ | |||
|
36 | cp -R $$item/site/* www/$$item; \ | |||
|
37 | done | |||
|
38 | ||||
|
39 | clean: | |||
|
40 | rm -rf result www | |||
|
41 | rm -f common.pyc | |||
|
42 | for item in $(PROJECTS); do \ | |||
|
43 | cd $$item && $(MAKE) clean && cd ..; \ | |||
|
44 | done | |||
|
45 | ||||
|
46 | bootstrap: | |||
|
47 | nix-build default.nix -o result | |||
|
48 | ||||
|
49 | $(PROJECTS): bootstrap | |||
|
50 | cd $@ && $(MAKE) html | |||
|
51 | ||||
|
52 | ||||
|
53 | # CI Integration targets | |||
|
54 | ||||
|
55 | ci-docs: all | |||
|
56 | ||||
|
57 | ||||
|
58 | ci-docs-publish: | |||
|
59 | $(if $(value CI_TARGET),, $(error CI_TARGET has to be defined)) | |||
|
60 | ||||
|
61 | @echo "Cleaning up $(CI_TARGET)" | |||
|
62 | for item in $(PROJECTS); do \ | |||
|
63 | item_dir=$(CI_TARGET)/$$item; \ | |||
|
64 | if [ -d $$item_dir ]; then \ | |||
|
65 | echo "Removing $$item"; \ | |||
|
66 | rm -fr $$item_dir; \ | |||
|
67 | fi; \ | |||
|
68 | done | |||
|
69 | ||||
|
70 | @echo "Publishing built documentation" | |||
|
71 | for item in $(PROJECTS); do \ | |||
|
72 | item_dir=$(CI_TARGET)/$$item; \ | |||
|
73 | echo "Publishing $$item to $$item_dir"; \ | |||
|
74 | cp -R www/$$item $$item_dir; \ | |||
|
75 | done | |||
|
76 | ||||
|
77 | # @echo "Publishing the blog internally" | |||
|
78 | # for item in $(BLOG); do \ | |||
|
79 | # item_dir=$(CI_TARGET)/$$item; \ | |||
|
80 | # echo "Publishing $$item to $$item_dir"; \ | |||
|
81 | # cp -R www/$$item $$item_dir; \ | |||
|
82 | # done |
@@ -0,0 +1,48 b'' | |||||
|
1 | ||||
|
2 | One place to keep all RhodeCode documentation projects. | |||
|
3 | ||||
|
4 | Code is **automatically** picked up by our CI server and all documentation will | |||
|
5 | be built and published on: | |||
|
6 | ||||
|
7 | https://docs.rhodecode.com/RhodeCode-Appenlight | |||
|
8 | ||||
|
9 | ||||
|
10 | Quickstart | |||
|
11 | ========== | |||
|
12 | ||||
|
13 | Get the code via:: | |||
|
14 | ||||
|
15 | hg clone https://code.rhodecode.com/appenlight-docs | |||
|
16 | cd appenlight-docs | |||
|
17 | ||||
|
18 | Build all:: | |||
|
19 | ||||
|
20 | make all | |||
|
21 | ||||
|
22 | Build a project (eg. Internal-docs):: | |||
|
23 | ||||
|
24 | make Internal-docs | |||
|
25 | ||||
|
26 | or:: | |||
|
27 | ||||
|
28 | make help | |||
|
29 | ||||
|
30 | to find which make options are available. | |||
|
31 | ||||
|
32 | ||||
|
33 | ||||
|
34 | FAQ | |||
|
35 | === | |||
|
36 | ||||
|
37 | 1. In which format I have to write? | |||
|
38 | ||||
|
39 | Learn how to use Sphinx and get comfortable with RestructuredText. | |||
|
40 | ||||
|
41 | http://sphinx-doc.org/contents.html | |||
|
42 | ||||
|
43 | 2. My changes are not visible? | |||
|
44 | ||||
|
45 | Wait 5min to be sure CI server had enough time to pickup your changes. | |||
|
46 | ||||
|
47 | If still not showing, make sure you've added your file to Sphinx's | |||
|
48 | ``toctree`` |
@@ -0,0 +1,1 b'' | |||||
|
1 | 1.0.0 No newline at end of file |
@@ -0,0 +1,134 b'' | |||||
|
1 | { system ? builtins.currentSystem | |||
|
2 | }: | |||
|
3 | ||||
|
4 | let | |||
|
5 | ||||
|
6 | pkgs = import <nixpkgs> { inherit system; }; | |||
|
7 | ||||
|
8 | inherit (pkgs) fetchurl fetchgit; | |||
|
9 | ||||
|
10 | buildPythonPackage = pkgs.python27Packages.buildPythonPackage; | |||
|
11 | python = pkgs.python27Packages.python; | |||
|
12 | ||||
|
13 | Jinja2 = buildPythonPackage rec { | |||
|
14 | name = "Jinja2-2.7.3"; | |||
|
15 | src = fetchurl { | |||
|
16 | url = "http://pypi.python.org/packages/source/J/Jinja2/${name}.tar.gz"; | |||
|
17 | md5 = "b9dffd2f3b43d673802fe857c8445b1a"; | |||
|
18 | }; | |||
|
19 | propagatedBuildInputs = [ MarkupSafe ]; | |||
|
20 | }; | |||
|
21 | ||||
|
22 | MarkupSafe = buildPythonPackage rec { | |||
|
23 | name = "MarkupSafe-0.23"; | |||
|
24 | src = fetchurl { | |||
|
25 | url = "https://pypi.python.org/packages/source/M/MarkupSafe/${name}.tar.gz"; | |||
|
26 | md5 = "f5ab3deee4c37cd6a922fb81e730da6e"; | |||
|
27 | }; | |||
|
28 | }; | |||
|
29 | ||||
|
30 | Pygments = buildPythonPackage rec { | |||
|
31 | name = "Pygments-2.0.2"; | |||
|
32 | src = fetchurl { | |||
|
33 | url = "https://pypi.python.org/packages/source/P/Pygments/${name}.tar.gz"; | |||
|
34 | md5 = "238587a1370d62405edabd0794b3ec4a"; | |||
|
35 | }; | |||
|
36 | }; | |||
|
37 | ||||
|
38 | alabaster = buildPythonPackage rec { | |||
|
39 | name = "alabaster-0.7.3"; | |||
|
40 | src = fetchurl { | |||
|
41 | url = "https://pypi.python.org/packages/source/a/alabaster/${name}.tar.gz"; | |||
|
42 | md5 = "67428d1383fd833f1282fed5deba0898"; | |||
|
43 | }; | |||
|
44 | }; | |||
|
45 | ||||
|
46 | six = buildPythonPackage rec { | |||
|
47 | name = "six-1.9.0"; | |||
|
48 | src = fetchurl { | |||
|
49 | url = "https://pypi.python.org/packages/source/s/six/${name}.tar.gz"; | |||
|
50 | md5 = "476881ef4012262dfc8adc645ee786c4"; | |||
|
51 | }; | |||
|
52 | }; | |||
|
53 | ||||
|
54 | snowballstemmer = buildPythonPackage rec { | |||
|
55 | name = "snowballstemmer-1.2.0"; | |||
|
56 | src = fetchurl { | |||
|
57 | url = "https://pypi.python.org/packages/source/s/snowballstemmer/${name}.tar.gz"; | |||
|
58 | md5 = "51f2ef829db8129dd0f2354f0b209970"; | |||
|
59 | }; | |||
|
60 | }; | |||
|
61 | ||||
|
62 | pytz = buildPythonPackage rec { | |||
|
63 | name = "pytz-2015.2"; | |||
|
64 | src = fetchurl { | |||
|
65 | url = "https://pypi.python.org/packages/source/p/pytz/${name}.tar.gz"; | |||
|
66 | md5 = "08440d994cfbbf13d3343362cc3173f7"; | |||
|
67 | }; | |||
|
68 | }; | |||
|
69 | ||||
|
70 | babel = buildPythonPackage rec { | |||
|
71 | name = "Babel-1.3"; | |||
|
72 | src = fetchurl { | |||
|
73 | url = "https://pypi.python.org/packages/source/B/Babel/${name}.tar.gz"; | |||
|
74 | md5 = "5264ceb02717843cbc9ffce8e6e06bdb"; | |||
|
75 | }; | |||
|
76 | propagatedBuildInputs = [ | |||
|
77 | pytz | |||
|
78 | ]; | |||
|
79 | }; | |||
|
80 | ||||
|
81 | Sphinx = buildPythonPackage (rec { | |||
|
82 | name = "Sphinx-1.3.1"; | |||
|
83 | src = fetchurl { | |||
|
84 | url = "http://pypi.python.org/packages/source/S/Sphinx/${name}.tar.gz"; | |||
|
85 | md5 = "8786a194acf9673464c5455b11fd4332"; | |||
|
86 | }; | |||
|
87 | propagatedBuildInputs = [ | |||
|
88 | docutils | |||
|
89 | Jinja2 | |||
|
90 | Pygments | |||
|
91 | alabaster | |||
|
92 | six | |||
|
93 | snowballstemmer | |||
|
94 | pytz | |||
|
95 | babel | |||
|
96 | ||||
|
97 | # TODO: johbo: Had to include it here so that can be imported | |||
|
98 | sphinx_rtd_theme | |||
|
99 | ]; | |||
|
100 | }); | |||
|
101 | ||||
|
102 | docutils = buildPythonPackage rec { | |||
|
103 | name = "docutils-0.12"; | |||
|
104 | src = fetchurl { | |||
|
105 | url = "https://pypi.python.org/packages/source/d/docutils/${name}.tar.gz"; | |||
|
106 | md5 = "4622263b62c5c771c03502afa3157768"; | |||
|
107 | }; | |||
|
108 | }; | |||
|
109 | ||||
|
110 | sphinx_rtd_theme = buildPythonPackage rec { | |||
|
111 | name = "sphinx_rtd_theme-0.1.9"; | |||
|
112 | src = fetchurl { | |||
|
113 | url = "https://pypi.python.org/packages/source/s/sphinx_rtd_theme/${name}.tar.gz"; | |||
|
114 | md5 = "86a25c8d47147c872e42dc84cc66f97b"; | |||
|
115 | }; | |||
|
116 | ||||
|
117 | # johbo: Sphinx needs this package and this package needs sphinx, ignore | |||
|
118 | # the requirements file to solve this cycle. | |||
|
119 | postPatch = '' | |||
|
120 | rm requirements.txt | |||
|
121 | touch requirements.txt | |||
|
122 | ''; | |||
|
123 | ||||
|
124 | # TODO: johbo: Tests would require sphinx and this creates recursion issues | |||
|
125 | doCheck = false; | |||
|
126 | }; | |||
|
127 | ||||
|
128 | in python.buildEnv.override { | |||
|
129 | inherit python; | |||
|
130 | extraLibs = [ | |||
|
131 | Sphinx | |||
|
132 | sphinx_rtd_theme | |||
|
133 | ]; | |||
|
134 | } |
General Comments 0
You need to be logged in to leave comments.
Login now