1. 代码库的配置

为了使用RDC发布部署, 我们需要添加一些配置.

1 . settings.xml

该文件是指定RDC机器编译时maven使用的settings.xml文件.

该文件放在代码库的根目录

如果工程目录不指定的话, RDC会使用默认的settings文件, 这样就会出现无法拉取到我们私库里面的jar包。因此我们每个代码库都需要自己配置一份。

【由于settings.xml里面涉及到我们maven私库的地址和账号密码, 因此代码不贴出来了, 创建项目的时候, 直接找雷鸟, 找雷鸟, 找雷鸟

2 . <应用名>.release

该文件放在代码库的根目录

在创建应用的时候会自动生成此文件

3 . build.sh

该文件放在代码库的根目录

自定义的脚本文件

2. 创建项目

在RDC当中, 发布都是从项目开始的. 其实项目里面包含很多的内容, 但是我们这里只是对如何发布进行一个说明.

下图是创建项目的示例:

3. 创建应用

项目创建好了之后, 我们需要将我们code.aliyun.com的仓库和我们RDC进行关联.进行关联的方式就是创建一个应用,关联到指定的代码库中.

产物路径 -- 这个配置是指定传回服务器的文件的路径, 通常这里指定为target目录。(如果一个项目的根目录下面有两个maven项目。通常dubbo项目一个是interfaces项目, 另一个是提供者/消费者, 我们需要将提供者/消费者的target目录打包回来即可)

应用创建完成之后, 会生成一个<应用名>.release的文件, 并且提交到主干分支(一般为master分支). 下面是release的配置展示

.release的文件需要放在项目的根目录下面

参数说明

code.language: 指定语言类型(注册应用中的开发语言和版本)

build.output: 指定打包传回服务器的文件的路径(注册应用中的产物路径)

build.command: 执行我们自定义的脚本, 也就是执行build.sh. 如果有多个项目的代码库, 就需要sh build.sh #项目的名称# 【示例:sh build.sh crm.data.item,其中crm.data.item是商品服务数据层的项目的名称】

build.sh

这个文件是用于执行项目构建的脚本。

该文件放在代码库的根目录

由于我们是使用自定义部署的方案,所以我们可以自己写我们的编译脚本,这个脚本就是build.sh。

i. 如果仓库里面放置的是DUBBO的两个项目(一个是interfaces的项目, 另一个是消费者/提供者的项目), 则可以使用下面的脚本

#!/usr/bin/env bash

if [ ! $1 ]
then
    echo "ERROR: you have to input the directory name"
    exit 1
else
    # 有私密配置的项目需要下面cp的命令
    RDC_SECURITY_CONFIG=./rdc_security_config.properties
    if [ -f "${RDC_SECURITY_CONFIG}" ]; then
        cp ./rdc_security_config.properties ./$1/src/main/filters/
    else
        echo "当前服务没有私密配置项";
    fi
    # 先去构建interfaces的项目, 再去构建提供者/消费者项目
    cd $1".interfaces"
    mvn clean install
    cd ../$1
    if [ ${ENV_TYPE} == "testing" ]; then
        mvn clean package -P${ENV_TYPE}
    else
        mvn clean package -Dmaven.test.skip -P${ENV_TYPE}
    fi
fi

ii. 如果仓库只有一个项目, 则脚本文件会有简化. 如下面所示:

#!/usr/bin/env bash

# 有私密配置的项目需要下面cp的命令
RDC_SECURITY_CONFIG=./rdc_security_config.properties
if [ -f "${RDC_SECURITY_CONFIG}" ]; then
    cp ./rdc_security_config.properties ./src/main/filters/
else
    echo "当前服务没有私密配置项";
fi
# 执行编译命令
if [ ${ENV_TYPE} == "testing" ]; then
    mvn clean package -P${ENV_TYPE}
else
    mvn clean package -Dmaven.test.skip -P${ENV_TYPE}
fi

4. 配置发布环境

注册好了应用之后, 我们需要配置环境(包括:日常部署, 预发部署, 正式部署)

1 . 关联机器

关联机器是将服务发布到关联的机器上面去. 可以关联多台机器, 就可以把一个服务同时部署到多台机器上面

PS: 关联机器之前, 我们需要把阿里云的ECS添加到我们的企业中, 这个添加的动作需要企业的管理员在: 企业设置 -> 机器管理 -> 添加主机. 选择对应的选项之后会生成一个脚本命令, 然后在ECS上面使用root权限执行这个命令. 成功之后, 刷新页面, 就会看到ECS机器被添加进来了. 见下图

2 . 配置策略

多台机器发布的时候需要用到这个配置.

3 . 部署配置(这个很重要)

上图的路径都是关联机器的路径. Stop 和 Start的脚本也都是关联机器上面的脚本, 用户也同样是.

服务器路径要求

由于部署配置中的执行用户我们统一为 deploy, 所以我们的 下载路径解压目录 的前缀路径以及 StopStart 也统一起来.

1 . 下载路径: /home/deploy/rdc/release_jars/<项目名称>.tgz
2 . 解压目录: /home/deploy/rdc/servers/<项目名称>/
3 . Stop: /home/deploy/rdc/shell/stop.sh <参数: 项目名称>
4 . Start: /home/deploy/rdc/shell/start.sh <参数: 项目名称>

举例子说明一下:

项目名称: crm.data.trade
1 . 下载路径: /home/deploy/rdc/release_jars/crm.data.trade.tgz
2 . 解压目录: /home/deploy/rdc/servers/crm.data.trade/
3 . Stop: /home/deploy/rdc/shell/stop.sh crm.data.trade
4 . Start: /home/deploy/rdc/shell/start.sh crm.data.trade

4 . 私密项配置 【仅供正式部署使用】

私密配置项这个是专为正式部署时候使用的。这个里面主要放置的是不适合放在工程代码库里面的配置项。比如:数据库账号密码等。 私密配置项配置好之后,在构建项目之前会生成一个明文的properties文件放在项目的根目录下面。

配置完这些, 我们就可以去发布了.

5. 发布

特性分支 的发布方式

进入特性分支之后, 选择新建分支.

提交 之后, 点击 提交待发布 .

选中其中一个特性分支之后, 提交发布 , 这个时候, rdc就会自动合并主干分支和我们刚才特性分支里面配置的分支的代码到一个新的分支, 然后进行构建. 构建成功之后, 会按照部署配置 的指示进行部署到服务器的工作.

日常部署预发部署 部署成功之后, 仍会保留当前特性分支.

正式部署 成功之后, 会自动将当前分支的代码合并到主干分支(一般是master分支). 然后删除特性分支.

到部署成功, 我们的RDC部署就完成了.