写点什么

自己实现一个简单的 DevOps 工具系列(后端篇)- 1

用户头像
sinsy
关注
发布于: 2020 年 09 月 21 日
自己实现一个简单的 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 文件。具体作用看 自定义 Git - Git 钩子。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 到本地,和项目做关联。

效果如下

提交代码之后效果



服务直接更新

不足以及更丰富



  1. 同目录底下不能多个 xxx.git 文件夹

  2. 没有流水线

  3. 可以更新代码审查

  4. UI 界面设置

  5. 代码管理



之后有会不定期更新这个系列,完善这个devops工具。多了之后做一个开源项目,感谢观看。

声明

作者: Sinsy

本文链接:https://blog.sincehub.cn/2020/09/21/finish-devops-1/

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文声明。

如您有任何商业合作或者授权方面的协商,请给我留言:550569627@qq.com

引用





发布于: 2020 年 09 月 21 日阅读数: 41
用户头像

sinsy

关注

还未添加个人签名 2019.10.18 加入

公众号:编程的那些年 个人博客网站:https://blog.sincehub.cn/

评论

发布
暂无评论
自己实现一个简单的 DevOps 工具系列(后端篇)- 1