From 08bc61a53a018717bccad44a48bd6e1b2b9b0beb Mon Sep 17 00:00:00 2001 From: Gavin D'souza Date: Thu, 7 May 2020 15:00:34 +0530 Subject: [PATCH 1/6] fix(playbooks): pre v5.1 compatibility for playbooks folder --- install.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/install.py b/install.py index cb8ecff83..31ee5ca98 100644 --- a/install.py +++ b/install.py @@ -359,7 +359,10 @@ def run_playbook(playbook_name, sudo=False, extra_vars=None): else: cwd = os.path.join(os.path.expanduser('~'), 'bench') - success = subprocess.check_call(args, cwd=os.path.join(cwd, 'bench', 'playbooks'), stdout=log_stream, stderr=sys.stderr) + playbooks_locations = [os.path.join(cwd, 'bench', 'playbooks'), os.path.join(cwd, 'playbooks')] + playbooks_folder = [x for x in playbooks_locations if os.path.exists(x)][0] + + success = subprocess.check_call(args, cwd=playbooks_folder, stdout=log_stream, stderr=sys.stderr) return success From 4d7f2682f2f548a50bee407e4bc20e6be1101b08 Mon Sep 17 00:00:00 2001 From: Revant Nandgaonkar Date: Sun, 10 May 2020 23:54:18 +0530 Subject: [PATCH 2/6] docs: fix readme docker section update to env file location sites is now docker volume --- README.md | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/README.md b/README.md index 9497802c7..0b2d03dad 100755 --- a/README.md +++ b/README.md @@ -58,13 +58,7 @@ To setup a development environment for Docker, follow the [Frappe/ERPNext Docker Copy the `env-example` file to `.env` ```sh -$ cp installation/env-example installation/.env -``` - -Make a directory for handling sites: - -```sh -$ mkdir installation/sites +$ cp env-example .env ``` Optionally, you may also setup an [NGINX Proxy for SSL Certificates](https://github.com/evertramos/docker-compose-letsencrypt-nginx-proxy-companion) with auto-renewal for your Production instance. We recommend this for instances being accessed over the internet. For this to work, the DNS needs to be configured correctly so that [LetsEncrypt](https://letsencrypt.org) can verify the domain. To setup the proxy, run the following commands: From ec1acec788a78f8b6a1e695734a47163541694cd Mon Sep 17 00:00:00 2001 From: Gavin D'souza Date: Mon, 11 May 2020 11:46:53 +0530 Subject: [PATCH 3/6] fix: restart supervisord process after change in conf --- bench/patches/v5/fix_user_permissions.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/bench/patches/v5/fix_user_permissions.py b/bench/patches/v5/fix_user_permissions.py index bdccf53c2..bc0d4e938 100644 --- a/bench/patches/v5/fix_user_permissions.py +++ b/bench/patches/v5/fix_user_permissions.py @@ -5,7 +5,7 @@ # imports - module imports from bench.cli import change_uid_msg -from bench.config.production_setup import get_supervisor_confdir, is_centos7 +from bench.config.production_setup import get_supervisor_confdir, is_centos7, service from bench.config.common_site_config import get_config from bench.utils import exec_cmd, get_bench_name, get_cmd_output @@ -53,7 +53,8 @@ def execute(bench_path): user = get_config('.').get("frappe_user") or getpass.getuser() if is_sudoers_set(): - exec_cmd("sudo bench setup sudoers {user}".format(user=user)) - if is_production_set(bench_path): exec_cmd("sudo bench setup supervisor --yes --user {user}".format(user=user)) + service("supervisord", "restart") + + exec_cmd("sudo bench setup sudoers {user}".format(user=user)) From c30afb02840d1d0217506ca1ec55583b3ead7f40 Mon Sep 17 00:00:00 2001 From: Gavin D'souza Date: Mon, 11 May 2020 15:59:44 +0530 Subject: [PATCH 4/6] chore(tests): drop PY2 testing for frappe > v12 --- bench/tests/test_base.py | 10 +++++++++- bench/tests/test_init.py | 4 ++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/bench/tests/test_base.py b/bench/tests/test_base.py index b50223983..44dc131dd 100644 --- a/bench/tests/test_base.py +++ b/bench/tests/test_base.py @@ -11,6 +11,14 @@ import bench import bench.utils +# imports - third party imports +from six import PY2 + + +if PY2: + FRAPPE_BRANCH = "version-12" +else: + FRAPPE_BRANCH = "develop" class TestBenchBase(unittest.TestCase): def setUp(self): @@ -76,7 +84,7 @@ def init_bench(self, bench_name, **kwargs): frappe_tmp_path = "/tmp/frappe" if not os.path.exists(frappe_tmp_path): - bench.utils.exec_cmd("git clone https://github.com/frappe/frappe --depth 1 --origin upstream {location}".format(location=frappe_tmp_path)) + bench.utils.exec_cmd("git clone https://github.com/frappe/frappe -b {branch} --depth 1 --origin upstream {location}".format(branch=FRAPPE_BRANCH, location=frappe_tmp_path)) kwargs.update(dict( python=sys.executable, diff --git a/bench/tests/test_init.py b/bench/tests/test_init.py index 195f90dcb..5aabea0e5 100755 --- a/bench/tests/test_init.py +++ b/bench/tests/test_init.py @@ -134,11 +134,11 @@ def test_switch_to_branch(self): bench_path = os.path.join(self.benches_path, "test-bench") app_path = os.path.join(bench_path, "apps", "frappe") - bench.utils.exec_cmd("bench switch-to-branch version-12 frappe", cwd=bench_path) + bench.utils.exec_cmd("bench switch-to-branch version-12 frappe --upgrade", cwd=bench_path) app_branch_after_switch = str(git.Repo(path=app_path).active_branch) self.assertEqual("version-12", app_branch_after_switch) - bench.utils.exec_cmd("bench switch-to-branch develop frappe", cwd=bench_path) + bench.utils.exec_cmd("bench switch-to-branch develop frappe --upgrade", cwd=bench_path) app_branch_after_second_switch = str(git.Repo(path=app_path).active_branch) self.assertEqual("develop", app_branch_after_second_switch) From 1928eaa2c5da8b5183f6b9e4990ae866e180a4c2 Mon Sep 17 00:00:00 2001 From: Gavin D'souza Date: Tue, 12 May 2020 10:41:33 +0530 Subject: [PATCH 5/6] fix: return returncode in bench.utils.exec_cmd tests: update broken install-app case, select branch for erpnext --- bench/tests/test_init.py | 9 +++++++-- bench/utils.py | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/bench/tests/test_init.py b/bench/tests/test_init.py index 5aabea0e5..8744a4a84 100755 --- a/bench/tests/test_init.py +++ b/bench/tests/test_init.py @@ -14,6 +14,9 @@ from bench.tests.test_base import TestBenchBase +ERPNEXT_BRANCH = bench.tests.test_base.FRAPPE_BRANCH + + class TestBenchInit(TestBenchBase): def test_semantic_version(self): self.assertEqual( get_bumped_version('11.0.4', 'major'), '12.0.0' ) @@ -109,10 +112,12 @@ def test_install_app(self): # create and install app on site self.new_site(site_name, bench_name) - bench.utils.exec_cmd("bench --site {0} install-app erpnext".format(site_name), cwd=bench_path) + installed_erpnext = not bench.utils.exec_cmd("bench --site {0} install-app erpnext --branch {1}".format(site_name, ERPNEXT_BRANCH), cwd=bench_path) app_installed_on_site = subprocess.check_output(["bench", "--site", site_name, "list-apps"], cwd=bench_path).decode('utf8') - self.assertTrue("erpnext" in app_installed_on_site) + + if installed_erpnext: + self.assertTrue("erpnext" in app_installed_on_site) def test_remove_app(self): diff --git a/bench/utils.py b/bench/utils.py index 7834ceba5..67ff33640 100755 --- a/bench/utils.py +++ b/bench/utils.py @@ -298,7 +298,7 @@ def exec_cmd(cmd, cwd='.'): import shlex print("{0}$ {1}{2}".format(color.silver, cmd, color.nc)) cmd = shlex.split(cmd) - subprocess.call(cmd, cwd=cwd, universal_newlines=True) + return subprocess.call(cmd, cwd=cwd, universal_newlines=True) def which(executable, raise_err = False): From 356dd8efe5b3b936025235cb3cba93364d44ea9f Mon Sep 17 00:00:00 2001 From: Gavin D'souza Date: Tue, 12 May 2020 12:39:58 +0530 Subject: [PATCH 6/6] test: fixed get-app case --- bench/tests/test_init.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/bench/tests/test_init.py b/bench/tests/test_init.py index 8744a4a84..d1dd76629 100755 --- a/bench/tests/test_init.py +++ b/bench/tests/test_init.py @@ -11,10 +11,7 @@ import bench import bench.utils from bench.release import get_bumped_version -from bench.tests.test_base import TestBenchBase - - -ERPNEXT_BRANCH = bench.tests.test_base.FRAPPE_BRANCH +from bench.tests.test_base import TestBenchBase, FRAPPE_BRANCH class TestBenchInit(TestBenchBase): @@ -102,7 +99,7 @@ def test_install_app(self): self.init_bench(bench_name) bench.utils.exec_cmd("bench setup requirements --node", cwd=bench_path) bench.utils.exec_cmd("bench build", cwd=bench_path) - bench.utils.exec_cmd("bench get-app erpnext", cwd=bench_path) + bench.utils.exec_cmd("bench get-app erpnext --branch {0}".format(FRAPPE_BRANCH), cwd=bench_path) self.assertTrue(os.path.exists(os.path.join(bench_path, "apps", "erpnext"))) @@ -112,7 +109,7 @@ def test_install_app(self): # create and install app on site self.new_site(site_name, bench_name) - installed_erpnext = not bench.utils.exec_cmd("bench --site {0} install-app erpnext --branch {1}".format(site_name, ERPNEXT_BRANCH), cwd=bench_path) + installed_erpnext = not bench.utils.exec_cmd("bench --site {0} install-app erpnext".format(site_name), cwd=bench_path) app_installed_on_site = subprocess.check_output(["bench", "--site", site_name, "list-apps"], cwd=bench_path).decode('utf8')