mirror of
https://github.com/ChristianLight/tutor.git
synced 2024-12-12 14:17:46 +00:00
18ce1f2fe4
This is an important change, where we get remove the previous `--mount` option, and instead opt for persistent bind-mounts. Persistent bind mounts have several advantages: - They make it easier to remember which folders need to be bind-mounted. - Code is *much* less clunky, as we no longer need to generate temporary docker-compose files. - They allow us to bind-mount host directories *at build time* using the buildx `--build-context` option. - The transition from development to production becomes much easier, as images will automatically be built using the host repo. The only drawback is that persistent bind-mounts are slightly less portable: when a config.yml file is moved to a different folder, many things will break if the repo is not checked out in the same path. For instance, this is how to start working on a local fork of edx-platform: tutor config save --append MOUNTS=/path/to/edx-platform And that's all there is to it. No, this fork will be used whenever we run: tutor images build openedx tutor local start tutor dev start This change is made possible by huge improvements in the build time performance. These improvements make it convenient to re-build Docker images often. Related issues: https://github.com/openedx/wg-developer-experience/issues/71 https://github.com/openedx/wg-developer-experience/issues/66 https://github.com/openedx/wg-developer-experience/issues/166
66 lines
2.4 KiB
Python
66 lines
2.4 KiB
Python
from __future__ import annotations
|
|
|
|
import unittest
|
|
|
|
from tutor import bindmount
|
|
|
|
|
|
class BindmountTests(unittest.TestCase):
|
|
def test_parse_explicit(self) -> None:
|
|
self.assertEqual(
|
|
[("lms", "/path/to/edx-platform", "/openedx/edx-platform")],
|
|
bindmount.parse_explicit_mount(
|
|
"lms:/path/to/edx-platform:/openedx/edx-platform"
|
|
),
|
|
)
|
|
self.assertEqual(
|
|
[
|
|
("lms", "/path/to/edx-platform", "/openedx/edx-platform"),
|
|
("cms", "/path/to/edx-platform", "/openedx/edx-platform"),
|
|
],
|
|
bindmount.parse_explicit_mount(
|
|
"lms,cms:/path/to/edx-platform:/openedx/edx-platform"
|
|
),
|
|
)
|
|
self.assertEqual(
|
|
[
|
|
("lms", "/path/to/edx-platform", "/openedx/edx-platform"),
|
|
("cms", "/path/to/edx-platform", "/openedx/edx-platform"),
|
|
],
|
|
bindmount.parse_explicit_mount(
|
|
"lms, cms:/path/to/edx-platform:/openedx/edx-platform"
|
|
),
|
|
)
|
|
self.assertEqual(
|
|
[
|
|
("lms", "/path/to/edx-platform", "/openedx/edx-platform"),
|
|
("lms-worker", "/path/to/edx-platform", "/openedx/edx-platform"),
|
|
],
|
|
bindmount.parse_explicit_mount(
|
|
"lms,lms-worker:/path/to/edx-platform:/openedx/edx-platform"
|
|
),
|
|
)
|
|
self.assertEqual(
|
|
[("lms", "/path/to/edx-platform", "/openedx/edx-platform")],
|
|
bindmount.parse_explicit_mount(
|
|
"lms,:/path/to/edx-platform:/openedx/edx-platform"
|
|
),
|
|
)
|
|
|
|
def test_parse_implicit(self) -> None:
|
|
# Import module to make sure filter is created
|
|
# pylint: disable=import-outside-toplevel,unused-import
|
|
import tutor.commands.compose
|
|
|
|
self.assertEqual(
|
|
[
|
|
("lms", "/path/to/edx-platform", "/openedx/edx-platform"),
|
|
("cms", "/path/to/edx-platform", "/openedx/edx-platform"),
|
|
("lms-worker", "/path/to/edx-platform", "/openedx/edx-platform"),
|
|
("cms-worker", "/path/to/edx-platform", "/openedx/edx-platform"),
|
|
("lms-job", "/path/to/edx-platform", "/openedx/edx-platform"),
|
|
("cms-job", "/path/to/edx-platform", "/openedx/edx-platform"),
|
|
],
|
|
bindmount.parse_implicit_mount("/path/to/edx-platform"),
|
|
)
|