Просмотр исходного кода

:wrench: add build vendors on remote host

Jeremy Zheng 1 год назад
Родитель
Сommit
791002bc02

+ 1 - 0
deploy/.gitignore

@@ -1,4 +1,5 @@
 /clients/
+/python/
 /tmp/
 /roles/mint/files/dashboard/
 *.log

+ 0 - 1
deploy/README.md

@@ -23,7 +23,6 @@ peony -i clients/CLUSTER ping.yml
 peony -i clients/CLUSTER ec2.yml
 # setup redis cluster nodes
 peony -i clients/CLUSTER redis.yml -l redis
-# deploy mint: version(git rev-parse --short HEAD)
 peony -i clients/CLUSTER mint.yml --extra-vars "mint_version=xxx"
 ```
 

+ 47 - 44
deploy/mint.yml

@@ -1,51 +1,54 @@
-- name: Build dashboard v4
+- name: Build frontend v4
   hosts: 127.0.0.1
   roles:
     - mint-dashboard-v4-build
-    - mint-frontend-assets-build
 
-- name: Setup pali.syn
-  hosts:
-    - db
-  tasks:
-    - name: Upload pali.stop
-      become: true
-      ansible.builtin.copy:
-        dest: "/usr/share/postgresql/{{ app_postgresql_version }}/tsearch_data/"
-        src: "{{ playbook_dir }}/../dashboard-v4/rpc/tulip/tulip/dictionary/pali.stop"
-        owner: root
-        group: root
-        mode: "0644"
-        creates: "/usr/share/postgresql/{{ app_postgresql_version }}/tsearch_data/pali.stop"
-    - name: Upload pali.syn
-      become: true
-      ansible.builtin.copy:
-        dest: "/usr/share/postgresql/{{ app_postgresql_version }}/tsearch_data/"
-        src: "{{ playbook_dir }}/../dashboard-v4/rpc/tulip/tulip/dictionary/pali.syn"
-        owner: root
-        group: root
-        mode: "0644"
-        creates: "/usr/share/postgresql/{{ app_postgresql_version }}/tsearch_data/pali.syn"
-    - name: Restart postgresql server
-      become: true
-      ansible.builtin.systemd:
-        state: restarted
-        name: postgresql
-
-- name: Setup backend servers
-  hosts:
-    - web
-    - fpm
-    - task
+- name: Build backend v8
+  hosts: fort
   roles:
-    - mint-v2
+    - mint-backend-v8-build
+# - name: Setup pali.syn
+#   hosts:
+#     - db
+#   tasks:
+#     - name: Upload pali.stop
+#       become: true
+#       ansible.builtin.copy:
+#         dest: "/usr/share/postgresql/{{ app_postgresql_version }}/tsearch_data/"
+#         src: "{{ playbook_dir }}/../dashboard-v4/rpc/tulip/tulip/dictionary/pali.stop"
+#         owner: root
+#         group: root
+#         mode: "0644"
+#         creates: "/usr/share/postgresql/{{ app_postgresql_version }}/tsearch_data/pali.stop"
+#     - name: Upload pali.syn
+#       become: true
+#       ansible.builtin.copy:
+#         dest: "/usr/share/postgresql/{{ app_postgresql_version }}/tsearch_data/"
+#         src: "{{ playbook_dir }}/../dashboard-v4/rpc/tulip/tulip/dictionary/pali.syn"
+#         owner: root
+#         group: root
+#         mode: "0644"
+#         creates: "/usr/share/postgresql/{{ app_postgresql_version }}/tsearch_data/pali.syn"
+#     - name: Restart postgresql server
+#       become: true
+#       ansible.builtin.systemd:
+#         state: restarted
+#         name: postgresql
 
-- name: Setup nginx
-  hosts: web
-  roles:
-    - mint-nginx
+# - name: Setup backend servers
+#   hosts:
+#     - web
+#     - fpm
+#     - task
+#   roles:
+#     - mint-v2
 
-- name: Setup workers
-  hosts: tasks
-  roles:
-    - mint-workers
+# - name: Setup nginx
+#   hosts: web
+#   roles:
+#     - mint-nginx
+
+# - name: Setup workers
+#   hosts: tasks
+#   roles:
+#     - mint-workers

+ 25 - 0
deploy/roles/mint-backend-v8-build/tasks/main.yml

@@ -0,0 +1,25 @@
+- 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: Upload dashboard dist
+  ansible.builtin.copy:
+    src: "{{ playbook_dir }}/tmp/mint-{{ mint_version }}/dashboard-v4/dashboard/dist"
+    dest: "{{ ansible_env.HOME }}/build/mint-{{ mint_version }}/dashboard-v4/dashboard"
+    mode: "0755"
+
+- name: Compress repo.xz
+  community.general.archive:
+    path: "{{ ansible_env.HOME }}/build/mint-{{ mint_version }}"
+    dest: "{{ ansible_env.HOME }}/build/mint-{{ mint_version }}.tar.xz"
+    format: xz
+    mode: "0444"
+
+- name: Download repo.xz
+  ansible.builtin.fetch:
+    src: "{{ ansible_env.HOME }}/build/mint-{{ mint_version }}.tar.xz"
+    dest: "{{ playbook_dir }}/tmp/"
+    mode: "0444"

+ 12 - 11
deploy/roles/mint-dashboard-v4-build/tasks/main.yml

@@ -1,28 +1,29 @@
-- name: Git checkout source code
-  ansible.builtin.git:
-    repo: "https://github.com/iapt-platform/mint.git"
-    dest: "{{ playbook_dir }}/tmp/mint"
-    version: "{{ mint_version }}"
+- name: Download source code
+  ansible.builtin.unarchive:
+    src: https://github.com/iapt-platform/mint/archive/{{ mint_version }}.zip
+    dest: "{{ playbook_dir }}/tmp"
+    creates: "{{ playbook_dir }}/tmp/mint-{{ mint_version }}"
+    remote_src: true
 
 - name: Extract dashboard node_modules
   ansible.builtin.unarchive:
     src: dashboard-20241201115354.tar.xz
-    dest: "{{ playbook_dir }}/tmp/mint/dashboard-v4/dashboard"
-    creates: "{{ playbook_dir }}/tmp/mint/dashboard-v4/dashboard/node_modules"
+    dest: "{{ playbook_dir }}/tmp/mint-{{ mint_version }}/dashboard-v4/dashboard"
+    creates: "{{ playbook_dir }}/tmp/mint-{{ mint_version }}/dashboard-v4/dashboard/node_modules"
 
 - name: Build dashboard dist
   ansible.builtin.shell: yarn build
   args:
-    chdir: "{{ playbook_dir }}/tmp/mint/dashboard-v4/dashboard"
-    creates: "{{ playbook_dir }}/tmp/mint/dashboard-v4/dashboard/dist-{{ mint_version }}"
+    chdir: "{{ playbook_dir }}/tmp/mint-{{ mint_version }}/dashboard-v4/dashboard"
+    creates: "{{ playbook_dir }}/tmp/mint-{{ mint_version }}/dashboard-v4/dashboard/dist"
   environment:
-    BUILD_PATH: "dist-{{ mint_version }}"
+    BUILD_PATH: "dist"
     NODE_OPTIONS: "--max_old_space_size=4096"
     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.20250215"
+    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 }}"

+ 0 - 15
deploy/roles/mint-frontend-assets-build/tasks/main.yml

@@ -1,15 +0,0 @@
-- name: Install nodejs packages for v1
-  ansible.builtin.command:
-    argv:
-      - /usr/bin/yarn
-      - install
-  args:
-    chdir: "{{ playbook_dir }}/tmp/mint/api-v8/public"
-
-- name: Install nodejs packages for v2
-  ansible.builtin.command:
-    argv:
-      - /usr/bin/yarn
-      - install
-  args:
-    chdir: "{{ playbook_dir }}/tmp/mint/api-v8"

+ 1 - 1
docker/mint/build.sh

@@ -10,7 +10,7 @@ fi
 
 export VERSION=$(date "+%4Y%m%d%H%M%S")
 export CODE="mint-php$1-$(uname -m)"
-export TAR="$CODE-$(uname -m)-$VERSION"
+export TAR="$CODE-$VERSION"
 
 podman pull ubuntu:latest
 podman build --build-arg PHP_VERSION=$1 -t $CODE .

+ 20 - 0
docker/mint/start.sh

@@ -0,0 +1,20 @@
+#!/bin/bash
+
+set -e
+
+export USAGE="USAGE: $0 MINT_IMAGE TASK"
+
+if [ "$#" -ne 2 ]; then
+    echo $USAGE
+    exit 2
+fi
+
+export LAUNCH_MINT_CONTAINER="podman run --rm -it --events-backend=file --hostname=mint --network host -v $PWD:/srv:z $1"
+
+if [ "$2" == "shell" ]; then
+    $LAUNCH_MINT_CONTAINER /bin/bash
+else
+    $LAUNCH_MINT_CONTAINER /srv/scripts/launch.sh $1
+fi
+
+exit 0

+ 0 - 13
scripts/.env.dashboard-v4

@@ -1,13 +0,0 @@
-export NODE_OPTIONS: "--max_old_space_size=4096"
-export PUBLIC_URL: "{{ app_dashboard_base_path }}"
-export REACT_APP_DEFAULT_LOCALE: "zh-Hans"
-export REACT_APP_LANGUAGES: "en-US,zh-Hans,zh-Hant"
-export REACT_APP_ENABLE_LOCAL_TOKEN: "true"
-export REACT_APP_TOKEN_KEY: "token.yyyyMMdd"
-export REACT_APP_DOCUMENTS_SERVER: "{{ app_documents_server }}"
-export REACT_APP_RPC_SERVER: "{{ app_grpc_web_server }}"
-export REACT_APP_ASSETS_SERVER: "{{ app_assets_server }}"
-export REACT_APP_API_SERVER: "https://{{ app_domain }}"
-export REACT_APP_ICP_CODE: "{{ app_icp_code }}"
-export REACT_APP_MPS_CODE: "{{ app_mps_code }}"
-export REACT_APP_QUESTIONNAIRE_LINK: "{{ app_questionnaire_link }}"

+ 0 - 73
scripts/build.sh

@@ -1,73 +0,0 @@
-#!/bin/bash
-
-set -e
-
-export WORKSPACE=$PWD
-export PACKAGE_NAME="mint-$1"
-
-function build_dashboard_v4() {
-    local react_node_modules="dashboard-$1.tar.xz"
-    if [ ! -f $WORKSPACE/downloads/$react_node_modules ]; then
-        echo "couldn't find $react_node_modules_tar"
-        exit 1
-    fi
-
-    cd $WORKSPACE/$PACKAGE_NAME/dashboard-v4/dashboard/
-    echo "uncompress node_modules for dashboard-v4"
-    tar xf $WORKSPACE/downloads/$react_node_modules
-    yarn build
-
-    cp -r build $WORKSPACE/$PACKAGE_NAME-dist/dashboard
-}
-
-# -----------------------------------------------------------------------------
-if [ "$#" -ne 2 ]; then
-    echo "USAGE: $0 FULL_GIT_COMMIT_ID ENV_ID"
-    exit 1
-fi
-
-if [ ! -f $WORKSPACE/downloads/$1.zip ]; then
-    echo "download $1.zip from github"
-    mkdir -p $WORKSPACE/downloads
-    wget -q -P $WORKSPACE/downloads https://github.com/iapt-platform/mint/archive/$1.zip
-fi
-
-if [ ! -f $WORKSPACE/$2.env ]; then
-    echo "couldn't find config file $2.env"
-    exit 1
-fi
-
-source $WORKSPACE/$2.env
-
-# -----------------------------------------------------------------------------
-
-if [ -d $WORKSPACE/$PACKAGE_NAME ]; then
-    echo "remove $PACKAGE_NAME folder"
-    rm -r $WORKSPACE/$PACKAGE_NAME
-fi
-echo "uncompress $1.zip"
-unzip -d $WORKSPACE -q $WORKSPACE/downloads/$1.zip
-
-# -----------------------------------------------------------------------------
-
-if [ -d $WORKSPACE/$PACKAGE_NAME-dist ]; then
-    rm -r $WORKSPACE/$PACKAGE_NAME-dist
-fi
-
-mkdir -p $WORKSPACE/$PACKAGE_NAME-dist
-
-build_dashboard_v4 "20241106153131"
-
-cd $WORKSPACE
-cp -r $PACKAGE_NAME/api-v8 $PACKAGE_NAME-dist/htdocs
-
-if [ -f $PACKAGE_NAME.tar.xz ]; then
-    rm $PACKAGE_NAME.tar.xz
-fi
-XZ_OPT=-e9 tar -C $PACKAGE_NAME-dist -jcf $PACKAGE_NAME.tar.xz dashboard htdocs
-md5sum $PACKAGE_NAME.tar.xz >$PACKAGE_NAME.md5
-
-# -----------------------------------------------------------------------------
-
-echo "done($PACKAGE_NAME.tar.xz)."
-exit 0

+ 17 - 11
scripts/launch.sh

@@ -2,22 +2,28 @@
 
 set -e
 
-export PHP_VERSION="8.1"
-export CODE="mint-php${PHP_VERSION}"
+export USAGE="USAGE: $0 setup"
 
-export USAGE="USAGE: $0 MINT_VERSION TASK"
-
-if [ "$#" -ne 2 ]; then
+if [ "$#" -ne 1 ]; then
     echo $USAGE
-    exit 2
+    exit 1
 fi
 
-if [ "$2" == "fpm" || "$2" == "worker" ]; then
-    podman run --rm -it --events-backend=file --hostname=mint --network host -v $PWD:/srv:z $CODE /srv/launch.sh $2
+export WORK_DIR="/srv"
+
+if [ "$1" == "fpm" ]; then
+    echo "start fpm worker"
+    # TODO
 elif [ "$1" == "setup" ]; then
-    cd /srv/www/mint-
-elif [ "$1" == "shell" ]; then
-    podman run --rm -it --events-backend=file --hostname=mint --network host -v $PWD:/srv:z $CODE /bin/bash
+    cd $WORK_DIR/api-v8/
+    composer install --optimize-autoloader --no-dev
+    npm install
+    cd $WORK_DIR/api-v8/public/
+    composer install --optimize-autoloader --no-dev
+    npm install
+elif [ "$1" == "db-migrate" ]; then
+    echo "migrate database"
+    # TODO
 else
     echo $USAGE
     exit 1