首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从零打造自己的CI/CD系统|php项目部署v2版本

从零打造自己的CI/CD系统|php项目部署v2版本

接上文,我们今天继续完善PHP项目部署,昨天聚焦实现的功能相对来说比较简单,今天我们在原来的基础上进行完善,让其尽可能的更具备一个发布系统该具备的功能,昨天没有把代码传上去,等下我把仓库地址贴出来。

github仓库地址[1]

环境需求

参考上篇文档 从零打造自己的CI/CD系统|php项目部署v1版本

今日解说重点

•引入开关,判断本地还是远程执行(对应不同的task)•我们采取的部署模式是全量部署,非增量•由于是全量部署,每一次部署历史版本的日志文件都会随着版本而改变目录,所以我们需要把日志目录做软链•有的项目可能还需要创建sessions目录,具体看场景需要•跨roles的变量传递

Ansible roles编写

主要流程

•directory (补充内容,权限很重要,切记)•local•remote•git clone•compile•sync•symlinks (补充内容,日志目录软链实现,避免日志丢失)•smoketest•next machine

入口文件解说

大家看到我这里采用了一个开关作为执行本地和远程操作的判断条件,原因是因为有部分操作是需要在本地操作,有部分操作是需要在远程,所以我这里采用了这种方式(当然这不是最优解),既然本地执行和远程执行做了分离,那么本地创建目录的时间戳要不要和远程保持一致,我个人觉得还是需要保持一致的,所以跨roles的参数传递需要重新定义,这里引入了pre_tasks的概念,大家可以看下这块的文档,入口文件详解如下:

使用

•命令行传入变量,然后实现参数的传递•pname•项目名称(会创建对应的目录)•env•引入这个变量的原因,是因为我们编译可能分多个环境,为了避免目录重复,就用这个来区分(如果公司能实现一次编译,多个环境运行的话,是不用考虑这个的)•branch•要发布的分支•git_repo•代码仓库地址•laravel_releases•保留历史发布版本•smoketest_url•smoketest地址

代码语言:javascript
复制
ansible-playbook -i hlists deploy.yml -e "pname=php-laravel-hello-world env=dev branch=master git_repo=https://github.com/niwasawa/php-laravel-hello-world laravel_releases=3 smoketest_url=http://10.10.20.33:8877"

总结

文档整体篇幅较短,但是内容是真的都在roles里了,这是为了编写这些文档当场编写的,不是要偷工减料,今天我们完善了整个发布流,整体看起来像那么回事了,当然了不局限于整个项目,大家如果有PHP的项目,也可以尝试下,具体实现大家可以参考github上的代码。

引用链接

[1] github仓库地址: https://github.com/zhuima/kylin

下一篇
举报
领券