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