后端部署 
环境要求 
- JDK >= 17(根据脚手架配置)
- Oracle >= 11g
- Maven >= 3.5
- Redis >= 3.2
- Lombok 插件
获取脚手架 
- 方式1:请参考如何搭建一个后端脚手架
- 方式2:请点击此处跳转git获取脚手架提示 方式2需要在虚拟桌面中访问 
本地启动 
由于nacos 2.x 新增GRPC端口,虚拟桌面内本地开发时,需要业务方开发人员在本地IntelliJ IDEA的启动项中配置偏移量及申请访问IP权限;
注意 截图为示例,请实际参考 配置偏移量及申请访问IP权限后的信息
1:配置偏移量 -Dnacos.server.grpc.port.offset=2477 -DNACOS_ADDR=10.19.59.232:8848 2:申请访问IP权限
 2:申请访问IP权限 10.19.59.232 端口:11325

配置Maven私服 
我们提供了两种方式来配置Maven私服,建议使用推荐方式。
推荐方式 在IntelliJ IDEA中指定工程根目录下的settings.xml文件,如下图所示:

覆盖安装 使用本地安装的maven覆盖IDEA插件,并将以下内容添加至本地settings.xml文件中的<profiles>标签中
xml
<profile>
    <id>hisense-nexus</id>
    <repositories>
        <!-- release库 -->
        <repository>
            <id>hisense-nexus</id>
            <name>hisense-nexus</name>
            <url>http://nexus.hisense.com/repository/maven-public/</url>
        </repository>
        <!-- snapshot库 -->
        <repository>
            <id>hisense-nexus-snapshot</id>
            <name>hisense-nexus-snapshot</name>
            <url>http://nexus.hisense.com/repository/maven-public-snapshot/</url>
            <layout>default</layout>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
            <releases>
                <enabled>false</enabled>
            </releases>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>hisense-nexus</id>
            <name>hisense-nexus</name>
            <url>http://nexus.hisense.com/repository/maven-public/</url>
        </pluginRepository>
    </pluginRepositories>
    <activation>
        <activeByDefault>true</activeByDefault>
    </activation>
