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