##// END OF EJS Templates
docs: updated dev setup
marcink -
r3426:55112630 default
parent child Browse files
Show More
@@ -1,238 +1,243 b''
1 .. _dev-setup:
1 .. _dev-setup:
2
2
3 ===================
3 ===================
4 Development setup
4 Development setup
5 ===================
5 ===================
6
6
7
7
8 RhodeCode Enterprise runs inside a Nix managed environment. This ensures build
8 RhodeCode Enterprise runs inside a Nix managed environment. This ensures build
9 environment dependencies are correctly declared and installed during setup.
9 environment dependencies are correctly declared and installed during setup.
10 It also enables atomic upgrades, rollbacks, and multiple instances of RhodeCode
10 It also enables atomic upgrades, rollbacks, and multiple instances of RhodeCode
11 Enterprise running with isolation.
11 Enterprise running with isolation.
12
12
13 To set up RhodeCode Enterprise inside the Nix environment, use the following steps:
13 To set up RhodeCode Enterprise inside the Nix environment, use the following steps:
14
14
15
15
16
16
17 Setup Nix Package Manager
17 Setup Nix Package Manager
18 -------------------------
18 -------------------------
19
19
20 To install the Nix Package Manager, please run::
20 To install the Nix Package Manager, please run::
21
21
22 $ curl https://nixos.org/nix/install | sh
22 $ curl https://nixos.org/nix/install | sh
23
23
24 or go to https://nixos.org/nix/ and follow the installation instructions.
24 or go to https://nixos.org/nix/ and follow the installation instructions.
25 Once this is correctly set up on your system, you should be able to use the
25 Once this is correctly set up on your system, you should be able to use the
26 following commands:
26 following commands:
27
27
28 * `nix-env`
28 * `nix-env`
29
29
30 * `nix-shell`
30 * `nix-shell`
31
31
32
32
33 .. tip::
33 .. tip::
34
34
35 Update your channels frequently by running ``nix-channel --update``.
35 Update your channels frequently by running ``nix-channel --update``.
36
36
37 .. note::
37 .. note::
38
38
39 To uninstall nix run the following:
39 To uninstall nix run the following:
40
40
41 remove the . "$HOME/.nix-profile/etc/profile.d/nix.sh" line in your ~/.profile or ~/.bash_profile
41 remove the . "$HOME/.nix-profile/etc/profile.d/nix.sh" line in your ~/.profile or ~/.bash_profile
42 rm -rf $HOME/{.nix-channels,.nix-defexpr,.nix-profile,.config/nixpkgs}
42 rm -rf $HOME/{.nix-channels,.nix-defexpr,.nix-profile,.config/nixpkgs}
43 sudo rm -rf /nix
43 sudo rm -rf /nix
44
44
45 Switch nix to the latest STABLE channel
45 Switch nix to the latest STABLE channel
46 ---------------------------------------
46 ---------------------------------------
47
47
48 run::
48 run::
49
49
50 nix-channel --add https://nixos.org/channels/nixos-18.03 nixpkgs
50 nix-channel --add https://nixos.org/channels/nixos-18.03 nixpkgs
51
51
52 Followed by::
52 Followed by::
53
53
54 nix-channel --update
54 nix-channel --update
55 nix-env -i nix-2.0.4
55
56
56
57
57 Install required binaries
58 Install required binaries
58 -------------------------
59 -------------------------
59
60
60 We need some handy tools first.
61 We need some handy tools first.
61
62
62 run::
63 run::
63
64
64 nix-env -i nix-prefetch-hg
65 nix-env -i nix-prefetch-hg
65 nix-env -i nix-prefetch-git
66 nix-env -i nix-prefetch-git
66
67
67
68
68 Speed up JS build by installing PhantomJS
69 Speed up JS build by installing PhantomJS
69 -----------------------------------------
70 -----------------------------------------
70
71
71 PhantomJS will be downloaded each time nix-shell is invoked. To speed this by
72 PhantomJS will be downloaded each time nix-shell is invoked. To speed this by
72 setting already downloaded version do this::
73 setting already downloaded version do this::
73
74
74 nix-env -i phantomjs-2.1.1
75 nix-env -i phantomjs-2.1.1
75
76
76 # and set nix bin path
77 # and set nix bin path
77 export PATH=$PATH:~/.nix-profile/bin
78 export PATH=$PATH:~/.nix-profile/bin
78
79
79
80
80 Clone the required repositories
81 Clone the required repositories
81 -------------------------------
82 -------------------------------
82
83
83 After Nix is set up, clone the RhodeCode Enterprise Community Edition and
84 After Nix is set up, clone the RhodeCode Enterprise Community Edition and
84 RhodeCode VCSServer repositories into the same directory.
85 RhodeCode VCSServer repositories into the same directory.
85 RhodeCode currently is using Mercurial Version Control System, please make sure
86 RhodeCode currently is using Mercurial Version Control System, please make sure
86 you have it installed before continuing.
87 you have it installed before continuing.
87
88
88 To obtain the required sources, use the following commands::
89 To obtain the required sources, use the following commands::
89
90
90 mkdir rhodecode-develop && cd rhodecode-develop
91 mkdir rhodecode-develop && cd rhodecode-develop
91 hg clone https://code.rhodecode.com/rhodecode-enterprise-ce
92 hg clone -u default https://code.rhodecode.com/rhodecode-enterprise-ce
92 hg clone https://code.rhodecode.com/rhodecode-vcsserver
93 hg clone -u default https://code.rhodecode.com/rhodecode-vcsserver
93
94
94 .. note::
95 .. note::
95
96
96 If you cannot clone the repository, please contact us via support@rhodecode.com
97 If you cannot clone the repository, please contact us via support@rhodecode.com
97
98
98
99
99 Install some required libraries
100 Install some required libraries
100 -------------------------------
101 -------------------------------
101
102
102 There are some required drivers and dev libraries that we need to install to
103 There are some required drivers and dev libraries that we need to install to
103 test RhodeCode under different types of databases. For example in Ubuntu we
104 test RhodeCode under different types of databases. For example in Ubuntu we
104 need to install the following.
105 need to install the following.
105
106
106 required libraries::
107 required libraries::
107
108
109 # svn related
108 sudo apt-get install libapr1-dev libaprutil1-dev
110 sudo apt-get install libapr1-dev libaprutil1-dev
109 sudo apt-get install libsvn-dev
111 sudo apt-get install libsvn-dev
112 # libcurl required too
113 sudo apt-get install libcurl4-openssl-dev
114 # mysql/pg server for development, optional
110 sudo apt-get install mysql-server libmysqlclient-dev
115 sudo apt-get install mysql-server libmysqlclient-dev
111 sudo apt-get install postgresql postgresql-contrib libpq-dev
116 sudo apt-get install postgresql postgresql-contrib libpq-dev
112 sudo apt-get install libcurl4-openssl-dev
117
113
118
114
119
115 Enter the Development Shell
120 Enter the Development Shell
116 ---------------------------
121 ---------------------------
117
122
118 The final step is to start the development shells. To do this, run the
123 The final step is to start the development shells. To do this, run the
119 following command from inside the cloned repository::
124 following command from inside the cloned repository::
120
125
121 #first, the vcsserver
126 # first, the vcsserver
122 cd ~/rhodecode-vcsserver
127 cd ~/rhodecode-vcsserver
123 nix-shell
128 nix-shell
124
129
125 # then enterprise sources
130 # then enterprise sources
126 cd ~/rhodecode-enterprise-ce
131 cd ~/rhodecode-enterprise-ce
127 nix-shell
132 nix-shell
128
133
129 .. note::
134 .. note::
130
135
131 On the first run, this will take a while to download and optionally compile
136 On the first run, this will take a while to download and optionally compile
132 a few things. The following runs will be faster. The development shell works
137 a few things. The following runs will be faster. The development shell works
133 fine on both MacOS and Linux platforms.
138 fine on both MacOS and Linux platforms.
134
139
135
140
136 Create config.nix for development
141 Create config.nix for development
137 ---------------------------------
142 ---------------------------------
138
143
139 In order to run proper tests and setup linking across projects, a config.nix
144 In order to run proper tests and setup linking across projects, a config.nix
140 file needs to be setup::
145 file needs to be setup::
141
146
142 # create config
147 # create config
143 mkdir -p ~/.nixpkgs
148 mkdir -p ~/.nixpkgs
144 touch ~/.nixpkgs/config.nix
149 touch ~/.nixpkgs/config.nix
145
150
146 # put the below content into the ~/.nixpkgs/config.nix file
151 # put the below content into the ~/.nixpkgs/config.nix file
147 # adjusts, the path to where you cloned your repositories.
152 # adjusts, the path to where you cloned your repositories.
148
153
149 {
154 {
150 rc = {
155 rc = {
151 sources = {
156 sources = {
152 rhodecode-vcsserver = "/home/dev/rhodecode-vcsserver";
157 rhodecode-vcsserver = "/home/dev/rhodecode-vcsserver";
153 rhodecode-enterprise-ce = "/home/dev/rhodecode-enterprise-ce";
158 rhodecode-enterprise-ce = "/home/dev/rhodecode-enterprise-ce";
154 rhodecode-enterprise-ee = "/home/dev/rhodecode-enterprise-ee";
159 rhodecode-enterprise-ee = "/home/dev/rhodecode-enterprise-ee";
155 };
160 };
156 };
161 };
157 }
162 }
158
163
159
164
160
165
161 Creating a Development Configuration
166 Creating a Development Configuration
162 ------------------------------------
167 ------------------------------------
163
168
164 To create a development environment for RhodeCode Enterprise,
169 To create a development environment for RhodeCode Enterprise,
165 use the following steps:
170 use the following steps:
166
171
167 1. Create a copy of vcsserver config:
172 1. Create a copy of vcsserver config:
168 `cp ~/rhodecode-vcsserver/configs/development.ini ~/rhodecode-vcsserver/configs/dev.ini`
173 `cp ~/rhodecode-vcsserver/configs/development.ini ~/rhodecode-vcsserver/configs/dev.ini`
169 2. Create a copy of rhodocode config:
174 2. Create a copy of rhodocode config:
170 `cp ~/rhodecode-enterprise-ce/configs/development.ini ~/rhodecode-enterprise-ce/configs/dev.ini`
175 `cp ~/rhodecode-enterprise-ce/configs/development.ini ~/rhodecode-enterprise-ce/configs/dev.ini`
171 3. Adjust the configuration settings to your needs if needed.
176 3. Adjust the configuration settings to your needs if needed.
172
177
173 .. note::
178 .. note::
174
179
175 It is recommended to use the name `dev.ini` since it's included in .hgignore file.
180 It is recommended to use the name `dev.ini` since it's included in .hgignore file.
176
181
177
182
178 Setup the Development Database
183 Setup the Development Database
179 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
184 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
180
185
181 To create a development database, use the following example. This is a one
186 To create a development database, use the following example. This is a one
182 time operation executed from the nix-shell of rhodecode-enterprise-ce sources ::
187 time operation executed from the nix-shell of rhodecode-enterprise-ce sources ::
183
188
184 rc-setup-app dev.ini \
189 rc-setup-app dev.ini \
185 --user=admin --password=secret \
190 --user=admin --password=secret \
186 --email=admin@example.com \
191 --email=admin@example.com \
187 --repos=~/my_dev_repos
192 --repos=~/my_dev_repos
188
193
189
194
190 Compile CSS and JavaScript
195 Compile CSS and JavaScript
191 ^^^^^^^^^^^^^^^^^^^^^^^^^^
196 ^^^^^^^^^^^^^^^^^^^^^^^^^^
192
197
193 To use the application's frontend and prepare it for production deployment,
198 To use the application's frontend and prepare it for production deployment,
194 you will need to compile the CSS and JavaScript with Grunt.
199 you will need to compile the CSS and JavaScript with Grunt.
195 This is easily done from within the nix-shell using the following command::
200 This is easily done from within the nix-shell using the following command::
196
201
197 grunt
202 make web-build
198
203
199 When developing new features you will need to recompile following any
204 When developing new features you will need to recompile following any
200 changes made to the CSS or JavaScript files when developing the code::
205 changes made to the CSS or JavaScript files when developing the code::
201
206
202 grunt watch
207 grunt watch
203
208
204 This prepares the development (with comments/whitespace) versions of files.
209 This prepares the development (with comments/whitespace) versions of files.
205
210
206 Start the Development Servers
211 Start the Development Servers
207 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
212 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
208
213
209 From the rhodecode-vcsserver directory, start the development server in another
214 From the rhodecode-vcsserver directory, start the development server in another
210 nix-shell, using the following command::
215 nix-shell, using the following command::
211
216
212 pserve configs/dev.ini
217 pserve configs/dev.ini
213
218
214 In the adjacent nix-shell which you created for your development server, you may
219 In the adjacent nix-shell which you created for your development server, you may
215 now start CE with the following command::
220 now start CE with the following command::
216
221
217
222
218 pserve --reload configs/dev.ini
223 pserve --reload configs/dev.ini
219
224
220 .. note::
225 .. note::
221
226
222 `--reload` flag will automatically reload the server when source file changes.
227 `--reload` flag will automatically reload the server when source file changes.
223
228
224
229
225 Run the Environment Tests
230 Run the Environment Tests
226 ^^^^^^^^^^^^^^^^^^^^^^^^^
231 ^^^^^^^^^^^^^^^^^^^^^^^^^
227
232
228 Please make sure that the tests are passing to verify that your environment is
233 Please make sure that the tests are passing to verify that your environment is
229 set up correctly. RhodeCode uses py.test to run tests.
234 set up correctly. RhodeCode uses py.test to run tests.
230 While your instance is running, start a new nix-shell and simply run
235 While your instance is running, start a new nix-shell and simply run
231 ``make test`` to run the basic test suite.
236 ``make test`` to run the basic test suite.
232
237
233
238
234 Need Help?
239 Need Help?
235 ^^^^^^^^^^
240 ^^^^^^^^^^
236
241
237 Join us on Slack via https://rhodecode.com/join or post questions in our
242 Join us on Slack via https://rhodecode.com/join or post questions in our
238 Community Portal at https://community.rhodecode.com
243 Community Portal at https://community.rhodecode.com
General Comments 0
You need to be logged in to leave comments. Login now