该项目用于快速搭建API服务端及后台框架
内置持续集成, 实现了自动化代码审查、composer 包依赖自动构建、自动化测试、Docker 镜像打包和发布
方式一:使用composer 创建
composer create-project zacksleo/yii2-app-advanced:^1.0 myApp
方式二:使用 genesis 生成
genesis new:project
修改 docker-compose.yml 中 nginx 和 mysql 暴露的接口, 如
nginx:
image: zacksleo/nginx
ports:
- "80:80"
links:
- web
volumes_from:
- web
mysql:
image: mysql:5.6
ports:
- "3306:3306"
注意, 开发环境中, 可以暴露数据库接口到外网, 如果是正式环境,请关闭端口
使用 docker-compose 启动服务:
docker-compose up
迁移数据库
docker exec -it yii2appadvanced_web_1 ./yii migrate/up
yii2appadvanced_web_1
是容器的名称
或者使用
docker-compose run --rm web ./yii migrate/up
如何修改后台管理员账号和密码
修改 console\migrations\m170406_084842_create_admin_account.php 中的 `username` 和 `password_hash` 来修改后台账号密码
在 api/modules 下建立版本号对应的模块, 例如 v1, 在 controllers 中编写控制器, 提供接口
如果该接口需要认证, 可以继承 api\modules\v1\controllers
, 该类中实现接口认证
api目录为接口目录, modules中以版本号区别各个模块, 如
v1
,v2
接口的访问地址为 /api/v1
, v1 为版本号(模块名称)
RESTful接口需要配置URL, 该文件位置文件位于 api\modules\v1\config.php
中, 一个控制器配置一条数据
可以使用Postman 调试接口
文档在docs目录中编写,如有多语言支持,按照语言+国家代码进行分类 如果内容较多,可拆分目录和文件,首页(README.md)只写简介和目录, 具体文档写在其他文件中, 使用markdown格式 文档编写请参考 接口编写规范, 参考示例, 见RESTful接口规范
后台地址为 /admin, 默认的账号为 admin
, 密码为 admin
-
如果是多个模块公用的模型, 放在
common\models
目录下 -
如果仅仅某个模块使用, 放在该模块的
{api/backend/frontend}\models
目录下 -
表单模型放在
models\forms
目录下 -
查询模型放在
models\queries
目录下 -
行为放在
models\behaviors
目录下 -
帮助类放在
common\helpers
目录下 -
过滤器: 通用的放在
common\filters
目录下, 某个模块的放在{api/backend/frontend}\filters
目录下 -
测试: 所有测试代码放在
tests
目录下 -
部署: 各个环境的部署脚本放在
deploy
目录下
每次代码提交会自动进行PSR-2标准的格式检查, 同时也可以在本地提前进行格式审查
执行以下命令进行本地检查
php vendor/bin/phpcs --standard=PSR2 --ignore=vendor/,packages/,console/migrations/,common/helpers -w --colors ./
-
单元测试使用 codeception 框架进行测试
-
在
tests/unit
目录下编写单元测试用例 -
运行测试
- 首先进入容器
docker exec -it yii2appadvanced_web_1 /bin/sh
- 在项目根目录下, 运行
./vendor/bin/codecept run unit -c tests
进行单元测试
-
API测试使用codeception框架进行测试
-
在
tests/api
目录下编写单元测试用例 -
运行测试
- 首先进入容器
docker exec -it yii2appadvanced_web_1 /bin/sh
- 启动API服务
php -S localhost:8080 --docroot api/tests &>/dev/null&
- 在项目根目录下, 运行
./vendor/bin/codecept run api -c tests
进行API测试
编写 .gitlab-ci.yml
文件, 配置持续集成, 本例中的持续集成分为以下几个阶段:
通过定义的 composer.lock
安装项目所需要的依赖包
通过phpcs
来进行PSR-2规范的代码审查
通过根目录下定义的 Dockerfile
来将整个项目打包成镜像(包含 vendor 目录), 打包成功后发布到Docker私有库中, 以便下一步的部署
通过在 deploy
目录下 docker-compose.yml
中的编排, 拉取私有库中的镜像, 进行部署
注意, deploy 目录中的 docker-compose.yml, 需要修改 web 镜像
-
如果只需要正式环境、测试环境和开发环境,则 master 对应测试环境,tag 对应正式环境
-
如果需要增加预演环境,则 master 对应�预演环境,tag 对应正式环境,develop 对应测试环境
-
当代码合并到某个分支时,会自动部署到对应的环境;
-
当合并到 master 时,会自动部署到预演环境;
-
打完 tag 标签, 会自动生成正式环境的镜像,然后在 Piplines 处,点击一下手动部署按钮,会自动部署到正式环境