</profile>其他详细配置参考Nexus仓库使用指引及规范或者联系 Pangea 团队。
常见问题:依赖下载失败
使用「海信私服」后,有时依旧下载依赖失败,检查是否使用idea内嵌的Maven,这个内嵌的Maven通常比较新,但不一定稳定,而且往往也会和在命令行使用的Maven不是一个版本。请换成本地环境自带maven,maven版本>=3.0。
配置脚手架 
配置文件介绍 
脚手架的配置文件路径为src/main/resources/,配置文件提供yml和properties两种格式,业务方可根据实际需要在生成脚手架时选择。 盘古团队根据环境、作用等因素提供了6个配置文件,以对应不同的环境,具体配置文件如下:
| 配置文件名 | 作用 | 备注 | 
|---|---|---|
| bootstrap.yml | 在应用程序启动之前加载,配置早期加载的信息。 | nacos、服务暴露端口、服务名等 | 
| application.yml | 在应用程序启动时加载,配置应用程序的默认属性。 | mybatis、链接超时时间、数据库连接池信息等 | 
| application-dev.yml | 当spring.profiles.active=dev时,应用程序启动加载,配置开发环境相关的属性。 | 开发数据库、缓存、日志级别等。 | 
| application-test.yml | 当spring.profiles.active=test时,应用程序启动加载,配置测试环境相关的属性。 | 测试数据库、缓存、日志级别等。 | 
| application-uat.yml | 当spring.profiles.active=uat时,应用程序启动加载,配置预发环境相关的属性。 | 预发数据库、缓存、日志级别等。 | 
| application-prod.yml | 当spring.profiles.active=prod时,应用程序启动加载,配置生产环境相关的属性。 | 生产数据库、缓存、日志级别等。 | 
当spring.profiles.active配置时,以spring.profiles.active=dev为例,配置文件加载顺序为: bootstrap.yml > application-dev.yml > application.yml
提示 配置文件的个数及作用,业务方可根据实际情况自行创建配置。
脚手架提供的配置文件中,常用配置均使用占位符表达式(${环境变量:默认值})。这种表达式允许在配置文件中设置一个默认值,当环境变量未设置时, 使用默认值,占位符表达式常用于信云+部署时的环境变量中使用。
必要修改项介绍 
初始化后的脚手架配置文件中虽然默认了配置,做到了生成即启动的原则,但有些默认配置并不能满足业务方的实际需求,需要业务方在业务编码之前进行必要修改。以下列举业务方在脚手架初始化后的常用修改项:
1. 注册中心配置 
盘古采用nacos注册中心,相关配置定义在bootstrap.yml中配置,相关默认配置如下:
yaml
spring:
  cloud:
    nacos:
      #nacos注册中心地址,不同环境配置不同的nacos注册中心地址,环境变量key的定义为:NACOS_ADDR ,可选项如下:
      # nacos-server-pangea-pangeav3-uat.clouddev.hisense.com 为生产环境的nacos注册地址
      # nacos-server-offline.clouddev.hisense.com 为开发环境、测试环境、预发环境的nacos注册地址
      server-addr: http://${NACOS_ADDR:nacos-server-offline.clouddev.hisense.com}
      discovery:
        server-addr: ${spring.cloud.nacos.server-addr}
        #nacos注册中心的命名空间,非必要情况无需修改
        namespace: ${NAME_SPACE:pangea}
        #nacos注册中心的分组,dev表示开发,test表示测试,uat表示预发,prd表示生产,在部署时需要注意修改
        group: ${NACOS_GROUP:dev}
      config:
        server-addr: ${spring.cloud.nacos.server-addr}
        file-extension: yaml
        #nacos配置中心的命名空间,非必要情况无需修改
        namespace: ${NAME_SPACE:pangea}不同环境需要配置不同的nacos注册中心,各环境的nacos注册中心地址需在信云+部署时环境变量中定义,以替换默认配置。nacos注册中心地址相对应的环境变量key定义为:NACOS_ADDR, 配置文件的默认配置nacos-server-pangea-pangeav3-uat.clouddev.hisense.com 为本地启动、开发环境、测试环境使用,不可用于其他环境。其他环境的配置请联系Pangea 团队获取。
2. 数据库连接配置 
数据库的配置根据脚手架生成过程中选择的数据库组件来确定的,默认数据库为oracle,配置在application-*.yml的特定环境配置文件中,以oracle数据为例,相关配置如下:
yaml
spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driverClassName: oracle.jdbc.OracleDriver
    url: jdbc:oracle:thin:@${ORACLE_HOST:1.2.3.4}:1521:${ORACLE_PID:test}
    username: ${ORACLE_NAME:username}
    password: ${ORACLE_PASSWORD:password}业务方在业务编码之前应提前自行申请数据库资源,不同的环境需要配置不同的数据库。在信云+部署不同的环境时,应在对应的特定环境配置文件中替换默认的数据库连接信息; 默认的数据库配置仅作demo演示使用,会定期清理数据。业务方的数据库申请请联系业务方对应db工程师。
3. 服务名及端口配置 
服务名及端口配置定义在bootstrap.yml中配置,如下:
yaml
server:
  #服务暴露的端口号,业务方可按需配置
  port: ${PORT:8899}
  #该服务所有接口映射的统一路径,业务方可按需配置,如不配置,将按照 spring.application.name 注册和调用服务时
  #servlet:
  #context-path: /demo
spring:
  application:
    #服务注册在nacos注册中心的服务名称,可自定义,业务方可按需配置
    name: ${YML_NAME:pangea-demo}
  profiles:
    #服务运行时的环境,取值于application-*.yml中的*部分,默认为dev,业务方可根据部署的环境按需配置,
    active: ${PROFILE:dev}注意
context-path对应网关调用的映射地址,可按需自行更改,如保留,则需要在nacos的gateway-router中配置对应的映射地址(例:在postman中,context-path连接端口号和接口地址),如下图:
4. 缓存连接配置 
缓存的配置根据脚手架生成过程中选择的缓存组件来确定的,如未勾选缓存组件,请忽略该项配置。默认缓存为redis,配置在application-*.yml的特定环境配置文件中,以redis缓存为例,相关配置如下:
 单体缓存配置
