.. _dev-setup: ======================== 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: .. code-block:: bash export WORKSPACE_HOME=/media/psf/Home/workspace get rcstack & docker ++++++++++++++++++++ To quickly get and install latest rcstack run this command .. code-block:: bash # 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 .. code-block:: bash # 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: .. code-block:: bash 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: .. code-block:: bash 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: .. code-block:: bash 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 .. code-block:: bash # 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` .. code-block:: bash # 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 .. code-block:: bash # execute from cd $WORKSPACE_HOME/rhodecode-docker ./rcstack status Prepare services in develop mode ++++++++++++++++++++++++++++++++ copy the runtime.env as our dev.env: .. code-block:: bash cp .custom/.runtime.env .custom/.dev.env go to rhodecode-vcsserver and run .. code-block:: bash # 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 .. code-block:: bash # 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) ++++++++++++++++++++++++++++++++++++++++++++++++ .. code-block:: bash cd $WORKSPACE_HOME/rhodecode-docker # shell 1 ./dev-tools ce ➜ rhodecode-enterprise-ce # shell 2 ./dev-tools vcs ➜ rhodecode-vcsserver Init DB +++++++ .. code-block:: bash # 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 +++++++++++++++++++ .. code-block:: bash /usr/local/bin/rhodecode_bin/bin/rc-upgrade-db \ /home/rhodecode/rhodecode-enterprise-ce/.dev/dev.ini \ --force-yes