前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从零打造自己的CI/CD系统|php项目部署v2版本

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

作者头像
追马
发布2020-07-03 09:58:06
5260
发布2020-07-03 09:58:06
举报
文章被收录于专栏:一日一工具

从零打造自己的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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 链上追马 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 从零打造自己的CI/CD系统|php项目部署v2版本
    • 环境需求
      • 今日解说重点
        • Ansible roles编写
          • 主要流程
          • 入口文件解说
        • 使用
          • 总结
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档