Skip to content

Latest commit

 

History

History
executable file
·
212 lines (133 loc) · 7.25 KB

README.md

File metadata and controls

executable file
·
212 lines (133 loc) · 7.25 KB

Yii2-App-Advanced

该项目用于快速搭建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 为版本号(模块名称)

配置URL

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 ./

自动化测试

单元测试

  1. 单元测试使用 codeception 框架进行测试

  2. tests/unit 目录下编写单元测试用例

  3. 运行测试

  • 首先进入容器 docker exec -it yii2appadvanced_web_1 /bin/sh
  • 在项目根目录下, 运行./vendor/bin/codecept run unit -c tests 进行单元测试

API测试

  1. API测试使用codeception框架进行测试

  2. tests/api 目录下编写单元测试用例

  3. 运行测试

  • 首先进入容器 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 配置说明

编写 .gitlab-ci.yml 文件, 配置持续集成, 本例中的持续集成分为以下几个阶段:

准备: 主要是依赖管理和安装

通过定义的 composer.lock 安装项目所需要的依赖包

测试: 包括代码审查, 单元测试, API 测试

通过phpcs 来进行PSR-2规范的代码审查

构建: 包括 Docker 镜像的构建, 或者安装包的生成

通过根目录下定义的 Dockerfile 来将整个项目打包成镜像(包含 vendor 目录), 打包成功后发布到Docker私有库中, 以便下一步的部署

部署: 包括实现远程自动部署及更新

通过在 deploy 目录下 docker-compose.yml 中的编排, 拉取私有库中的镜像, 进行部署

注意, deploy 目录中的 docker-compose.yml, 需要修改 web 镜像

部署流程

  • 如果只需要正式环境、测试环境和开发环境,则 master 对应测试环境,tag 对应正式环境

  • 如果需要增加预演环境,则 master 对应�预演环境,tag 对应正式环境,develop 对应测试环境

  • 当代码合并到某个分支时,会自动部署到对应的环境;

  • 当合并到 master 时,会自动部署到预演环境;

  • 打完 tag 标签, 会自动生成正式环境的镜像,然后在 Piplines 处,点击一下手动部署按钮,会自动部署到正式环境

更多

自动化

规范

相关文档