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