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

2020-07-03 09:59:35 浏览数 (1)

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

今天我们结合前面所讲内容进行PHP项目的完整部署流程,当然我们不会一步到位,会慢慢迭代完善部署的整个过程。

环境需求

•Ansible•php 环境•composer 工具

Ansible 安装部署

•安装ansible•调整配置文件ansible.cfg

代码语言:javascript复制
pip install ansible

php环境安装部署

•不要想着去源码编译•先安装remi源•然后在安装PHP•remi源[1]

Example
代码语言:javascript复制
yum install php php-devel php-fpm enablerepo=remi-php73

composer安装部署

composer安装[2]•composer镜像配置,如果自己有私服的话,那就配置私服,没有私服的话,那就用阿里云的

代码语言:javascript复制
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

项目demo

•由于时间原因,就没有从头搞起,在GitHub上找了一个demo,php-laravel-hello-world[3], 我本地编译过,运行没问题

Ansible roles编写和存放

•Ansible roles存放位置在/etc/ansible/roles下,具体还要看ansible.cfg里如何定义roles的路径•使用的时候直接采用单独目录的形式来存放该应用对应的配置文件

Ansible和远程机器通信

•远程机器上部署应用建议使用普通用户,然后把发布机器上的发布账号和远程机器上的应用账号做互信,这样推送编译后的产物就不用交互式输入密码确认了

Ansible roles编写

主要操作流程

•git clone•compile•sync•next machine

编写roles

•切记不要手动创建roles对应的目录,我是见过不少小伙伴去手动一个个创建目录,真的是。。。

代码语言:javascript复制
[root@zhuima roles]# ansible-galaxy init php-laravel-hello-world
WARNING: yacc table file version is out of date
- php-laravel-hello-world was created successfully
[root@zhuima roles]#
目录结构如下
代码语言:javascript复制
[root@zhuima php-laravel-hello-world]# tree .
.
├── defaults
│   └── main.yml
├── files
├── handlers
│   └── main.yml
├── meta
│   └── main.yml
├── README.md
├── tasks
│   ├── composer.yml
│   ├── deploy.yml
│   ├── directory.yml
│   ├── main.yml
│   └── synchronize.yml
├── templates
├── tests
│   ├── inventory
│   └── test.yml
└── vars
    └── main.yml

8 directories, 12 files

注意事项

•本地和远程只保留历史的三份部署记录,便于回滚•每一步操作都要注册,下一步操作之前判断上一步执行结果成功与否•执行数据流的过程中,屏蔽异常主动退出,人工捕获异常,然后在退出之前清理前面执行的所有操作•composer生产使用的时候,尽量加上--no-dev --optimize-autoloader --no-interaction

使用

•命令行传入变量,然后实现参数的传递

代码语言: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"

总结

时间比较赶,并没有实现smoketest和更多复杂的逻辑,只是单纯的实现了简单的部署操作骨架,剩下的明天我们继续。

引用链接

[1] remi源: https://rpms.remirepo.net/ [2] composer安装: https://www.phpcomposer.com/ [3] php-laravel-hello-world: https://github.com/niwasawa/php-laravel-hello-world

0 人点赞