自动化程序发布

<<自动化程序发布 - 绘图.vsdx>>

自动化程序发布_第1张图片

服务启用使用到的知识总结:

1git

  • git init 创建版本库
  • git clone 创建库目录
  • git push 推送
  • gogs服务器

2docker

  • docker ps
  • docker images
  • docker stop/start "container"
  • docker build -t "container_name" .
  • docker run -p 80:80 "images" bash
  • docker exec -it "container" bash 进入容器
  • docker-compose ps/logs
  • docker-compose up -d
  • Dockerfile与docker-compose.yml配置文件

3、rsync(同步代码)

  • /etc/rsync.password
  • /etc/rsyncd
  • 三种方式同步(本地同步、ssh通道同步、demon同步)
  • rsync -av /databack [email protected]::www

4、svn

  • svn checkout 远程地址:git类似
  • svn checkout --username $svn_username --password $svn_password

5maven(编译打包)

  • mvn -pl dyjs-lib,dyjs-common-util clean install -U -DskipTests=true
  • mvn clean package -DskipTests=true

6ansible(远程启动服务)

  • 远程自动停止,启动docker 容器服务

自动化程序发布_第2张图片自动化程序发布_第3张图片自动化程序发布_第4张图片

docker目录映射

   

grpc环境依赖

自动化程序发布_第5张图片

grpcserver数据

库环境

grpc环境依赖

宿主机mysql

   

具体的发布过程:

1、需要从gogs上远程git clone版本库到本地目录,然后再进行git pull拉取远程gogs服务器上的内容。

2、然后右键打开目录,用visual studio code打开代码进行脚本修改

3、修改后的自动化脚本进行提交推送到gogs服务器上(git相关操作)

4、登录自动化发布服务器172.18.40.215,进入自定义目录/data/auto_test/lp_auto_deploy_test/ 运行git init 创建远程初始库,然后git clone 输入gogs各种账号密码进行代码更新。

5、创建自动化发布服务器容/data/auto_test/lp_auto_deploy_test/dyBuilder3.0

进入该目录后,(之前通过docker buiod -t .构建好,docker-compose.yml文件需要的 基于JDK8的镜像,docker ps检查)检查docker-compose.yml文件,然后docker up -d 启用容器,运行命令docker-compose ps 可以查看到自动化服务是否正常启用.日志命令docker-compose logs.

7、创建/home/baseserver/grpcserver/目录,git clone ,git clone下baserserver目录,cd 该目录后,执行docker-compose up -d 运行基于JDK8的grpc运行的容器。

5、进入grpc的docker容器,在/data/auto_test/lp_auto_deploy_test/dyBuilder3.0目录下执行docker exec -it bash,进入映射好的自动化发布目录/root/dyScript目录,找到要发布的服务脚本,sh -x ./root/dyScript/lp_lszw_grpcser.sh 执行自动化发布命令。

6、然后进入/home/baseserver/grpcserver,查看是否自动化脚本执行成功。

7、同理分别运用自动化脚本创建zikpin\Eureke容器服务,先git clone,zikpin\Eureke自动化脚本。(主要注意端口问题)(目的会自动映射到相应的docker 容器)并自动启用该服务。

8、登录http://172.18.40.215:1001/进行测试,查看服务是否已经正常运行。

总结:

整个过程中,grpcsserver服务是运行在基于JDK8创建好的容器里面,该容器时由docker-compose.yml文件进行创建好的,该容器启用需要依赖zipkin与Eureke服务(这两个服务也是运行在另外两个基于JDK8的容器,同时也是由docker-compose.yml创建好的)。自动化脚本是由自定义Dockerfile文件进行build所需镜像,并由docker-compose.yml进行基于之前build好的镜像进行创建容器并启用,然后把修改好的自动化脚本映射到该自动化docker容器,通过docker exec -it "container" bash 进入容器,执行相应服务的自动化脚本进行测试。

   

脚本逻辑:

 

  • 定义了发布时间变量、发布执行过程存储日志目录、json配置文件路径、发布服务器ip、项目配置文件变量、svn代码库相关变量
  • 首先通过svnpull()函数来对core_path路径目录判断,看是否存在,如果不存在,则进行mkdir创建该目录。否则通过wc -l命令镜像判断是否目录为空,如果-le 0,则进行svn checkout进行检出操作。否则,进行svn revert -R 进行旧版本的还原操作,然后进行svn update 更新到目录$core_path
  • modifie_config()函数主要是对同级目录下grpcserver_mdf.sh脚本进行执行,(grpcserver_mdf.sh主要是修改了一些配置文件)
  • mvncompile()函数则对core_path目录下的代码进行编译、打包操作
  • dev_rsync_start(),对编译结果进行判断,如果编译结果-ge 1,则先通过ansible进行远程停止待发布的服务器,然后进行rsync同步代码到docker容器(远程服务器),最后通过ansible远程进行重启服务器,这样代码已经同步到自定义好的docker容器了。
  • deploy_info()函数主要输出一些发布的系统信息
  • ansible,下的hosts主要定义了ansible 远程主机地址

转载于:https://www.cnblogs.com/wph1028/p/9798717.html

你可能感兴趣的:(运维,git,java)