1 Star 0 Fork 0

chaoz / laravel-demo

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

Laravel 6 Demo

CircleCI Docker Cloud Build Status codecov coverage

CODING CI(Jenkins)构建状态 CODING 测试覆盖率

本项目演示 Laravel CI、Docker、Lint、Tests。

本文档提供这些文字版本:English汉字

Docker

本项目提供 2 种 Docker:生产环境 和 开发环境。

构建步骤:

# 默认生产环境 production
docker build -t laravel-demo:6 .

# 开发环境
docker build -t laravel-demo:6-dev --build-arg APP_ENV=local .

# 加速构建(自动修改 apt、composer、npm 的源)
docker build -t laravel-demo:6-dev --build-arg APP_ENV=local --build-arg SPEED=up .

构建结果 hub.docker.com:

docker pull sinkcup/laravel-demo:6

可切换3种运行模式 CONTAINER_ROLE: app/scheduler/queue:

# 默认 web app
docker run --rm --name laravel_demo -e DB_CONNECTION=sqlite -t sinkcup/laravel-demo:6

# 定时任务 scheduler(cron)
docker run --rm --name laravel_demo_scheduler -e DB_CONNECTION=sqlite -e CONTAINER_ROLE=scheduler -t sinkcup/laravel-demo:6

# 队列 queue
docker run --rm --name laravel_demo_queue -e DB_CONNECTION=sqlite -e CONTAINER_ROLE=queue -t sinkcup/laravel-demo:6

docker run

细节:

  • Laravel 默认配置把 log 写入本地文件,在 Docker 中不能这样,应该写入标准输出,所以我修改了 config/logging.php.
  • Laravel 默认路由不能被缓存,报错:"Unable to prepare route [/] for serialization. Uses Closure.",所以我修改了 routes/web.php and routes/api.php.
  • Docker 可以在前台运行 cron,切记不要在后台运行。

IDE Helper

只有开发环境需要 ide-helper ,那如何只在开发环境运行 composer 脚本呢?

如果在 composer.json 中加入脚本,运行这条命令会崩溃 composer install --optimize-autoloader --no-dev.

最佳方法是:

"scripts":{
    "post-autoload-dump": [
        "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
        "@php artisan package:discover --ansi"
        "if (php artisan | grep 'ide-helper:generate'); then php artisan ide-helper:generate; fi",
        "if (php artisan | grep 'ide-helper:meta'); then php artisan ide-helper:meta; fi"
    ]
},

代码规范检查(Lint)

本项目使用 PSR12 代码规范,具体请看 phpcs.xml

运行 composer install 时,.git-pre-commit 会被复制到 .git/hooks/pre-commit,本地提交时就会检查规范。

如果检查出代码不规范,可以尝试自动修复:

./lint.sh --fix

lint.sh.circleci/config.ymlJenkinsfile 中也被调用,所以推送和请求合并时也会检查代码规范。

测试(Tests)

运行 ./phpunit.sh 会生成这些文件:

  • clover.xml: Clover XML 格式的测试覆盖率报告,你可以注册 codecov.io 获得一个 TOKEN,然后在 CI 中上传报告。
  • storage/app/public/coverage: HTML 格式的测试覆盖率报告,用于本地访问 http://laravel-demo.localhost/storage/coverage/
  • junit.xml: JUnit XML 格式的测试执行结果,用于在 Jenkins 中收集。

持续集成(CI)

CircleCI

环境变量:

名称
CODECOV_TOKEN 可选,注册 codecov.io 来获得

CircleCI Environment Variables

Jenkins(免费的 CODING.net CI)

环境变量:

名称
SPEED 可选,修改源地址用来加速构建,取值:up/down/keep
DOCKER_USER 可选,Docker 用户名,如果要使用私有镜像才要配置此项
DOCKER_PASSWORD 可选,Docker 密码
DOCKER_SERVER 可选,Docker 服务器地址
DOCKER_PATH_PREFIX 可选,Docker 路径前缀

CODING CI 环境变量

空文件

简介

暂无描述 展开 收起
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/lhc0101/laravel-demo.git
git@gitee.com:lhc0101/laravel-demo.git
lhc0101
laravel-demo
laravel-demo
6.x

搜索帮助