Browse Source

feat: 完整实现自动构建和部署

Yin Bin 4 months ago
parent
commit
9fa903d7dc

+ 1 - 1
.vscode/settings.json

@@ -1,7 +1,7 @@
 {
   "java.compile.nullAnalysis.mode": "disabled",
   "java.configuration.updateBuildConfiguration": "automatic",
-  "java.dependency.packagePresentation": "hierarchical",
+  "java.dependency.packagePresentation": "flat",
   "java.format.settings.url": ".vscode/java-formatter.xml",
   "maven.view": "hierarchical",
   "java.jdt.ls.vmargs": "-XX:+UseParallelGC -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -Dsun.zip.disableMemoryMapping=true -Xmx2G -Xms100m -Xlog:disable",

+ 8 - 2
script/ansible/bin/build

@@ -1,3 +1,9 @@
 #!/bin/bash
-
-mvn clean package -DskipTests=true -Pprod
+cd ../../../
+# 执行mvn前 先修改  yudao-server/src/main/resources/application.yaml中的  active: local
+# 改为
+#   active: prod
+sed -i "s/active: local/active: prod/g" ./yudao-server/src/main/resources/application.yaml
+mvn clean package -Dmaven.test.skip=true
+# 打包完毕后,改回去
+sed -i "s/active: prod/active: local/g" ./yudao-server/src/main/resources/application.yaml

+ 0 - 4
script/ansible/bin/frpc

@@ -1,4 +0,0 @@
-#!/bin/bash
-
-# Run the frpc playbook
-ansible-playbook ../frpc_playbook.yml -i ../inventory/hosts "$@"

+ 0 - 4
script/ansible/bin/frpc.bat

@@ -1,4 +0,0 @@
-@echo off
-
-:: Run the frpc playbook
-ansible-playbook ../frpc_playbook.yml -i ../inventory/hosts %*

+ 0 - 11
script/ansible/build_playbook.yml

@@ -1,11 +0,0 @@
----
-- name: Build Java Application Locally
-  hosts: localhost
-  connection: local
-  tasks:
-    - name: Build with Maven
-      ansible.builtin.command:
-        cmd: mvn clean package -DskipTests=true -Pprod
-        chdir: ../../yudao-server/
-      register: mvn_result
-      changed_when: mvn_result.rc == 0

+ 15 - 2
script/ansible/deploy_playbook.yml

@@ -7,8 +7,7 @@
     app_home: /root/mall
     app_user: root
     app_group: root
-    java_opts: "-Xms4096m -Xmx4096m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath={{ app_home }}/logs/heapError"
-    spring_profiles: -Pprod
+    java_opts: "-XX:HeapDumpPath={{ app_home }}/logs/heapError"
     health_check_url: "http://192.168.110.86:48080/actuator/health/"
 
   tasks:
@@ -25,6 +24,20 @@
         - "{{ app_home }}/logs"
         - "{{ app_home }}/config"
 
+    - name: Stop service if running
+      ansible.builtin.systemd:
+        name: yudao
+        state: stopped
+      ignore_errors: true
+
+    - name: Backup existing jar
+      ansible.builtin.copy:
+        src: "{{ app_home }}/{{ app_name }}.jar"
+        dest: "{{ app_home }}/backup/{{ app_name }}-{{ ansible_date_time.iso8601 }}.jar"
+        remote_src: true
+      ignore_errors: true
+      when: ansible_date_time is defined
+
     - name: Copy application jar
       ansible.builtin.copy:
         src: "../../yudao-server/target/{{ app_name }}.jar"

BIN
script/ansible/frp/frpc


+ 0 - 34
script/ansible/frp/frpc.toml

@@ -1,34 +0,0 @@
-serverAddr = "47.96.151.43"
-serverPort = 7000
-
-
-
-[[proxies]]
-name = "tcp-redis"
-type = "tcp"
-localIP = "127.0.0.1"
-localPort = 6379
-remotePort = 6379
-
-[[proxies]]
-name = "http80"
-type = "tcp"
-localIP = "127.0.0.1"
-localPort = 80
-remotePort = 80
-
-[[proxies]]
-name = "test_htts2http"
-type = "https"
-customDomains = ["xiaodingliu.niusenyun.com","xiaodingbackend.niusenyun.com","saasjing.niusenyun.com","massagejing.niusenyun.com","saasyin.niusenyun.com","mallyin.niusenyun.com","saas.niusenyun.com","saast.niusenyun.com","mall.niusenyun.com","mallt.niusenyun.com","massaget.niusenyun.com","massage.niusenyun.com","xdyin.niusenyun.com","xdjhyuser.niusenyun.com","xdt.niusenyun.com"]
-
-
-[proxies.plugin]
-type = "https2http"
-localAddr = "127.0.0.1:80"
-
-# HTTPS 证书相关的配置
-crtPath = "/root/frp/cert.pem"
-keyPath = "/root/frp/key.pem"
-#hostHeaderRewrite = "127.0.0.1"
-requestHeaders.set.x-from-where = "frp"

+ 0 - 61
script/ansible/frpc_playbook.yml

@@ -1,61 +0,0 @@
----
-- name: Setup and manage frpc
-  hosts: all
-  become: true
-  tasks:
-    - name: Create mall directory if not exists
-      file:
-        path: /root/mall
-        state: directory
-        mode: '0755'
-
-    - name: Create frp directory if not exists
-      file:
-        path: /root/frp
-        state: directory
-        mode: '0755'
-
-    - name: Copy frp directory
-      ansible.builtin.copy:
-        src: frp
-        dest: /root
-        mode: '0644'
-        force: true
-
-    - name: Copy frpc binary to /usr/local/bin
-      copy:
-        src: "../../script/ansible/frp/frpc"
-        dest: "/usr/local/bin/frpc"
-        mode: '0755'
-
-    - name: Create systemd service file
-      copy:
-        dest: /etc/systemd/system/frpc.service
-        content: |
-          [Unit]
-          Description=frpc service
-          After=network.target
-
-          [Service]
-          Type=simple
-          User=root
-          ExecStart=/usr/local/bin/frpc -c /root/frp/frpc.toml
-          Restart=always
-          RestartSec=5
-
-          [Install]
-          WantedBy=multi-user.target
-        mode: '0644'
-
-    - name: Start and enable frpc service
-      systemd:
-        name: frpc
-        state: restarted
-        enabled: true
-        daemon_reload: true
-
-    - name: Check frpc service status
-      command: systemctl status frpc
-      register: frpc_status
-      changed_when: false
-      ignore_errors: true

+ 0 - 1
script/ansible/templates/yudao.service.j2

@@ -7,7 +7,6 @@ Type=simple
 User={{ app_user }}
 Group={{ app_group }}
 Environment="JAVA_HOME=/usr/local/lib/sdk/java/v-21.0.2+13/java-21.0.2+13"
-Environment="SPRING_PROFILES_ACTIVE={{ spring_profiles }}"
 WorkingDirectory={{ app_home }}
 ExecStart=/usr/local/lib/sdk/java/v-21.0.2+13/java-21.0.2+13/bin/java {{ java_opts }} -jar {{ app_home }}/{{ app_name }}.jar
 SuccessExitStatus=143

+ 0 - 14
script/ansible/test_playbook.yml

@@ -1,14 +0,0 @@
----
-- name: Test playbook
-  hosts: webservers
-  tasks:
-    - name: Test connection
-      ansible.builtin.ping:
-        data: "pong"
-    - name: Execute a command
-      ansible.builtin.command: echo "Hello, Ansible!"
-      changed_when: false
-    - name: Install a package
-      ansible.builtin.apt:
-        name: wget
-        state: present

+ 5 - 5
yudao-server/src/main/resources/application-prod.yaml

@@ -44,7 +44,7 @@ spring:
       primary: master
       datasource:
         master:
-          url: jdbc:mysql://192.168.110.86:3306/mall_prod?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true # MySQL Connector/J 8.X 连接的示例
+          url: jdbc:mysql://localhost:3306/mall_prod?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true # MySQL Connector/J 8.X 连接的示例
           #          url: jdbc:mysql://127.0.0.1:3306/ruoyi-vue-pro?useSSL=true&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true # MySQL Connector/J 5.X 连接的示例
           #          url: jdbc:postgresql://127.0.0.1:5432/ruoyi-vue-pro # PostgreSQL 连接的示例
           #          url: jdbc:oracle:thin:@127.0.0.1:1521:xe # Oracle 连接的示例
@@ -62,16 +62,16 @@ spring:
           #          password: Yudao@2024 # OpenGauss 连接的示例
         slave: # 模拟从库,可根据自己需要修改
           lazy: true # 开启懒加载,保证启动速度
-          url: jdbc:mysql://192.168.110.86:3306/mall_prod?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&rewriteBatchedStatements=true&nullCatalogMeansCurrent=true
+          url: jdbc:mysql://localhost:3306/mall_prod?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&rewriteBatchedStatements=true&nullCatalogMeansCurrent=true
           username: root
           password: Mall.123456
 
   # Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
   data:
     redis:
-      host: 192.168.110.86 # 地址
-      port: 6379 # 端口
-      database: 0 # 数据库索引
+      host: localhost 
+      port: 6379 
+      database: 0 
       password: Mall.123456 # 密码,建议生产环境开启
 --- #################### 定时任务相关配置 ####################
 

+ 1 - 1
yudao-server/src/main/resources/application.yaml

@@ -248,7 +248,7 @@ yudao:
     front-type: 20 # 前端模版的类型,参见 CodegenFrontTypeEnum 枚举类
     unit-test-enable: false # 是否生成单元测试
   tenant: # 多租户相关配置项
-    enable: true
+    enable: true 
     ignore-urls:
       - /admin-api/system/tenant/get-id-by-name # 基于名字获取租户,不许带租户编号
       - /admin-api/system/tenant/get-by-website # 基于域名获取租户,不许带租户编号