浏览代码

:wrench: building nodejs on local

China Kassapa 8 月之前
父节点
当前提交
15b6ec8a9a

+ 2 - 0
deploy/group_vars/all.yml

@@ -14,3 +14,5 @@ app_php_version: "8.1"
 app_php_memory_limit: "128M"
 app_container_prefix: "mint"
 app_consumer_loop_limit_ai_translate: 16
+
+app_docker_image_name: "magnolia"

+ 30 - 2
deploy/mint.yml

@@ -1,3 +1,18 @@
+- name: Setup local build folder
+  hosts: localhost
+  tasks:
+    - name: Git checkout repo
+      ansible.builtin.git:
+        repo: "https://github.com/iapt-platform/mint.git"
+        dest: "{{ playbook_dir }}/tmp/mint"
+        version: "{{ mint_version }}"
+
+- name: Build on local
+  hosts: localhost
+  roles:
+    - mint-dashboard-v4-build
+    - mint-openai-proxy-build
+
 - name: Setup deploy folder
   hosts: all:!localhost
   tasks:
@@ -9,7 +24,19 @@
         owner: "{{ ansible_user }}"
         mode: "0755"
 
-- name: Build mint package
+- name: Upload local build dist folders
+  hosts: building
+  tasks:
+    - name: Upload dashboard-v4 dist
+      ansible.posix.synchronize:
+        src: "{{ playbook_dir }}/tmp/mint/dashboard-v4/dashboard/dist-{{ mint_version }}/"
+        dest: "{{ app_deploy_target }}/dashboard-v4/dashboard/dist/"
+    - name: Upload openai-proxy dist
+      ansible.posix.synchronize:
+        src: "{{ playbook_dir }}/tmp/mint/open-ai-server/dist/"
+        dest: "{{ app_deploy_target }}/open-ai-server/dist/"
+
+- name: Build mint package on remote
   hosts: building
   roles:
     - mint-release-build
@@ -25,6 +52,7 @@
   tasks:
     - name: "Upload mint-{{ mint_version }}.tar.xz"
       ansible.builtin.unarchive:
-        src: "{{ ansible_env.HOME }}/tmp/{{ app_domain }}/mint-{{ mint_version }}.tar.xz"
+        src: "{{ ansible_env.HOME }}/build/mint-{{ mint_version }}/tmp/{{ app_domain }}/mint-{{ mint_version }}.tar.xz"
         dest: /srv/{{ app_domain }}
+        creates: "{{ app_deploy_target }}"
       delegate_to: building

+ 1 - 7
deploy/roles/mint-dashboard-v4-build/tasks/main.yml

@@ -1,9 +1,3 @@
-- name: Git checkout repo
-  ansible.builtin.git:
-    repo: "https://github.com/iapt-platform/mint.git"
-    dest: "{{ playbook_dir }}/tmp/mint"
-    version: "{{ mint_version }}"
-
 - name: Extract dashboard-v4 node_modules
   ansible.builtin.unarchive:
     src: dashboard-20241201115354.tar.xz
@@ -17,7 +11,7 @@
     # creates: "{{ playbook_dir }}/tmp/mint/dashboard-v4/dashboard/dist-{{ mint_version }}"
   environment:
     BUILD_PATH: "dist-{{ mint_version }}"
-    NODE_OPTIONS: "--max_old_space_size=4096"
+    NODE_OPTIONS: "--max_old_space_size=5120"
     PUBLIC_URL: "{{ app_dashboard_base_path }}"
     REACT_APP_DEFAULT_LOCALE: "zh-Hans"
     REACT_APP_LANGUAGES: "en-US,zh-Hans,zh-Hant"

+ 57 - 35
deploy/roles/mint-release-build/tasks/main.yml

@@ -1,41 +1,63 @@
+- name: Create {{ ansible_env.HOME }}/build
+  ansible.builtin.file:
+    path: "{{ ansible_env.HOME }}/build"
+    state: directory
+    mode: "0755"
+
 - name: Download source code
   ansible.builtin.unarchive:
     src: https://github.com/iapt-platform/mint/archive/{{ mint_version }}.zip
     dest: "{{ ansible_env.HOME }}/build"
     remote_src: true
