From f605addb71be7e47977ebca29561f075297bbdfc Mon Sep 17 00:00:00 2001 From: Revant Nandgaonkar Date: Fri, 20 Oct 2023 18:40:10 +0530 Subject: [PATCH] refactor: prepare for v15 (#1243) * chore: resolve merge conflict * ci: changes for version 15 * chore: upgrade python and nodejs * ci: fix v15 build * fix: add redis_socketio for backward compatibility * ci: fix v15 build * ci: fix test endpoint changed to erpnext.templates.pages.search_help.get_help_results_sections --- .github/scripts/get_latest_tags.py | 4 +-- .github/workflows/build_develop.yml | 4 +-- .github/workflows/build_stable.yml | 36 ++++++++++---------- compose.yaml | 8 ++--- devcontainer-example/docker-compose.yml | 3 -- development/apps-example.json | 2 +- development/installer.py | 25 +++++++------- development/vscode-example/launch.json | 12 ------- docker-bake.hcl | 4 +-- docs/development.md | 10 +++--- docs/environment-variables.md | 6 +--- docs/list-of-containers.md | 2 +- docs/migrate-from-multi-image-setup.md | 3 -- docs/setup-options.md | 6 ++-- docs/setup_for_linux_mac.md | 44 +++++-------------------- docs/single-compose-setup.md | 4 +-- example.env | 1 - images/bench/Dockerfile | 27 ++++++--------- images/custom/Containerfile | 8 ++--- images/production/Containerfile | 10 +++--- overrides/compose.multi-bench.yaml | 9 ----- overrides/compose.redis.yaml | 8 ----- pwd.yml | 28 ++-------------- tests/_check_connections.py | 2 +- tests/compose.ci.yaml | 3 -- tests/test_frappe_docker.py | 3 +- 26 files changed, 79 insertions(+), 193 deletions(-) diff --git a/.github/scripts/get_latest_tags.py b/.github/scripts/get_latest_tags.py index b2e083c4..7d168bab 100644 --- a/.github/scripts/get_latest_tags.py +++ b/.github/scripts/get_latest_tags.py @@ -9,7 +9,7 @@ import sys from typing import Literal Repo = Literal["frappe", "erpnext"] -MajorVersion = Literal["12", "13", "14", "develop"] +MajorVersion = Literal["12", "13", "14", "15", "develop"] def get_latest_tag(repo: Repo, version: MajorVersion) -> str: @@ -57,7 +57,7 @@ def main(_args: list[str]) -> int: parser = argparse.ArgumentParser() parser.add_argument("--repo", choices=["frappe", "erpnext"], required=True) parser.add_argument( - "--version", choices=["12", "13", "14", "develop"], required=True + "--version", choices=["12", "13", "14", "15", "develop"], required=True ) args = parser.parse_args(_args) diff --git a/.github/workflows/build_develop.yml b/.github/workflows/build_develop.yml index 97ed9a88..e37c5858 100644 --- a/.github/workflows/build_develop.yml +++ b/.github/workflows/build_develop.yml @@ -26,8 +26,8 @@ jobs: repo: erpnext version: develop push: ${{ github.repository == 'frappe/frappe_docker' && github.event_name != 'pull_request' }} - python_version: 3.11.4 - node_version: 18.16.1 + python_version: 3.11.6 + node_version: 18.18.2 secrets: DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }} diff --git a/.github/workflows/build_stable.yml b/.github/workflows/build_stable.yml index ec0f7b68..a09f70b8 100644 --- a/.github/workflows/build_stable.yml +++ b/.github/workflows/build_stable.yml @@ -30,26 +30,26 @@ on: workflow_dispatch: jobs: - v13: - uses: ./.github/workflows/docker-build-push.yml - with: - repo: erpnext - version: "13" - push: ${{ github.repository == 'frappe/frappe_docker' && github.event_name != 'pull_request' }} - python_version: 3.9.17 - node_version: 14.21.3 - secrets: - DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} - DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }} - v14: uses: ./.github/workflows/docker-build-push.yml with: repo: erpnext version: "14" push: ${{ github.repository == 'frappe/frappe_docker' && github.event_name != 'pull_request' }} - python_version: 3.10.12 - node_version: 16.20.1 + python_version: 3.10.13 + node_version: 16.20.2 + secrets: + DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} + DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }} + + v15: + uses: ./.github/workflows/docker-build-push.yml + with: + repo: erpnext + version: "15" + push: ${{ github.repository == 'frappe/frappe_docker' && github.event_name != 'pull_request' }} + python_version: 3.11.6 + node_version: 18.18.2 secrets: DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }} @@ -58,7 +58,7 @@ jobs: name: Update example.env and pwd.yml runs-on: ubuntu-latest if: ${{ github.repository == 'frappe/frappe_docker' && github.event_name != 'pull_request' }} - needs: v14 + needs: v15 steps: - name: Checkout @@ -70,7 +70,7 @@ jobs: python-version: "3.10" - name: Get latest versions - run: python3 ./.github/scripts/get_latest_tags.py --repo erpnext --version 14 + run: python3 ./.github/scripts/get_latest_tags.py --repo erpnext --version 15 - name: Update run: | @@ -96,7 +96,7 @@ jobs: name: Release Helm runs-on: ubuntu-latest if: ${{ github.repository == 'frappe/frappe_docker' && github.event_name != 'pull_request' }} - needs: v14 + needs: v15 steps: - name: Setup deploy key @@ -113,4 +113,4 @@ jobs: run: | git clone git@github.com:frappe/helm.git && cd helm pip install -r release_wizard/requirements.txt - ./release_wizard/wizard 14 patch --remote origin --ci + ./release_wizard/wizard 15 patch --remote origin --ci diff --git a/compose.yaml b/compose.yaml index 10b1e663..d70590ad 100644 --- a/compose.yaml +++ b/compose.yaml @@ -20,6 +20,7 @@ services: entrypoint: - bash - -c + # add redis_socketio for backward compatibility command: - > ls -1 apps > sites/apps.txt; @@ -27,14 +28,13 @@ services: bench set-config -gp db_port $$DB_PORT; bench set-config -g redis_cache "redis://$$REDIS_CACHE"; bench set-config -g redis_queue "redis://$$REDIS_QUEUE"; - bench set-config -g redis_socketio "redis://$$REDIS_SOCKETIO"; + bench set-config -g redis_socketio "redis://$$REDIS_QUEUE"; bench set-config -gp socketio_port $$SOCKETIO_PORT; environment: DB_HOST: ${DB_HOST} DB_PORT: ${DB_PORT} REDIS_CACHE: ${REDIS_CACHE} REDIS_QUEUE: ${REDIS_QUEUE} - REDIS_SOCKETIO: ${REDIS_SOCKETIO} SOCKETIO_PORT: 9000 depends_on: {} @@ -72,10 +72,6 @@ services: <<: *backend_defaults command: bench worker --queue short - queue-default: - <<: *backend_defaults - command: bench worker --queue default - queue-long: <<: *backend_defaults command: bench worker --queue long diff --git a/devcontainer-example/docker-compose.yml b/devcontainer-example/docker-compose.yml index ea07eb3a..c2b02bc6 100644 --- a/devcontainer-example/docker-compose.yml +++ b/devcontainer-example/docker-compose.yml @@ -26,9 +26,6 @@ services: redis-queue: image: redis:alpine - redis-socketio: - image: redis:alpine - frappe: image: frappe/bench:latest command: sleep infinity diff --git a/development/apps-example.json b/development/apps-example.json index f73d9278..513d3d10 100644 --- a/development/apps-example.json +++ b/development/apps-example.json @@ -1,6 +1,6 @@ [ { "url": "https://github.com/frappe/erpnext.git", - "branch": "version-14" + "branch": "version-15" } ] diff --git a/development/installer.py b/development/installer.py index ad5d52c5..ed0c41ce 100755 --- a/development/installer.py +++ b/development/installer.py @@ -72,8 +72,8 @@ def get_args_parser(): "--frappe-branch", action="store", type=str, - help="frappe repo to use, default: version-14", # noqa: E501 - default="version-14", + help="frappe repo to use, default: version-15", # noqa: E501 + default="version-15", ) parser.add_argument( "-p", @@ -97,6 +97,14 @@ def get_args_parser(): action="store_true", help="verbose output", # noqa: E501 ) + parser.add_argument( + "-a", + "--admin-password", + action="store", + type=str, + help="admin password for site, default: admin", # noqa: E501 + default="admin", + ) return parser @@ -156,17 +164,6 @@ def init_bench_if_not_exist(args): ], cwd=os.getcwd() + "/" + args.bench_name, ) - cprint("Set redis_socketio to redis://redis-socketio:6379", level=3) - subprocess.call( - [ - "bench", - "set-config", - "-g", - "redis_socketio", - "redis://redis-socketio:6379", - ], - cwd=os.getcwd() + "/" + args.bench_name, - ) cprint("Set developer_mode", level=3) subprocess.call( ["bench", "set-config", "-gp", "developer_mode", "1"], @@ -182,7 +179,7 @@ def create_site_in_bench(args): "new-site", "--no-mariadb-socket", "--mariadb-root-password=123", - "--admin-password=admin", + f"--admin-password={args.admin_password}", ] apps = os.listdir(f"{os.getcwd()}/{args.bench_name}/apps") apps.remove("frappe") diff --git a/development/vscode-example/launch.json b/development/vscode-example/launch.json index 68fa9309..e3100c7a 100644 --- a/development/vscode-example/launch.json +++ b/development/vscode-example/launch.json @@ -23,18 +23,6 @@ "DEV_SERVER": "1" } }, - { - "name": "Bench Default Worker", - "type": "python", - "request": "launch", - "program": "${workspaceFolder}/frappe-bench/apps/frappe/frappe/utils/bench_helper.py", - "args": ["frappe", "worker", "--queue", "default"], - "pythonPath": "${workspaceFolder}/frappe-bench/env/bin/python", - "cwd": "${workspaceFolder}/frappe-bench/sites", - "env": { - "DEV_SERVER": "1" - } - }, { "name": "Bench Short Worker", "type": "python", diff --git a/docker-bake.hcl b/docker-bake.hcl index a217c6ea..f2a9fc70 100644 --- a/docker-bake.hcl +++ b/docker-bake.hcl @@ -6,10 +6,10 @@ variable "REGISTRY_USER" { } variable PYTHON_VERSION { - default = "3.11.4" + default = "3.11.6" } variable NODE_VERSION { - default = "18.16.1" + default = "18.18.2" } variable "FRAPPE_VERSION" { diff --git a/docs/development.md b/docs/development.md index 97c07c1e..3919b644 100644 --- a/docs/development.md +++ b/docs/development.md @@ -87,7 +87,7 @@ PYENV_VERSION=3.10.12 bench init --skip-redis-config-generation --frappe-branch cd frappe-bench ``` -To setup frappe framework version 13 bench set `PYENV_VERSION` environment variable to `3.9.9` and use NodeJS version 14, +To setup frappe framework version 13 bench set `PYENV_VERSION` environment variable to `3.9.17` and use NodeJS version 14, ```shell nvm use v14 @@ -103,7 +103,6 @@ We need to tell bench to use the right containers instead of localhost. Run the bench set-config -g db_host mariadb bench set-config -g redis_cache redis://redis-cache:6379 bench set-config -g redis_queue redis://redis-queue:6379 -bench set-config -g redis_socketio redis://redis-socketio:6379 ``` For any reason the above commands fail, set the values in `common_site_config.json` manually. @@ -112,8 +111,7 @@ For any reason the above commands fail, set the values in `common_site_config.js { "db_host": "mariadb", "redis_cache": "redis://redis-cache:6379", - "redis_queue": "redis://redis-queue:6379", - "redis_socketio": "redis://redis-socketio:6379" + "redis_queue": "redis://redis-queue:6379" } ``` @@ -236,7 +234,7 @@ Note: To start bench with debugger refer section for debugging. Most developers work with numerous clients and versions. Moreover, apps may be required to be installed by everyone on the team working for a client. -This is simplified using a script to automate the process of creating a new bench / site and installing the required apps. +This is simplified using a script to automate the process of creating a new bench / site and installing the required apps. `Administrator` password is for created sites is `admin`. Sample `apps-example.json` is used by default, it installs erpnext on current stable release. To install custom apps, copy the `apps-example.json` to custom json file and make changes to list of apps. Pass this file to the `installer.py` script. @@ -269,6 +267,8 @@ options: -n NODE_VERSION, --node-version NODE_VERSION node version, default: Not Set -v, --verbose verbose output + -a ADMIN_PASSWORD, --admin-password ADMIN_PASSWORD + admin password for site, default: admin ``` A new bench and / or site is created for the client with following defaults. diff --git a/docs/environment-variables.md b/docs/environment-variables.md index 15e61818..0101fcbd 100644 --- a/docs/environment-variables.md +++ b/docs/environment-variables.md @@ -39,11 +39,7 @@ Hostname for redis server to store cache. Set only if external service for redis ### `REDIS_QUEUE` -Hostname for redis server to store queue data. Set only if external service for redis is used. - -### `REDIS_SOCKETIO` - -Hostname for redis server to store socketio data. Set only if external service for redis is used. +Hostname for redis server to store queue data and socketio. Set only if external service for redis is used. ### `ERPNEXT_VERSION` diff --git a/docs/list-of-containers.md b/docs/list-of-containers.md index 2d33ff7a..4ccf66ee 100644 --- a/docs/list-of-containers.md +++ b/docs/list-of-containers.md @@ -30,7 +30,7 @@ All services are described in `compose.yaml` - `frontend`. [nginx](https://www.nginx.com) server that serves JS/CSS assets and routes incoming requests. - `proxy`. [Traefik](https://traefik.io/traefik/) proxy. It is here for complicated setups or HTTPS override (with `overrides/compose.https.yaml`). - `websocket`. Node server that runs [Socket.IO](https://socket.io). -- `queue-short`, `queue-default`, `queue-long`. Python servers that run job queues using [rq](https://python-rq.org). +- `queue-short`, `queue-long`. Python servers that run job queues using [rq](https://python-rq.org). - `scheduler`. Python server that runs tasks on schedule using [schedule](https://schedule.readthedocs.io/en/stable/). ## Overrides diff --git a/docs/migrate-from-multi-image-setup.md b/docs/migrate-from-multi-image-setup.md index 002b5901..093b129b 100644 --- a/docs/migrate-from-multi-image-setup.md +++ b/docs/migrate-from-multi-image-setup.md @@ -62,14 +62,12 @@ configurator: bench set-config -gp db_port $$DB_PORT; bench set-config -g redis_cache "redis://$$REDIS_CACHE"; bench set-config -g redis_queue "redis://$$REDIS_QUEUE"; - bench set-config -g redis_socketio "redis://$$REDIS_SOCKETIO"; bench set-config -gp socketio_port $$SOCKETIO_PORT; environment: DB_HOST: db DB_PORT: "3306" REDIS_CACHE: redis-cache:6379 REDIS_QUEUE: redis-queue:6379 - REDIS_SOCKETIO: redis-socketio:6379 SOCKETIO_PORT: "9000" # ... removed for brevity ``` @@ -95,7 +93,6 @@ create-site: wait-for-it -t 120 db:3306; wait-for-it -t 120 redis-cache:6379; wait-for-it -t 120 redis-queue:6379; - wait-for-it -t 120 redis-socketio:6379; export start=`date +%s`; until [[ -n `grep -hs ^ sites/common_site_config.json | jq -r ".db_host // empty"` ]] && \ [[ -n `grep -hs ^ sites/common_site_config.json | jq -r ".redis_cache // empty"` ]] && \ diff --git a/docs/setup-options.md b/docs/setup-options.md index afe92ae7..1d49ceea 100644 --- a/docs/setup-options.md +++ b/docs/setup-options.md @@ -40,8 +40,7 @@ Instead of `docker compose config`, you can directly use `docker compose up` to ### Setup Frappe without proxy and external MariaDB and Redis -In this case make sure you've set `DB_HOST`, `DB_PORT`, `REDIS_CACHE`, `REDIS_QUEUE` and `REDIS_SOCKETIO` -environment variables or the `configurator` will fail. +In this case make sure you've set `DB_HOST`, `DB_PORT`, `REDIS_CACHE` and `REDIS_QUEUE` environment variables or the `configurator` will fail. ```sh # Generate YAML @@ -53,8 +52,7 @@ docker compose --project-name -f ~/gitops/docker-compose.yml up - ### Setup ERPNext with proxy and external MariaDB and Redis -In this case make sure you've set `DB_HOST`, `DB_PORT`, `REDIS_CACHE`, `REDIS_QUEUE` and `REDIS_SOCKETIO` -environment variables or the `configurator` will fail. +In this case make sure you've set `DB_HOST`, `DB_PORT`, `REDIS_CACHE` and `REDIS_QUEUE` environment variables or the `configurator` will fail. ```sh # Generate YAML diff --git a/docs/setup_for_linux_mac.md b/docs/setup_for_linux_mac.md index 4d6f0b51..b8718fb4 100644 --- a/docs/setup_for_linux_mac.md +++ b/docs/setup_for_linux_mac.md @@ -15,7 +15,7 @@ version: "3" services: backend: - image: frappe/erpnext:v14.27.1 + image: frappe/erpnext:v14 platform: linux/amd64 deploy: restart_policy: @@ -25,7 +25,7 @@ services: - logs:/home/frappe/frappe-bench/logs configurator: - image: frappe/erpnext:v14.27.1 + image: frappe/erpnext:v14 platform: linux/amd64 deploy: restart_policy: @@ -40,21 +40,19 @@ services: bench set-config -gp db_port $$DB_PORT; bench set-config -g redis_cache "redis://$$REDIS_CACHE"; bench set-config -g redis_queue "redis://$$REDIS_QUEUE"; - bench set-config -g redis_socketio "redis://$$REDIS_SOCKETIO"; bench set-config -gp socketio_port $$SOCKETIO_PORT; environment: DB_HOST: db DB_PORT: "3306" REDIS_CACHE: redis-cache:6379 REDIS_QUEUE: redis-queue:6379 - REDIS_SOCKETIO: redis-socketio:6379 SOCKETIO_PORT: "9000" volumes: - sites:/home/frappe/frappe-bench/sites - logs:/home/frappe/frappe-bench/logs create-site: - image: frappe/erpnext:v14.27.1 + image: frappe/erpnext:v14 platform: linux/amd64 deploy: restart_policy: @@ -70,7 +68,6 @@ services: wait-for-it -t 120 db:3306; wait-for-it -t 120 redis-cache:6379; wait-for-it -t 120 redis-queue:6379; - wait-for-it -t 120 redis-socketio:6379; export start=`date +%s`; until [[ -n `grep -hs ^ sites/common_site_config.json | jq -r ".db_host // empty"` ]] && \ [[ -n `grep -hs ^ sites/common_site_config.json | jq -r ".redis_cache // empty"` ]] && \ @@ -107,7 +104,7 @@ services: - db-data:/var/lib/mysql frontend: - image: frappe/erpnext:v14.27.1 + image: frappe/erpnext:v14 platform: linux/amd64 deploy: restart_policy: @@ -129,23 +126,8 @@ services: ports: - "8080:8080" - queue-default: - image: frappe/erpnext:v14.27.1 - platform: linux/amd64 - deploy: - restart_policy: - condition: on-failure - command: - - bench - - worker - - --queue - - default - volumes: - - sites:/home/frappe/frappe-bench/sites - - logs:/home/frappe/frappe-bench/logs - queue-long: - image: frappe/erpnext:v14.27.1 + image: frappe/erpnext:v14 platform: linux/amd64 deploy: restart_policy: @@ -160,7 +142,7 @@ services: - logs:/home/frappe/frappe-bench/logs queue-short: - image: frappe/erpnext:v14.27.1 + image: frappe/erpnext:v14 platform: linux/amd64 deploy: restart_policy: @@ -192,17 +174,8 @@ services: volumes: - redis-cache-data:/data - redis-socketio: - image: redis:6.2-alpine - platform: linux/amd64 - deploy: - restart_policy: - condition: on-failure - volumes: - - redis-socketio-data:/data - scheduler: - image: frappe/erpnext:v14.27.1 + image: frappe/erpnext:v14 platform: linux/amd64 deploy: restart_policy: @@ -215,7 +188,7 @@ services: - logs:/home/frappe/frappe-bench/logs websocket: - image: frappe/erpnext:v14.27.1 + image: frappe/erpnext:v14 platform: linux/amd64 deploy: restart_policy: @@ -231,7 +204,6 @@ volumes: db-data: redis-queue-data: redis-cache-data: - redis-socketio-data: sites: logs: ``` diff --git a/docs/single-compose-setup.md b/docs/single-compose-setup.md index 59bf4312..c489d102 100644 --- a/docs/single-compose-setup.md +++ b/docs/single-compose-setup.md @@ -8,7 +8,6 @@ This setup is a very simple single compose file that does everything to start re - backend, serves gunicorn backend - frontend, serves static assets through nginx frontend reverse proxies websocket and gunicorn. -- queue-default, default rq worker. - queue-long, long rq worker. - queue-short, short rq worker. - schedule, event scheduler. @@ -23,8 +22,7 @@ This setup is a very simple single compose file that does everything to start re - db, mariadb, container with frappe specific configuration. - redis-cache, redis for cache data. -- redis-queue, redis for rq data. -- redis-socketio, redis for socketio pubsub. +- redis-queue, redis for rq data and pub/sub. ## Volumes diff --git a/example.env b/example.env index 8d60e901..13c3c290 100644 --- a/example.env +++ b/example.env @@ -11,7 +11,6 @@ DB_PORT= # Only if you use external Redis REDIS_CACHE= REDIS_QUEUE= -REDIS_SOCKETIO= # Only with HTTPS override LETSENCRYPT_EMAIL=mail@example.com diff --git a/images/bench/Dockerfile b/images/bench/Dockerfile index cc5ade6e..291e4256 100644 --- a/images/bench/Dockerfile +++ b/images/bench/Dockerfile @@ -95,21 +95,18 @@ USER frappe WORKDIR /home/frappe # Install Python via pyenv -ENV PYTHON_VERSION_V13=3.9.17 -ENV PYTHON_VERSION_DEVELOP=3.11.4 -ENV PYTHON_VERSION=3.10.12 +ENV PYTHON_VERSION_V14=3.10.13 +ENV PYTHON_VERSION=3.11.6 ENV PYENV_ROOT /home/frappe/.pyenv ENV PATH $PYENV_ROOT/shims:$PYENV_ROOT/bin:$PATH # From https://github.com/pyenv/pyenv#basic-github-checkout RUN git clone --depth 1 https://github.com/pyenv/pyenv.git .pyenv \ - && pyenv install $PYTHON_VERSION_V13 \ - && pyenv install $PYTHON_VERSION_DEVELOP \ + && pyenv install $PYTHON_VERSION_V14 \ && pyenv install $PYTHON_VERSION \ - && PYENV_VERSION=$PYTHON_VERSION_V13 pip install --no-cache-dir virtualenv \ - && PYENV_VERSION=$PYTHON_VERSION_DEVELOP pip install --no-cache-dir virtualenv \ + && PYENV_VERSION=$PYTHON_VERSION_V14 pip install --no-cache-dir virtualenv \ && PYENV_VERSION=$PYTHON_VERSION pip install --no-cache-dir virtualenv \ - && pyenv global $PYTHON_VERSION $PYTHON_VERSION_v13 \ + && pyenv global $PYTHON_VERSION $PYTHON_VERSION_v14 \ && sed -Ei -e '/^([^#]|$)/ {a export PYENV_ROOT="/home/frappe/.pyenv" a export PATH="$PYENV_ROOT/bin:$PATH" a ' -e ':a' -e '$!{n;ba};}' ~/.profile \ && echo 'eval "$(pyenv init --path)"' >>~/.profile \ && echo 'eval "$(pyenv init -)"' >>~/.bashrc @@ -125,19 +122,15 @@ RUN git clone ${GIT_REPO} --depth 1 -b ${GIT_BRANCH} .bench \ && echo "export BENCH_DEVELOPER=1" >>/home/frappe/.bashrc # Install Node via nvm -ENV NODE_VERSION_13=14.21.3 -ENV NODE_VERSION_DEVELOP=18.12.0 -ENV NODE_VERSION=16.20.1 +ENV NODE_VERSION_14=16.20.2 +ENV NODE_VERSION=18.18.2 ENV NVM_DIR /home/frappe/.nvm ENV PATH ${NVM_DIR}/versions/node/v${NODE_VERSION}/bin/:${PATH} -RUN wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash \ +RUN wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash \ && . ${NVM_DIR}/nvm.sh \ - && nvm install ${NODE_VERSION_13} \ - && nvm use v${NODE_VERSION_13} \ - && npm install -g yarn \ - && nvm install ${NODE_VERSION_DEVELOP} \ - && nvm use v${NODE_VERSION_DEVELOP} \ + && nvm install ${NODE_VERSION_14} \ + && nvm use v${NODE_VERSION_14} \ && npm install -g yarn \ && nvm install ${NODE_VERSION} \ && nvm use v${NODE_VERSION} \ diff --git a/images/custom/Containerfile b/images/custom/Containerfile index e9200833..9aeecaa8 100644 --- a/images/custom/Containerfile +++ b/images/custom/Containerfile @@ -1,4 +1,4 @@ -ARG PYTHON_VERSION=3.11.4 +ARG PYTHON_VERSION=3.11.6 ARG DEBIAN_BASE=bookworm FROM python:${PYTHON_VERSION}-slim-${DEBIAN_BASE} AS base @@ -7,7 +7,7 @@ COPY resources/nginx-entrypoint.sh /usr/local/bin/nginx-entrypoint.sh ARG WKHTMLTOPDF_VERSION=0.12.6.1-3 ARG WKHTMLTOPDF_DISTRO=bookworm -ARG NODE_VERSION=18.16.1 +ARG NODE_VERSION=18.18.2 ENV NVM_DIR=/home/frappe/.nvm ENV PATH ${NVM_DIR}/versions/node/v${NODE_VERSION}/bin/:${PATH} @@ -36,7 +36,7 @@ RUN useradd -ms /bin/bash frappe \ jq \ # NodeJS && mkdir -p ${NVM_DIR} \ - && curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.2/install.sh | bash \ + && curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash \ && . ${NVM_DIR}/nvm.sh \ && nvm install ${NODE_VERSION} \ && nvm use v${NODE_VERSION} \ @@ -103,7 +103,7 @@ RUN if [ -n "${APPS_JSON_BASE64}" ]; then \ USER frappe -ARG FRAPPE_BRANCH=version-14 +ARG FRAPPE_BRANCH=version-15 ARG FRAPPE_PATH=https://github.com/frappe/frappe RUN export APP_INSTALL_ARGS="" && \ if [ -n "${APPS_JSON_BASE64}" ]; then \ diff --git a/images/production/Containerfile b/images/production/Containerfile index 2add02a0..ac5d77af 100644 --- a/images/production/Containerfile +++ b/images/production/Containerfile @@ -1,10 +1,10 @@ -ARG PYTHON_VERSION=3.11.4 +ARG PYTHON_VERSION=3.11.6 ARG DEBIAN_BASE=bookworm FROM python:${PYTHON_VERSION}-slim-${DEBIAN_BASE} AS base ARG WKHTMLTOPDF_VERSION=0.12.6.1-3 ARG WKHTMLTOPDF_DISTRO=bookworm -ARG NODE_VERSION=18.16.1 +ARG NODE_VERSION=18.18.2 ENV NVM_DIR=/home/frappe/.nvm ENV PATH ${NVM_DIR}/versions/node/v${NODE_VERSION}/bin/:${PATH} @@ -33,7 +33,7 @@ RUN useradd -ms /bin/bash frappe \ jq \ # NodeJS && mkdir -p ${NVM_DIR} \ - && curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.2/install.sh | bash \ + && curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash \ && . ${NVM_DIR}/nvm.sh \ && nvm install ${NODE_VERSION} \ && nvm use v${NODE_VERSION} \ @@ -95,10 +95,10 @@ RUN apt-get update \ USER frappe -ARG FRAPPE_BRANCH=version-14 +ARG FRAPPE_BRANCH=version-15 ARG FRAPPE_PATH=https://github.com/frappe/frappe ARG ERPNEXT_REPO=https://github.com/frappe/erpnext -ARG ERPNEXT_BRANCH=version-14 +ARG ERPNEXT_BRANCH=version-15 RUN bench init \ --frappe-branch=${FRAPPE_BRANCH} \ --frappe-path=${FRAPPE_PATH} \ diff --git a/overrides/compose.multi-bench.yaml b/overrides/compose.multi-bench.yaml index 0e91a2f8..7e681a18 100644 --- a/overrides/compose.multi-bench.yaml +++ b/overrides/compose.multi-bench.yaml @@ -26,10 +26,6 @@ services: networks: - bench-network - mariadb-network - queue-default: - networks: - - bench-network - - mariadb-network queue-short: networks: - bench-network @@ -48,11 +44,6 @@ services: - bench-network - mariadb-network - redis-socketio: - networks: - - bench-network - - mariadb-network - networks: traefik-public: external: true diff --git a/overrides/compose.redis.yaml b/overrides/compose.redis.yaml index 2be6386d..1c625247 100644 --- a/overrides/compose.redis.yaml +++ b/overrides/compose.redis.yaml @@ -3,11 +3,9 @@ services: environment: REDIS_CACHE: redis-cache:6379 REDIS_QUEUE: redis-queue:6379 - REDIS_SOCKETIO: redis-socketio:6379 depends_on: - redis-cache - redis-queue - - redis-socketio redis-cache: image: redis:6.2-alpine @@ -19,12 +17,6 @@ services: volumes: - redis-queue-data:/data - redis-socketio: - image: redis:6.2-alpine - volumes: - - redis-socketio-data:/data - volumes: redis-cache-data: redis-queue-data: - redis-socketio-data: diff --git a/pwd.yml b/pwd.yml index 6ee21a13..238a3fda 100644 --- a/pwd.yml +++ b/pwd.yml @@ -18,6 +18,7 @@ services: entrypoint: - bash - -c + # add redis_socketio for backward compatibility command: - > ls -1 apps > sites/apps.txt; @@ -25,14 +26,13 @@ services: bench set-config -gp db_port $$DB_PORT; bench set-config -g redis_cache "redis://$$REDIS_CACHE"; bench set-config -g redis_queue "redis://$$REDIS_QUEUE"; - bench set-config -g redis_socketio "redis://$$REDIS_SOCKETIO"; + bench set-config -g redis_socketio "redis://$$REDIS_QUEUE"; bench set-config -gp socketio_port $$SOCKETIO_PORT; environment: DB_HOST: db DB_PORT: "3306" REDIS_CACHE: redis-cache:6379 REDIS_QUEUE: redis-queue:6379 - REDIS_SOCKETIO: redis-socketio:6379 SOCKETIO_PORT: "9000" volumes: - sites:/home/frappe/frappe-bench/sites @@ -54,7 +54,6 @@ services: wait-for-it -t 120 db:3306; wait-for-it -t 120 redis-cache:6379; wait-for-it -t 120 redis-queue:6379; - wait-for-it -t 120 redis-socketio:6379; export start=`date +%s`; until [[ -n `grep -hs ^ sites/common_site_config.json | jq -r ".db_host // empty"` ]] && \ [[ -n `grep -hs ^ sites/common_site_config.json | jq -r ".redis_cache // empty"` ]] && \ @@ -111,20 +110,6 @@ services: ports: - "8080:8080" - queue-default: - image: frappe/erpnext:v14.44.1 - deploy: - restart_policy: - condition: on-failure - command: - - bench - - worker - - --queue - - default - volumes: - - sites:/home/frappe/frappe-bench/sites - - logs:/home/frappe/frappe-bench/logs - queue-long: image: frappe/erpnext:v14.44.1 deploy: @@ -169,14 +154,6 @@ services: volumes: - redis-cache-data:/data - redis-socketio: - image: redis:6.2-alpine - deploy: - restart_policy: - condition: on-failure - volumes: - - redis-socketio-data:/data - scheduler: image: frappe/erpnext:v14.44.1 deploy: @@ -205,6 +182,5 @@ volumes: db-data: redis-queue-data: redis-cache-data: - redis-socketio-data: sites: logs: diff --git a/tests/_check_connections.py b/tests/_check_connections.py index e54d3b95..85ce87fc 100644 --- a/tests/_check_connections.py +++ b/tests/_check_connections.py @@ -31,7 +31,7 @@ def get_redis_url(addr: str) -> Address: def get_addresses(config: dict[str, Any]) -> Iterable[Address]: yield (config["db_host"], config["db_port"]) - for key in ("redis_cache", "redis_queue", "redis_socketio"): + for key in ("redis_cache", "redis_queue"): yield get_redis_url(config[key]) diff --git a/tests/compose.ci.yaml b/tests/compose.ci.yaml index 156c9018..81c952a5 100644 --- a/tests/compose.ci.yaml +++ b/tests/compose.ci.yaml @@ -14,9 +14,6 @@ services: queue-short: image: localhost:5000/frappe/erpnext:${ERPNEXT_VERSION} - queue-default: - image: localhost:5000/frappe/erpnext:${ERPNEXT_VERSION} - queue-long: image: localhost:5000/frappe/erpnext:${ERPNEXT_VERSION} diff --git a/tests/test_frappe_docker.py b/tests/test_frappe_docker.py index e8fcad0d..85e6f1e8 100644 --- a/tests/test_frappe_docker.py +++ b/tests/test_frappe_docker.py @@ -10,7 +10,6 @@ from tests.utils import Compose, check_url_content BACKEND_SERVICES = ( "backend", "queue-short", - "queue-default", "queue-long", "scheduler", ) @@ -127,7 +126,7 @@ class TestErpnext: ("url", "callback"), ( ( - "/api/method/erpnext.templates.pages.product_search.get_product_list", + "/api/method/erpnext.templates.pages.search_help.get_help_results_sections?text=help", api_cb, ), ("/assets/erpnext/js/setup_wizard.js", assets_cb),