自动化程序发布
Posted wph1028
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自动化程序发布相关的知识,希望对你有一定的参考价值。
<<自动化程序发布 - 绘图.vsdx>>
服务启用使用到的知识总结:
1、git
- git init 创建版本库
- git clone 创建库目录
- git push 推送
- gogs服务器
2、docker
- 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
5、 maven(编译打包)
- mvn -pl dyjs-lib,dyjs-common-util clean install -U -DskipTests=true
- mvn clean package -DskipTests=true
6、ansible(远程启动服务)
- 远程自动停止,启动docker 容器服务
docker目录映射
grpc环境依赖
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、同理分别运用自动化脚本创建zikpinEureke容器服务,先git clone,zikpinEureke自动化脚本。(主要注意端口问题)(目的会自动映射到相应的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 远程主机地址
以上是关于自动化程序发布的主要内容,如果未能解决你的问题,请参考以下文章