3.syncd项目管理篇

项目管理脚本请参考线上脚本,线上新增了一些内容以适应更多的部署场景:

  1. 新增内容以实现单机多实例部署,且单机多实例时确保日志文件不会相互印象
  2. 新增内容以实现同步文件时,完成旧目录中,在新目录中不存在的文件(保证正在使用的目录与最新的发布目录完全同步)
  3. 新增内容保证二次部署时不会洗掉第一次部署时产生的日志文件

项目管理篇主要分为三部分:

  1. 将现有的项目添加到syncd中
  2. syncd部署项目的底层细节
  3. 该脚本的一些思路

将现有的项目添加到syncd中:

  1. 前提:你的有一个gitlab仓库,且在部署syncd的机器上,是可以通过git ssh访问到你的仓库的

  2. 前提:你需要建立部署syncd的机器,与部署各个项目的机器之间的ssh免密登录(单向的,只需要master机器,能免密ssh到各个slave机器)

  3. 先添加集群,这一步很简单,就只是随便设计一个名字而已

2020-07-31-17-49-55

  1. 为集群添加机器,这一步也很简单,看图就会

2020-07-31-17-50-02

  1. 添加项目,这一步很简单,操作一下就会了(项目空间不是百分百要创建的,有现成的就用现成的就好)

2020-07-31-17-50-10

  1. 新增项目,该步比较简单

2020-07-31-17-50-17

  1. 填写项目信息,这儿有很多细节处需要注意:

    • 仓库地址,就填写你gitlab上的仓库
    • 上线模式选择Tag上线,切记!!!
    • 线上集群选择你中意的集群
    • 用户填写分配的机器的用户(这儿有点坑,我们拿到的机子是有两个用户的,所以在设计集群的时候一定要规避这个问题)
    • 目录及之后的部署前执行的命令、部署后执行的命令是有一定的关联的,所以我单写一步,详细说明这个

2020-07-31-17-50-24

  1. 目录、部署前、部署后的运行命令如何填写(想知道原理,请看原理部分):
  • 目录(该处的值一定要与下一步的syncd_deploy_path的值是相同的):
1
/home/zdmprd/deploy
  • 部署前(一定要注意zdmprd,我这儿其实设计的有问题,不应该放在某个用户的家目录下,导致用户不一样的时候这个地方还要相应的修改):
1
2
3
syncd_deploy_path="/home/zdmprd/deploy" \
    && rm -rf $syncd_deploy_path \
    && mkdir $syncd_deploy_path
  • 部署后(注意syncd_deploy_path的值与module_name的值,在我们目前的项目中,就这两个值会发生变化):
1
2
3
4
5
6
7
8
9
syncd_deploy_path="/home/zdmprd/deploy" \
    && module_name="hwb-ranking-cron" \
    && version="1.0-SNAPSHOT" \
    && platform_base="/home/zdmprd/deploy_true" \
    && platform_home=$platform_base/$module_name \
    && mkdir -p $platform_home \
    && rsync -avz $syncd_deploy_path/ $platform_home \
    && cd $platform_home \
    && sudo sh/start_service.sh $module_name $version $platform_home
  1. 完成这些信息的填写后,点击确定,还有最后一步我们需要填写如何构建的脚本,构建脚本如何写,如何改请看第10步:

2020-07-31-17-50-37

2020-07-31-17-50-42

  1. 构建设置如何填写:
  • 构建脚本(注意module_name及package_base中的用户名,这些都是可能会发生改变的点,切记切记切记):
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
module_name="hwb-ranking-cron"
package_base="/home/zdmprd/DeployTools/package"
package_path=$package_base/$module_name
 
cd ${env_workspace}
 
mvn package -Dmaven.test.skip=true
 
# 如果master上存放的构建后项目目录结构的文件夹不存在则创建它
if [ ! -d $package_path ];then
    cp -r $package_base/template/ $package_path
fi
 
 
rsync -avz $module_name/target/lib $package_path
rsync -avz $module_name/target/config $package_path
rsync -avx $module_name/target/*.jar $package_path
 
cd $package_path
tar -zcvf ${env_pack_file} *
  1. 完成这些,就将一个项目添加到了syncd中,具体如何使用,请参考:使用篇 ==>Go