From 62a30dc69759d06d7c3641187041881e1ac1f9b7 Mon Sep 17 00:00:00 2001
From: "zhangkun9038@dingtalk.com" <zhangkun9038@dingtalk.com>
Date: Sat, 17 Sep 2022 15:29:45 +0800
Subject: [PATCH] update

---
 README.md    | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 ossDetect.sh |  7 ++++
 uplaodLog.sh |  1 +
 3 files changed, 102 insertions(+)
 create mode 100644 README.md
 create mode 100755 ossDetect.sh

diff --git a/README.md b/README.md
new file mode 100644
index 0000000..90d7ac8
--- /dev/null
+++ b/README.md
@@ -0,0 +1,94 @@
+## 自动部署服务和阿里云OSS的使用
+
+为简化手工部署项目的操作。目前实现了一套进行自动化部署系统。以下介绍如何使用:
+
+### 一. 安装和配置客户端:
+
+- 第一次使用,需在自己电脑安装和配置阿里云oss客户端:
+  - 下载安装阿里云ossBrowser客户端:https://help.aliyun.com/document_detail/209974.htm#task-2065478
+  - 客户端配置信息:
+    ```
+    endpoint=oss-cn-hangzhou.aliyuncs.com
+    accessKeyID=${yourAccessKeyID}
+    accessKeySecret=${yourAccessKeySecret}
+    预设OSS路径:oss://ztupload/
+    ```
+    上述仅为演示。具体的key和secret, 此文档之外单独提供。上面没提到的,保持为空
+
+    bucket名:**ztupload**, 打开客户端后, 此bucket下目录层级如下:
+
+```
+.
+├── production
+│   ├── investigate
+│   │   ├── backEnd
+│   │   │   └── investigate.jar
+│   │   └── frontEnd
+│   │       └── zhuize.zip
+│   ├── logs
+│   │   ├── autoDeploy.log
+│   │   └── ${serviceName}.log
+│   └── ztsjxxxt
+│       ├── backEnd
+│       │   └── ztsjxxxt.jar
+│       └── frontEnd
+│           └── html.zip
+└── stage
+    ├── investigate
+    │   ├── backEnd
+    │   │   └── investigate.jar
+    │   └── frontEnd
+    │       └── zhuize.zip
+    ├── logs
+    │   ├── autoDeploy.log
+    │   └── ${serviceName}.log
+    └── ztsjxxxt
+        ├── backEnd
+        │   └── ztsjxxxt.jar
+        └── frontEnd
+            └── html.zip
+```
+
+  其中:
+  1. 追责前端包叫zhuize.zip,后端包叫investigate.jar;审计前端包叫html.zip, 后端包叫ztsjxxxt.jar
+  2. production对应中铁环境,stage对应公司内网环境。
+  3. 请保持文件目录结构和文件与上面的目录树完全一致,**不要修改现有目录结构、删除现有文件,或额外上传其他不相关的文件**。 
+  4. logs目录下包含: 
+      - autoDeploy.log: 自动部署服务执行过程中发生事件的相关log。上传前端zip包,5分钟内,会触发此文件更新。
+      - ${serviceName}.log: 为后端服务相关log, 比如investigate.log。上传后端jar包, 5分钟内,会触发此文件更新。
+
+### 二. 手动执行部分
+安装并配置好oss客户端后, 日常发版需执行以下操作
+
+#### 1. 上传
+1. 将特定项目的特定构建完成的前端/后端包,上传到阿里云特定的私有存储桶下的特定位置,无需删除原有文件,直接上传同名文件,会自动替换掉原有文件。
+2. 5分钟后,对应服务会自动使用新包部署完成。
+
+> 注意!不要执行上传新包覆盖现有包之外的其他动作。如果不小心上传错了位置、删了oss里现有的老包, 不会触发自动部署。但如果修改了目录层级或目录名,**后续正常的自动部署将不会执行!**
+
+
+#### 2. 查看log (可选操作)
+以下操作可了解部署详情
+
+1. 上传完成5分钟后,用ossBrowser查看并刷新 production/${项目名}/${logs} 目录下的内容
+2. 如果上传的是前端zip包,logs目录下的autoDeloy.log的文件创建时间会更新到最新。点击查看log,找到类似如下图的相关信息
+![img](https://phyer.bj.bcebos.com/2022/websource/ztupload2.png)
+3. 如果上传的是后端jar包,logs目录下的${项目名}.jar的文件创建时间会更新到最新。点击查看log,找到类似如下图的相关信息
+![img](https://phyer.bj.bcebos.com/2022/websource/ztupload1.png)
+
+#### 3. 校验 (可选操作)
+
+为确保上传的包和部署成功的包版本一致,可查看本地最新构建好的包的md5值,和log中描述的业务服务中使用的最新jar/zip包的md5值(也就是上图中划线部分的md5值)是否一致, 以便确认。
+
+
+
+
+
+### 三. 自动执行部分
+以下部分无需手动执行, 自动完成, 仅作为介绍。
+
+1. 每台受此系统纳管的虚机,通过5分钟定时任务,去阿里云此存储桶下特定位置,查看特定文件的md5信息,如果发现和本地缓存的包的md5值不一致,就进行下载,替换本地缓存的包。
+2. 相关服务重启时,先验证本地缓存包是否和当前服务正在使用的包的md5值是否一样,如果不一样,把本地缓存包替换到项目运行目录下,替换正在运行的包。kill掉服务进程,重新开启进程。
+3. 相关log会上传到oss中
+
+
diff --git a/ossDetect.sh b/ossDetect.sh
new file mode 100755
index 0000000..00db498
--- /dev/null
+++ b/ossDetect.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+cd ~
+./ossutil stat oss://ztupload/html.zip > html_oss.info
+ossInfo=$(cat html_oss.info)
+out1=${ossInfo##*Etag}
+echo $out1
diff --git a/uplaodLog.sh b/uplaodLog.sh
index 1f3f12a..f217ed1 100755
--- a/uplaodLog.sh
+++ b/uplaodLog.sh
@@ -1,4 +1,5 @@
 #!/bin/bash
+
 #usage:
 # ./ossUpgrade.sh "stage/ztsjxxxt/frontEnd/" ztsjxxxt
 ossPath=$1 #末尾别忘了加/