mirror of
https://github.com/ChristianLight/tutor.git
synced 2024-12-13 14:43:03 +00:00
Merge remote-tracking branch 'origin/master' into nightly
This commit is contained in:
commit
7f1162d29b
@ -17,9 +17,11 @@ Every user-facing change should have an entry in this changelog. Please respect
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
## Unreleased
|
## Unreleased
|
||||||
|
- [Feature] Add default PYTHONBREAKPOINT to openedx/Dockerfile (by @Carlos-Muniz)
|
||||||
|
|
||||||
- [Bugfix] Fix smtp server port in `cms.yml` which was causing email sending failures in the Studio. (by @regisb)
|
- [Bugfix] Fix smtp server port in `cms.yml` which was causing email sending failures in the Studio. (by @regisb)
|
||||||
- [Improvement] Use `git am` instead of `cherry-pick` to simplify patching process.
|
- [Improvement] Use `git am` instead of `cherry-pick` to simplify patching process.
|
||||||
|
- [Improvement] Tutor is now compatible with Docker Compose subcommand.
|
||||||
|
|
||||||
## v14.0.1 (2022-06-13)
|
## v14.0.1 (2022-06-13)
|
||||||
|
|
||||||
|
@ -161,7 +161,7 @@ Tutor makes it easy to create a bind-mount from an existing container. First, co
|
|||||||
|
|
||||||
tutor dev bindmount lms /openedx/venv
|
tutor dev bindmount lms /openedx/venv
|
||||||
|
|
||||||
This command recursively copies the contents of the ``/opendedx/venv`` directory to ``$(tutor config printroot)/volumes/venv``. The code of any Python dependency can then be edited -- for instance, you can then add a ``import ipdb; ipdb.set_trace()`` statement for step-by-step debugging, or implement a custom feature.
|
This command recursively copies the contents of the ``/opendedx/venv`` directory to ``$(tutor config printroot)/volumes/venv``. The code of any Python dependency can then be edited -- for instance, you can then add a ``breakpoint()`` statement for step-by-step debugging, or implement a custom feature.
|
||||||
|
|
||||||
Then, bind-mount the directory back in the container with the ``--mount`` option::
|
Then, bind-mount the directory back in the container with the ``--mount`` option::
|
||||||
|
|
||||||
@ -238,10 +238,12 @@ Then, you should run the following commands::
|
|||||||
# Rebuild static assets
|
# Rebuild static assets
|
||||||
openedx-assets build --env=dev
|
openedx-assets build --env=dev
|
||||||
|
|
||||||
After running all these commands, your edx-platform repository will be ready for local development. To debug a local edx-platform repository, you can then add a ``import ipdb; ipdb.set_trace()`` breakpoint anywhere in your code and run::
|
After running all these commands, your edx-platform repository will be ready for local development. To debug a local edx-platform repository, you can then add a `python breakpoint <https://docs.python.org/3/library/functions.html#breakpoint>`__ with ``breakpoint()`` anywhere in your code and run::
|
||||||
|
|
||||||
tutor dev start --mount=/path/to/edx-platform lms
|
tutor dev start --mount=/path/to/edx-platform lms
|
||||||
|
|
||||||
|
The default debugger is ``ipdb.set_trace``. ``PYTHONBREAKPOINT`` can be modified by setting an environment variable in the Docker imamge.
|
||||||
|
|
||||||
If LMS isn't running, this will start it in your terminal. If an LMS container is already running background, this command will stop it, recreate it, and attach your terminal to it. Later, to detach your terminal without stopping the container, just hit ``Ctrl+z``.
|
If LMS isn't running, this will start it in your terminal. If an LMS container is already running background, this command will stop it, recreate it, and attach your terminal to it. Later, to detach your terminal without stopping the container, just hit ``Ctrl+z``.
|
||||||
|
|
||||||
|
|
||||||
|
@ -5,6 +5,9 @@ Local deployment
|
|||||||
|
|
||||||
This method is for deploying Open edX locally on a single server, where docker images are orchestrated with `docker-compose <https://docs.docker.com/compose/overview/>`_.
|
This method is for deploying Open edX locally on a single server, where docker images are orchestrated with `docker-compose <https://docs.docker.com/compose/overview/>`_.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
Tutor is compatible with the ``docker compose`` subcommand. However, this support is still in beta and we're not sure it will behave the same as the previous ``docker-compose`` command. So ``docker-compose`` will be preferred, unless you set an environment variable ``TUTOR_USE_COMPOSE_SUBCOMMAND`` to enforce using ``docker compose``.
|
||||||
|
|
||||||
.. _tutor_root:
|
.. _tutor_root:
|
||||||
|
|
||||||
In the following, environment and data files will be generated in a user-specific project folder which will be referred to as the "**project root**". On Linux, the default project root is ``~/.local/share/tutor``. An alternative project root can be defined by passing the ``--root=...`` option to the ``tutor`` command, or defining the ``TUTOR_ROOT=...`` environment variable::
|
In the following, environment and data files will be generated in a user-specific project folder which will be referred to as the "**project root**". On Linux, the default project root is ``~/.local/share/tutor``. An alternative project root can be defined by passing the ``--root=...`` option to the ``tutor`` command, or defining the ``TUTOR_ROOT=...`` environment variable::
|
||||||
|
@ -227,6 +227,9 @@ USER app
|
|||||||
RUN pip install -r requirements/edx/development.txt
|
RUN pip install -r requirements/edx/development.txt
|
||||||
RUN pip install ipdb==0.13.4 ipython==7.27.0
|
RUN pip install ipdb==0.13.4 ipython==7.27.0
|
||||||
|
|
||||||
|
# Add ipdb as default PYTHONBREAKPOINT
|
||||||
|
ENV PYTHONBREAKPOINT=ipdb.set_trace
|
||||||
|
|
||||||
# Recompile static assets: in development mode all static assets are stored in edx-platform,
|
# Recompile static assets: in development mode all static assets are stored in edx-platform,
|
||||||
# and the location of these files is stored in webpack-stats.json. If we don't recompile
|
# and the location of these files is stored in webpack-stats.json. If we don't recompile
|
||||||
# static assets, then production assets will be served instead.
|
# static assets, then production assets will be served instead.
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import base64
|
import base64
|
||||||
|
from functools import lru_cache
|
||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
import random
|
import random
|
||||||
@ -162,12 +163,25 @@ def docker(*command: str) -> int:
|
|||||||
return execute("docker", *command)
|
return execute("docker", *command)
|
||||||
|
|
||||||
|
|
||||||
|
@lru_cache(maxsize=None)
|
||||||
|
def _docker_compose_command() -> Tuple[str, ...]:
|
||||||
|
"""
|
||||||
|
A helper function to determine which program to call when running docker compose
|
||||||
|
"""
|
||||||
|
if os.environ.get("TUTOR_USE_COMPOSE_SUBCOMMAND") is not None:
|
||||||
|
return ("docker", "compose")
|
||||||
|
if shutil.which("docker-compose") is not None:
|
||||||
|
return ("docker-compose",)
|
||||||
|
if shutil.which("docker") is not None:
|
||||||
|
if subprocess.run(["docker", "compose"], capture_output=True).returncode == 0:
|
||||||
|
return ("docker", "compose")
|
||||||
|
raise exceptions.TutorError(
|
||||||
|
"docker-compose is not installed. Please follow instructions from https://docs.docker.com/compose/install/"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def docker_compose(*command: str) -> int:
|
def docker_compose(*command: str) -> int:
|
||||||
if shutil.which("docker-compose") is None:
|
return execute(*_docker_compose_command(), *command)
|
||||||
raise exceptions.TutorError(
|
|
||||||
"docker-compose is not installed. Please follow instructions from https://docs.docker.com/compose/install/"
|
|
||||||
)
|
|
||||||
return execute("docker-compose", *command)
|
|
||||||
|
|
||||||
|
|
||||||
def kubectl(*command: str) -> int:
|
def kubectl(*command: str) -> int:
|
||||||
|
Loading…
Reference in New Issue
Block a user