+    creates: "{{ ansible_env.HOME }}/build/mint-{{ mint_version }}"
 
-- name: Build dashboard v4
-  ansible.builtin.import_tasks: dashboard-v4.yml
-
-- name: Build openai proxy
-  ansible.builtin.import_tasks: openai-proxy.yml
-
-- name: Setup api-v8
-  ansible.builtin.import_tasks: api-v8.yml
-
-- name: Setup api-v12
-  ansible.builtin.import_tasks: api-v12.yml
-
-- name: Setup ai translate
-  ansible.builtin.import_tasks: ai-translate.yml
-
-- name: Create mint-{{ mint_version }}.tar
-  ansible.builtin.shell: "tar cf mint-{{ mint_version }}.tar -C {{ ansible_env.HOME }}/build/mint-{{ mint_version }} api-v12 api-v8 dashboard-v4/dist ai-translate open-ai-server/dist"
-  args:
-    chdir: "{{ ansible_env.HOME }}/tmp"
-
-- name: Create {{ ansible_env.HOME }}/tmp/{{ app_domain }}
-  ansible.builtin.file:
-    path: "{{ ansible_env.HOME }}/tmp/{{ app_domain }}"
-    state: directory
-    mode: "0755"
-
-- name: Create mint-{{ mint_version }}.tar.xz
-  ansible.builtin.shell: "xz -z -F xz -C sha256 --best -T +1 mint-{{ mint_version }}.tar"
-  args:
-    chdir: "{{ ansible_env.HOME }}/tmp/{{ app_domain }}"
-
-- name: Remove mint-{{ mint_version }}
-  ansible.builtin.file:
-    path: "{{ ansible_env.HOME }}/build/mint-{{ mint_version }}"
-    state: absent
+- name: Extract dashboard-v4 node_modules
+  ansible.builtin.unarchive:
+    src: dashboard-20241201115354.tar.xz
+    dest: "{{ ansible_env.HOME }}/build/mint-{{ mint_version }}/dashboard-v4/dashboard"
+    creates: "{{ ansible_env.HOME }}/build/mint-{{ mint_version }}/dashboard-v4/dashboard/node_modules"
+
+# - name: Build dashboard v4
+#   ansible.builtin.import_tasks: dashboard-v4.yml
+
+# - name: Build openai proxy
+#   ansible.builtin.import_tasks: openai-proxy.yml
+
+# - name: Setup api-v8
+#   ansible.builtin.import_tasks: api-v8.yml
+
+# - name: Setup api-v12
+#   ansible.builtin.import_tasks: api-v12.yml
+
+# - name: Setup ai translate
+#   ansible.builtin.import_tasks: ai-translate.yml
+
+- name: Upload build.sh
+  ansible.builtin.template:
+    src: build.sh.j2
+    dest: "{{ ansible_env.HOME }}/build/mint-{{ mint_version }}/scripts/build.sh"
+    mode: "0555"
+
+- name: Setup mint dependencies and build mint-{{ mint_version }}.tar.xz
+  ansible.builtin.shell:
+    cmd: "docker run --rm -it --hostname=mint --network host -v {{ ansible_env.HOME }}/build/mint-{{ mint_version }}:{{ app_deploy_target }}:z {{ app_docker_image_name }} {{ app_deploy_target }}/scripts/build.sh"
+    creates: "{{ ansible_env.HOME }}/build/mint-{{ mint_version }}/tmp/{{ app_domain }}/mint-{{ mint_version }}.tar.xz"
+# - name: Create {{ ansible_env.HOME }}/tmp/{{ app_domain }}
+#   ansible.builtin.file:
+#     path: "{{ ansible_env.HOME }}/tmp/{{ app_domain }}"
+#     state: directory
+#     mode: "0755"
+
+# - name: Create mint-{{ mint_version }}.tar
+#   ansible.builtin.shell: "tar cf mint-{{ mint_version }}.tar -C {{ ansible_env.HOME }}/build/mint-{{ mint_version }} api-v12 api-v8 dashboard-v4/dashboard/dist ai-translate open-ai-server/dist"
+#   args:
+#     chdir: "{{ ansible_env.HOME }}/tmp/{{ app_domain }}"
+
+# - name: Create mint-{{ mint_version }}.tar.xz
+#   ansible.builtin.shell: "xz -z -F xz -C sha256 --best -T +1 mint-{{ mint_version }}.tar"
+#   args:
+#     chdir: "{{ ansible_env.HOME }}/tmp/{{ app_domain }}"
+# - name: Remove mint-{{ mint_version }}
+#   ansible.builtin.file:
+#     path: "{{ ansible_env.HOME }}/build/mint-{{ mint_version }}"
+#     state: absent