yaml
spring:
  data:
    redis:
      host: ${REDIS_HOST:127.0.0.1}
      port: ${REDIS_PORT:6379}
      password: ${REDIS_PASSWORD:demo}哨兵模式配置
yaml
spring:
  data:
    redis:
      password: ${REDIS_PASSWORD:demo}
      sentinel:
        master: mymaster
        nodes: ${REDIS_HOST:1.1.1.1:26379,2.2.2.2:26379,3.3.3.3:26379}redis配置目前支持哨兵模式和单体模式,业务方可根据实际情况选择。业务方在业务编码之前应提前自行搭建redis资源,不同的环境需要配置不同的redis资源。在信云+部署不同的环境时,应在对应的特定环境配置文件中替换默认的redis连接信息。
建议 Pangea 团队建议非生产环境使用单体模式,生产环境建议使用哨兵模式。
信云+部署 
业务方首先需要将脚手架代码上传至业务方的Git代码仓库后再进行信云+部署,在信云+的部署操作请参考Devops使用手册,这里只提供部署时需要的相关配置。
CI/CD 
- 代码编译
shell
# 脚本运行过程中,日志冗余输出
set -x
# CMD 脚本执行的工作目录为 pipeline 流水线工作空间,包含 clone 的代码
# 进入从git仓库拉取下来的代码目录下
cd pangea-demo
echo "mvn --version"
mvn -q --version
echo "mvn package start ..."
mvn -s ./nexus-settings.xml clean package -Dmaven.test.skip=true
ls -l .
注意 基础镜像需要选择jdk: 17+maven:3.6.1
- 镜像构建
shell
FROM registry.hisense.com/ubi8/openjdk-17:1.4
ADD ./target/*.jar /deployments/
ENV TZ=Asia/Shanghai
服务部署 
- 健康检查配置  - 注意: 端口的配置应根据业务方实际部署时填写。 
- 环境变量 - 参数 - 变量key - 默认值 - 说明 - server.port - PORT - 8899 - 脚手架端口号 - spring.application.name - YML_NAME - pangea-demo - 服务的名称 - spriging.profiles.active - PROFILE - dev - 服务启动时读取的环境配置文件 - spring.cloud.nacos.server-addr - NACOS_ADDR - nacos-server-offline.clouddev.hisense.com - nacos注册中心地址 - spring.cloud.nacos.discovery.namespace - NANE_SPACE - pangea - nacos命名空间,默认值可固定,无需更改 - spring.cloud.nacos.discovery.group - NACOS_GROUP - dev - nacos分组,可选值:dev、test、uat、prd,别分对应开发、测试、预发、生产环境 - spring.cloud.nacos.discovery.ip - NACOS_IP - 无 - 服务注册在nacos的ip地址,使用时需要在bootstrap.yml中配置取消注释 - spring.cloud.nacos.discovery.port - NACOS_PORT - 无 - 服务注册在nacos的ip地址,使用时需要在bootstrap.yml中配置取消注释 
推荐配置 
无感发版 
在信云+部署时,推荐在环境变量中使用NACOS_IP、NACOS_PORT的配置,使用该配置会提升系统发版时用户的无感体验,减少用户对系统发版时的感知。 使用时需要在bootstrap.yml中配置取消注释(图1,图2)或者使用参数名(图3)在信云+环境变量中配置。如图:
图1:.jpg)
图2:.jpg)
图3:
- NACOS_IP环境变量的值为服务名.项目编码,以- pangea-demo为例,- pangea-demo服务在信云+部署是服务名称定义为- demo-service,项目编码为- test-jcjg-pangea-pangeav3-test, 那- NACOS_IP的值为- demo-service.test-jcjg-pangea-pangeav3-test。
- NACOS_PORT环境变量的值可复用- server.port配置的值,例如- server.port在yml文件中定义为8899,那- NACOS_PORT的值为8899,同时必须检查该端口在该服务的基本信息-服务暴露的服务端口中是存在的,若不存在请在信云+为服务进行配置并发布- 你可以直接在信云+上该服务的基本信息-服务暴露中拷贝服务域名、端口号,如图:  
注册在nacos的效果图: 