自己实现一个简单的 DevOps 工具系列(后端篇)- 1
什么是 DevOps
DevOps(Development和Operations的组合词)是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。
背景
由于本人在内网开发,类似 Jenkins、tekton 这些 CI/CD 的工具平台,我是很难用到,需要代理配置,所以我个人写了一个简单的 CI/CD 工具,给自己使用,也供大家参考。
需要用到的工具以及语言
思路

由客户端将代码 push 推送到 git 仓库,git 里面配置 hooks 里面的 post-update 文件。我一般写 shell,而不是在里面直接写,当推送的时候会触发 post-update 脚本文件。开始从 mvc 单元测试、构建代码,之后 生成一个 jar。通过 docker-compose 来更新服务。完成一个简单的编译构建。
实现如下
首先初始化一个线上仓库
git init --bare demo.git
进入 demo.git 文件里面 hooks,修改 post-update.sample 文件。具体作用看 。vi post-update。同时将 exec git update-server-info 注释掉。
cd demo.git/hooks/
mv post-update.sample post-update
vi post-update
post-update 内容
#!/bin/sh
cd ../
# 首次 push
for file in *
do
if [[ ${file} =~ (.*).git ]]
then
file_name=${file}
fi
done
# file_name = xxx.git 正则匹配后 project_name = xxx
project_name=${file_name%.*}
rm -fr ${project_name}
# 22 默认端口,如果 ssh 端口修改了 这里也要修改
git clone ssh://root@localhost:22/root/${project_name}.git
cd ${project_name}
# 构建
mvn clean
# 一般我是跳过单元测试
# mvn package -Dmaven.test.skip=true
mvn package
cd target
# 这里因为我的应用里面有 compose 文件夹
cp ${project_name}.jar ../compose/
cd ../compose/
docker-compose -f ${project_name}.yaml down
# 启动容器
docker-compose -f ${project_name}.yaml up -d
echo "Complete deployment"
工程目录

compose 里面的 yaml 文件,我一般是跟项目名字,也呼吁 post-update 里面内容。当然你自己也可以修改。相对应的也要修改 post-update 。
yaml 内容
version: "3"
services:
demo-service:
container_name: demo
restart: always
image: java:8
network_mode: bridge
volumes:
- /root/demo/compose/demo.jar:/demo.jar
- /etc/localtime:/etc/localtime
ports:
- "8080:8080"
environment:
- TZ="Asia/Shanghai"
entrypoint: java -jar demo.jar
之后,将服务 git clone ssh://root@localhost:22/root/demo.git 到本地,和项目做关联。
效果如下
提交代码之后效果

服务直接更新

不足以及更丰富
之后有会不定期更新这个系列,完善这个devops工具。多了之后做一个开源项目,感谢观看。
声明
作者: Sinsy
本文链接:https://blog.sincehub.cn/2020/09/21/finish-devops-1/
版权声明:本文为博主原创文章,遵循 版权协议,转载请附上原文声明。
如您有任何商业合作或者授权方面的协商,请给我留言:550569627@qq.com