diff --git a/docs/source/dev/step-by-step-example.rst b/docs/source/dev/step-by-step-example.rst new file mode 100644 index 0000000..bb4fc4f --- /dev/null +++ b/docs/source/dev/step-by-step-example.rst @@ -0,0 +1,113 @@ +.. _step-by-step-example: + +RhodeCode Development Infrastructure Setup Example +================================================== + +1. **Configure PATH:** Set the environment variable for the workspace path. + + .. code-block:: bash + + export $WORKSPACE_HOME=/path/to/store + +2. **Run Setup Script:** Execute the `setup_dev.sh` script to install dependencies. Ensure it's executable. + + .. code-block:: bash + + # Fetch script + curl -L -s -o setup_dev.sh https://code.rhodecode.com/rhodecode-enterprise-docker/raw/master/scripts/dev-tools/setup_dev.sh && chmod +x setup_dev.sh + # Run script + ./setup_dev.sh + +3. **RhodeCode Enterprise-CE Setup:** + + - Run the interactive console: + + .. code-block:: bash + + ./dev-tools ce + + - Initialize the database: + + .. code-block:: bash + + /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=secret \ + --email=admin@example.com \ + --repos=/var/opt/rhodecode_repo_store + + - Manually upgrade the database: + + .. code-block:: bash + + /usr/local/bin/rhodecode_bin/bin/rc-upgrade-db \ + /home/rhodecode/rhodecode-enterprise-ce/.dev/dev.ini \ + --force-yes + + - Exit the console: + + .. code-block:: bash + + exit + +4. **Configure Waitress Server:** + + Add the following configuration below GUNICORN APPLICATION SERVER in `vscserver.ini` and `rhodecode.ini` in `docker-rhodecode/config/_shared`: + + .. code-block:: ini + + use = egg:waitress#main + ## Number of worker threads + threads = 3 + ## MAX BODY SIZE 100GB + max_request_body_size = 107374182400 + asyncore_use_poll = true + +5. **Apply Changes:** + + .. code-block:: bash + + cd $WORKSPACE_HOME/rhodecode-vcsserver && cp ../docker-rhodecode/config/_shared/vcsserver.ini .dev/dev.ini + cd $WORKSPACE_HOME/rhodecode-enterprise-ce && cp ../docker-rhodecode/config/_shared/rhodecode.ini .dev/dev.ini + +6. **Remove Database Vars:** + + In `docker-rhodecode/.custom`, remove the following variables from `.dev.env`: `RC_DB_URL` and `RC_SQLALCHEMY_DB1_URL`. + +7. **Update Makefile:** + + Add the following line after `dev-env:` (line 125) in `rhodecode-enterprise-ce/Makefile`: + + .. code-block:: bash + + sudo -u root chown rhodecode:rhodecode /home/rhodecode/.cache/pip/ + +8. **Adjust Permissions:** + + .. code-block:: bash + + chown -R 999:999 $WORKSPACE_HOME/ + +9. **Run RhodeCode Services:** + + Open two terminal windows, navigate to `$WORKSPACE_HOME/docker-rhodecode` in both terminals. + + - In the first terminal, run: + + .. code-block:: bash + + ./dev-tools ce + + - In the second terminal, run: + + .. code-block:: bash + + ./dev-tools vcs + +**COMMANDS:** + +- Run server: `make dev-srv` +- Run tests: `pytest -v` diff --git a/docs/source/index.rst b/docs/source/index.rst index 334e0c4..a9abe15 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -173,6 +173,7 @@ There are two requirements for OS to be able to run whole rcstack. builds/build-new-image.rst builds/building-images.rst dev/dev-setup.rst + dev/step-by-step-example.rst .. toctree:: diff --git a/scripts/dev-tools/setup_dev.sh b/scripts/dev-tools/setup_dev.sh new file mode 100644 index 0000000..052ec14 --- /dev/null +++ b/scripts/dev-tools/setup_dev.sh @@ -0,0 +1,52 @@ +#!/bin/bash + +# Navigate into directory that you already defined +cd $WORKSPACE_HOME + +mkdir docker-rhodecode && cd docker-rhodecode + +# To quickly get and install rcstack run this command +curl -L -s -o rcstack https://dls.rhodecode.com/get-rcstack && chmod +x rcstack +./rcstack init + +# Init command will setup docker, and dev-tools. Please check available options using +curl -L -s -o dev-tools https://code.rhodecode.com/rhodecode-enterprise-docker/raw/master/scripts/dev-tools/dev-tools && chmod +x dev-tools +./dev-tools --help + +# Navigate back to the parent directory +cd .. + +# Clone repositories +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 + +cd $WORKSPACE_HOME/docker-rhodecode + +# First start with setting up a dev builds for dev images +./rcstack cli set-runtime-image beta + +cd $WORKSPACE_HOME/docker-rhodecode + +# To start developing we need few services to run, we can run this using `dev-env` +./dev-tools dev-env + +cd $WORKSPACE_HOME/docker-rhodecode + +# You can check the status of services by running +./rcstack status + +# Copy the runtime.env as our dev.env: +cp .custom/.runtime.env .custom/.dev.env + +cd $WORKSPACE_HOME/rhodecode-vcsserver +mkdir -p .dev/ +echo "make sh" > .dev/dev-env.sh && chmod +x .dev/dev-env.sh + +cd $WORKSPACE_HOME/rhodecode-enterprise-ce +mkdir -p .dev/ +echo "make sh" > .dev/dev-env.sh && chmod +x .dev/dev-env.sh + +cd $WORKSPACE_HOME/rhodecode-vcsserver && cp ../docker-rhodecode/config/_shared/vcsserver.ini .dev/dev.ini + +cd $WORKSPACE_HOME/rhodecode-enterprise-ce && cp ../docker-rhodecode/config/_shared/rhodecode.ini .dev/dev.ini