Setup of Development env#

These instructions are meant for developing RhodeCode from source code. To setup a development environment with all needed services for development follow the below actions:

define dev workspace home#

Setup env variable WORKSPACE_HOME to your absolute path where you repositories for dev are stored. e.g

example:

WORKSPACE_HOME=/media/psf/Home/workspace

Set this on bash:

export WORKSPACE_HOME=/media/psf/Home/workspace

get rcstack & docker#

To quickly get and install latest rcstack run this command

# create the rhodecode-docker dir, and cd into it
mkdir -p $WORKSPACE_HOME/rhodecode-docker && cd $WORKSPACE_HOME/rhodecode-docker

# get latest rcstack
curl -L -s -o rcstack https://code.rhodecode.com/rhodecode-enterprise-docker/raw/master/scripts/rcstack/rcstack && chmod +x rcstack

./rcstack init

Previously used ./rcstack init command will setup docker, and bootstrap the env, but we still need to fetch dev-tools

# make sure we got the latest dev-tools installed
curl -L -s -o dev-tools https://code.rhodecode.com/rhodecode-enterprise-docker/raw/master/scripts/dev-tools/dev-tools && chmod +x dev-tools

# Please check available options using --help
./dev-tools --help

Obtain source code#

Please clone the following repositories into the WORKSPACE_HOME directory

For CE development:

hg clone https://code.rhodecode.com/rhodecode-vcsserver
hg clone https://code.rhodecode.com/rhodecode-enterprise-ce
# make a dummy repo without source code
mkdir rhodecode-enterprise-ee

for EE development:

hg clone https://code.rhodecode.com/internal/rhodecode-vcsserver
hg clone https://code.rhodecode.com/internal/rhodecode-enterprise-ce
hg clone https://code.rhodecode.com/internal/rhodecode-enterprise-ee

Finally this is the structure you should get:

ls -la $WORKSPACE_HOME
drwxr-xr-x 1 docker docker       928 Dec 18 23:46 rhodecode-docker
drwxr-xr-x 1 docker docker      1504 Dec 18 23:46 rhodecode-enterprise-ce
drwxr-xr-x 1 docker docker      1280 Dec 18 23:46 rhodecode-enterprise-ee
drwxr-xr-x 1 docker docker       832 Dec 18 23:46 rhodecode-vcsserver

run dev-env#

First start with setting up a dev builds for dev images

# execute from cd $WORKSPACE_HOME/rhodecode-docker
./rcstack cli set-runtime-image beta

To start developing we need few services to run, we can run this using dev-env

# execute from cd $WORKSPACE_HOME/rhodecode-docker
./dev-tools dev-env

Note

There’s an option to run dev version of each of the service, e.g if ssh or svn should be tested it can be run like ./dev-tools ssh ./dev-tools svn

You can check the status of services by running

# execute from cd $WORKSPACE_HOME/rhodecode-docker
./rcstack status

Prepare services in develop mode#

copy the runtime.env as our dev.env:

cp .custom/.runtime.env .custom/.dev.env

go to rhodecode-vcsserver and run

# execute from cd $WORKSPACE_HOME/rhodecode-vcsserver
mkdir -p .dev/
echo "make sh" > .dev/dev-env.sh && chmod +x .dev/dev-env.sh
cp configs/development.ini .dev/dev.ini

go to rhodecode-enterprise-ce and run

# execute from cd $WORKSPACE_HOME/rhodecode-enterprise-ce
mkdir -p .dev/
echo "make sh" > .dev/dev-env.sh && chmod +x .dev/dev-env.sh
cp configs/development.ini .dev/dev.ini

run services (preferably in two separate shells)#

cd $WORKSPACE_HOME/rhodecode-docker

# shell 1
./dev-tools ce
➜ rhodecode-enterprise-ce

# shell 2
./dev-tools vcs
➜ rhodecode-vcsserver

Init DB#

# run from enterprise shell rhodecode-enterprise-ce

/usr/local/bin/rhodecode_bin/bin/rc-setup-app \
/home/rhodecode/rhodecode-enterprise-ce/.dev/dev.ini \
--force-yes \
--skip-existing-db \
--user=admin \
--password=secret4 \
--email=admin@example.com \
--repos=/var/opt/rhodecode_repo_store

Note

–user=admin –password=secret4 used here can be used to log-in to first super-admin account in web UI

Manually Upgrade DB#

/usr/local/bin/rhodecode_bin/bin/rc-upgrade-db \
/home/rhodecode/rhodecode-enterprise-ce/.dev/dev.ini \
--force-yes