ソースを参照

更新脚本和 README.md

reghao 1 年間 前
コミット
0496ce75ca

+ 39 - 24
README.md

@@ -7,7 +7,7 @@
 - maven:3.9
 - mysql:5.7
 
-## 架构
+## 模块
 devops 项目模块:
 - agent
 > 监听 127.0.0.1:60001 端口
@@ -26,6 +26,7 @@ devops 项目模块:
 > 
 > 管理节点, 用于管理 agent 节点, 构建部署应用等
 
+### mgr 和 agent
 devops-mgr 和 devops-agent 之间的关系如下图所示:
 ![](https://blog.reghao.cn/file/e4fc2c65c2f44374a09dbb916499a5bf.png)
 > agent 和 mgr 之间使用 websocket 进行通信
@@ -39,33 +40,47 @@ devops-mgr 和 devops-agent 之间的关系如下图所示:
 > 只能部署一个 mgr 实例
 > > 可以在一个节点上同时部署 mgr 和 agent 实例
 
-## 初始化 MySQL
-- 1.devops/zzz/devops_init.sql 文件是系统的初始数据
-- 2.执行 devops/zzz/init_schema.sh 脚本可完成数据库的创建和初始化
-> 需要自行指定脚本中的 host, username, password, db 等变量值
-- 3.然后可以开始构建和部署系统 
+## 构建部署
+### pull 项目源码
+```
+cd ~/Downloads
+git clone https://git.reghao.cn/reghao/devops.git
+```
+
+### 初始化 MySQL
+```
+cd ~/Downloads/devops/zzz
+bash db_init.sh
+```
+> 执行 db_init.sh 会自动创建 devops 项目需要的数据库并初始化数据库表
+> > 需要自行指定 db_init.sh 脚本中的 host, username, password 等变量值
 
-## 构建
-根据需要构建的类型使用 wget 获取构建脚本:
+### 构建并运行
 ```
-# 构建 jar 包使用此脚本
-wget https://git.reghao.cn/reghao/bnt/raw/master/zzz/build_jar.sh
+cd ~/Downloads/devops/zzz
+bash build_jar.sh
 ```
-- 1.修改构建脚本中的 base_dir 变量的值
-- 2.执行构建脚本
-- 3.构建完成
-> 生成的 jar 包会分别存放在 devops/mgr/bin, devops/agent/bin 和 devops/deployer/bin 目录中
-
-## 部署
-### 部署 devops-mgr
-- 1.修改 devops/mgr/bin/devopsmgr.yml 文件中的配置
-> mysql 配置
+> 执行 db_init.sh 会自动构建 devops 各应用 jar 包, 并运行 devops-mgr 应用
+> > build_jar.sh 脚本中的 proj_dir 变量默认是 ~/Downloads/devops
+>
+> mvn 构建默认使用 dev 环境, 所以需要修改 web 模块 resources/application-dev.yml 配置文件中的第三方服务配置
+>
+> 运行 devops-mgr 应用前需要根据环境修改 devops/mgr/bin/devopsmgr.yml 文件中的配置
+> > mysql 配置
 > 
-> app.baseDir 指定 mgr 产生的数据存放的位置
-- 2.使用 cd 命令切换到 devops/mgr/bin 目录
-- 3.执行 start.sh 脚本
+> > app.baseDir 指定 mgr 产生的数据存放的位置
+>
+> 默认执行 devops/mgr/bin 目录中的 start.sh 脚本, 此时使用 devopsmgr.yml 配置文件
+> > 如果要使用 resources/application-dev.yml 配置文件, 则执行 start1.sh 脚本
+
+### 停止应用
+```
+cd ~/Downloads/devops/web/bin
+bash shutdown.sh
+```
+> 执行 shutdown.sh 会结束 devops-mgr 应用
 
-### 部署 devops-agent
+## 部署 devops-agent
 - 1.修改 devops/agent/bin/devopsagent.json 文件中的配置
 > mgrAddress 可以是 IP 地址, 也可以是域名
 > > 如果使用域名, 那么 mgrPort 应使用 Nginx 中的配置
@@ -74,7 +89,7 @@ wget https://git.reghao.cn/reghao/bnt/raw/master/zzz/build_jar.sh
 
 ### 部署多节点
 如果要将 devops-mgr 和 devops-agent 部署到多个节点(注意, devops-mgr 只能部署到多个节点中的某个节点), 可以使用 devops-deployer 工具, 它本质上是一个 SFTP/SSH 客户端, 在和节点建立 SSH 连接后, 执行相应的 Shell 命令.
-- 1.使用 devops/zzz/servers.csv 模板文件
+- 1.使用 devops/zzz/servers2.csv 模板文件
 > 在该文件中填写节点的相应信息, 必须指定密码或私钥文件绝对路径
 - 2.然后根据需要执行 devops/zzz/deploy_mgr.sh 或 devops/zzz/deploy_agent.sh 脚本
 > 首先要设置脚本中 proj_dir, remote_dir 和 server_file 这三个变量的值

+ 3 - 14
agent/bin/shutdown.sh

@@ -1,22 +1,11 @@
 #!/bin/bash
 
 app_name='devops-agent.jar'
-
-pid=`ps aux | grep ${app_name} | grep -v 'grep' | tr -s ' '| cut -d ' ' -f 2`
-echo "process id: "${pid}
+pid=`ps -ef | grep ${app_name} | grep -v grep | awk '{print $2}'`
 if [[ -z ${pid} ]];
 then
-  echo "process killed"
+  echo ${app_name}" killed"
 else
+  echo "kill "${app_name}" with pid "${pid}
   kill -15 ${pid}
 fi
-
-echo "sleep 10s and wait process killed"
-sleep 10
-pid=`ps aux | grep ${app_name} | grep -v 'grep' | tr -s ' '| cut -d ' ' -f 2`
-if [[ -z ${pid} ]];
-then
-  echo "${app_name} has killed"
-else
-  echo "process ${pid} not killed"
-fi

+ 3 - 14
mgr/bin/shutdown.sh

@@ -1,22 +1,11 @@
 #!/bin/bash
 
 app_name='devops-mgr.jar'
-
-pid=`ps aux | grep ${app_name} | grep -v 'grep' | tr -s ' '| cut -d ' ' -f 2`
-echo "process id: "${pid}
+pid=`ps -ef | grep ${app_name} | grep -v grep | awk '{print $2}'`
 if [[ -z ${pid} ]];
 then
-  echo "process killed"
+  echo ${app_name}" killed"
 else
+  echo "kill "${app_name}" with pid "${pid}
   kill -15 ${pid}
 fi
-
-echo "sleep 10s and wait process killed"
-sleep 10
-pid=`ps aux | grep ${app_name} | grep -v 'grep' | tr -s ' '| cut -d ' ' -f 2`
-if [[ -z ${pid} ]];
-then
-  echo "${app_name} has killed"
-else
-  echo "process ${pid} not killed"
-fi

+ 5 - 0
mgr/bin/start1.sh

@@ -0,0 +1,5 @@
+#!/bin/bash
+
+app_dir=`pwd`
+app_name='devops-mgr.jar'
+java -jar ${app_dir}"/"${app_name} > console.log 2>&1 &

+ 0 - 12
zzz/build.sh

@@ -1,12 +0,0 @@
-#!/bin/bash
-
-###############################################################################
-# 构建 devops-mgr, devops-agent 和 devops-deployer 应用的 jar 包
-###############################################################################
-
-set -e
-
-cd ..
-mvn clean package -Dmaven.test.skip=true -am -pl mgr -Ptest
-mvn clean package -Dmaven.test.skip=true -am -pl agent
-mvn clean package -Dmaven.test.skip=true -am -pl deployer

+ 30 - 13
zzz/build_jar.sh

@@ -1,27 +1,44 @@
 #!/bin/bash
 
 ###############################################################################
-# 构建 devops-mgr, devops-agent 和 devops-deployer 应用的 jar 包
+# 构建 devops 应用
 ###############################################################################
 
 set -e
 
-# 代码存放的位置
-base_dir = '/home/reghao/Downloads'
+proj_dir='~/Downloads/devops'
 
 ###############################################################################
 # 构建依赖
 ###############################################################################
-git clone https://git.reghao.cn/reghao/jutil
-cd jutil
-mvn install package -Dmaven.test.skip=true
+build_dependencies() {
+  cd ${proj_dir}
+  git clone https://git.reghao.cn/reghao/jutil
+  cd jutil
+  mvn clean install -Dmaven.test.skip=true
+}
 
 ###############################################################################
-# 构建 devops 项目
+# 构建 devops 应用 jar 包
 ###############################################################################
-cd ${base_dir}
-git clone https://git.reghao.cn/reghao/jutil
-#mvn clean package -Dmaven.test.skip=true -Ptest
-mvn clean package -Dmaven.test.skip=true -am -pl mgr -Ptest
-mvn clean package -Dmaven.test.skip=true -am -pl agent
-mvn clean package -Dmaven.test.skip=true -am -pl deployer
+build_jar() {
+  cd ${proj_dir}
+  mvn clean package -Dmaven.test.skip
+}
+
+###############################################################################
+# 运行 devops-mgr 应用
+###############################################################################
+exec_jar() {
+  cd ${proj_dir}/mgr/bin
+  bash start.sh
+}
+
+echo "构建第三方依赖..."
+build_dependencies
+
+echo "构建 devops jar 应用..."
+build_jar
+
+echo "运行 devops-mgr jar 应用..."
+exec_jar

+ 8 - 6
zzz/init_schema.sh → zzz/db_init.sh

@@ -6,16 +6,18 @@
 
 set -e
 
-host='192.168.0.112'
-username='test'
-password='Test@123456'
-db='reghao_devops_tdb'
+base_dir=`pwd`
+cd ${base_dir}/schema
+
+host='127.0.0.1'
+username='dev'
+password='Dev@123456'
+db='reghao_devops_rdb'
 
 sql="CREATE DATABASE ${db} DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;"
 
 mysql -h${host} -u${username} -p${password} << EOF
 ${sql}
 use ${db}
-source ./devops_init.sql;
+source ./reghao_devops_rdb.sql;
 EOF
-exit;

+ 2 - 2
zzz/deploy_agent.sh

@@ -7,11 +7,11 @@ set -e
 ###############################################################################
 
 # devops 项目位置
-proj_dir='/home/reghao/code/java/devops'
+proj_dir='~/Downloads/devops'
 # 远程节点上 devops-agent 部署的位置
 remote_dir='/opt/apps/devops-agent'
 # 远程节点 CSV 文件位置
-server_file='/home/reghao/Downloads/servers2.csv'
+server_file='${proj_dir}/zzz/servers2.csv'
 
 local_dir=${proj_dir}'/agent/bin'
 jar_path=${proj_dir}/deployer/bin/devops-deployer.jar

+ 2 - 2
zzz/deploy_mgr.sh

@@ -7,11 +7,11 @@ set -e
 ###############################################################################
 
 # devops 项目位置
-proj_dir='/home/reghao/code/java/devops'
+proj_dir='~/Downloads/devops'
 # 远程节点上 devops-mgr 部署的位置
 remote_dir='/opt/app/devops-mgr'
 # 远程节点 CSV 文件位置
-server_file='/home/reghao/Downloads/servers1.csv'
+server_file='${proj_dir}/zzz/servers1.csv'
 
 local_dir=${proj_dir}'/mgr/bin'
 jar_path=${proj_dir}/deployer/bin/devops-deployer.jar

+ 0 - 0
zzz/devops_init.sql → zzz/schema/reghao_devops_rdb.sql


+ 0 - 3
zzz/servers.csv

@@ -1,3 +0,0 @@
-host,port,username,password,prikeyPath
-192.168.0.71,22,root,aka,
-s110.reghao.cn,22,root,,~/.ssh/id_rsa_s110

+ 2 - 0
zzz/servers1.csv

@@ -0,0 +1,2 @@
+host,port,username,password,prikeyPath
+127.0.0.1,22,gjs,123456

+ 2 - 0
zzz/servers2.csv

@@ -0,0 +1,2 @@
+host,port,username,password,prikeyPath
+127.0.0.1,22,gjs,123456