+ 60 - 0
deploy/roles/mint-release-build/templates/build.sh.j2

@@ -0,0 +1,60 @@
+#!/bin/bash
+
+set -e
+
+. $HOME/.sdkman/bin/sdkman-init.sh
+. $HOME/.nvm/nvm.sh
+
+# cd {{ app_deploy_target }}/dashboard-v4/dashboard/
+# if [ -d dist ]
+# then
+#     rm -f dist
+# fi
+# https://github.com/iapt-platform/mint/blob/5e81587433455cbc4994da49db5b880cf79e3539/dashboard-v4/dashboard/.env.orig#L17
+# NODE_OPTIONS="--max_old_space_size=2048" \
+#     PUBLIC_URL="{{ app_dashboard_base_path }}" \
+#     REACT_APP_DEFAULT_LOCALE="zh-Hans" \
+#     REACT_APP_LANGUAGES="en-US,zh-Hans,zh-Hant" \
+#     REACT_APP_ENABLE_LOCAL_TOKEN="true" \
+#     REACT_APP_TOKEN_KEY="token.20250320" \
+#     REACT_APP_DOCUMENTS_SERVER="{{ app_documents_server }}" \
+#     REACT_APP_RPC_SERVER="{{ app_grpc_web_server }}" \
+#     REACT_APP_ASSETS_SERVER="{{ app_assets_server }}" \
+#     REACT_APP_API_SERVER="https://{{ app_domain }}" \
+#     REACT_APP_ICP_CODE="{{ app_icp_code }}" \
+#     REACT_APP_MPS_CODE="{{ app_mps_code }}" \
+#     REACT_APP_QUESTIONNAIRE_LINK="{{ app_questionnaire_link }}" \
+#     REACT_APP_OPENAI_PROXY="{{ app_openai_proxy_server }}/api/openai" \
+#     npm run build
+
+cd {{ app_deploy_target }}/api-v8/
+npm install
+php8.1 /usr/local/bin/composer install
+cd {{ app_deploy_target }}/api-v8/public
+npm install
+php8.1 /usr/local/bin/composer install
+
+cd {{ app_deploy_target }}/api-v12/
+npm install
+php8.4 /usr/local/bin/composer install
+
+# cd {{ app_deploy_target }}/open-ai-server/
+# npm install
+# if [ -d dist ]
+# then
+#     rm -f dist
+# fi
+# npm run build
+
+cd {{ app_deploy_target }}/ai-translate/
+python3 -m venv $PWD/python3
+. $PWD/python3/bin/activate
+python3 -m pip install -e .
+deactivate
+
+mkdir -p {{ app_deploy_target }}/tmp/{{ app_domain }}
+cd {{ app_deploy_target }}/tmp/{{ app_domain }}/
+tar cf mint-{{ mint_version }}.tar -C {{ app_deploy_target }} api-v12 api-v8 dashboard-v4/dashboard/dist ai-translate open-ai-server/dist
+xz -z -F xz -C sha256 --best -T +1 mint-{{ mint_version }}.tar
+
+exit 0

+ 1 - 1
magnolia/docker/start.sh

@@ -2,4 +2,4 @@
 
 export CODE="magnolia"
 
-docker run --rm -it --hostname=palm --network host -v $PWD:/srv/:z $CODE
+docker run --rm -it --hostname=mint --network host -v $PWD:/srv/:z $CODE

+ 2 - 0
magnolia/roles/docker/tasks/kubernetes.yml

@@ -23,6 +23,8 @@
     dest: /usr/local/bin/kubectl
     state: link
 
+# alias kubectl="minikube kubectl --"
+
 - name: Setup Kubectl
   ansible.builtin.shell:
     cmd: kubectl help