字节级护理
笔记
当前,此存储库中有14个GitHub操作工作流程。
如何通过全部控制来解决零问题。
- 在选择一个之前,请分析服务提供商
- 监视您的服务提供商
- 与您的服务提供商密切合作
- 了解您的服务器及其作者上的每个软件;卸载任何不需要的东西
- 通过功能测试监视服务器上的每个过程,而不仅仅是ping
- 在您的git存储库的每个字节上运行QA工具
- 了解您的依赖(软件包)及其作者
- 自动部署100%
- 在没有人类干预的情况下运行生产环境
- 升级时要保守软件版本
请参阅Web应用程序的特殊基础架构
支持我的工作
如果您从这些知识中受益,请考虑支持我的工作。
谢谢你!
CI
如何设计和实施连续集成。
您在此存储库中找到一个完整的CI工作流程。
- 在预制容器或安装OS软件包中运行
- 显示环境信息
- 设置访问凭据
- 版本控制
- 缓存OS和编程语言库软件包
- 检查编程语言和框架版本兼容性
- 检查软件包管理配置(验证和归一化)
- 查看过时的软件包和已知的安全漏洞
- 构建代码
- 配置应用程序
- 0️⃣字节级
- 检查执行文件模式位
- 寻找非ASCII字符(非英语字母,Whitespace字符,控制字符)
- 1️⃣语法错误
- 检查源代码是否是否有语法错误
- 检查模板文件中的语法错误
- 2️⃣运行单元和功能测试
- 3️⃣静态分析
- 运行静态分析: phpstan
- 魔术数探测器
- 拷贝性检测器
- 4️⃣编码标准
- 测量代码覆盖范围
- 检查路线方法(路线控制器)
- 检查分布式文件列表
- 检查拼写:错别字
- 自定义检查和警告
- 以伪像以CI输出或上传日志显示日志
- 通过ssh-ing启动CD到自己的服务器(
restrict,command和sshd.conf中的DenyUsers ) - 擦除敏感数据
光盘
如何设计和实施连续交付。
- 可能的约束:
- 成功的测试
- 不要在PR-S上运行
- 我们的仓库
- 具体分支
- 在提交消息中标记
[deploy:prod] - 仅部署头提交
- 可选的手动启动(GitLab手动动作)
- 不要以root用户的身份运行
- 将部署配置保持在文件中
- 将每个输出记录到文件,日志启动和结束到syslog
- 限制执行时间的时间耗费时间(超时)
- 在开始部署之前,可选地备份项目文件
- 使用SSH键(
@companybot )在服务器上创建一个bot用户,以供GIT访问 - 列出当前项目文件中的更改
- 检查维护模式,打开维护模式
php artisan down覆盖静态资源,页面,Ajax和API请求 - 清除缓存(配置,路线,应用程序,模板等)
- 等待完成并在清理缓存后完成并禁用CRON工作和背景工人(发送到程序的电子邮件)
- 识别GIT存储库和分支
- COMMIT HASH结帐(不是分支头)
- 至少要覆盖源代码
- 不要部署测试软件包
- 启用包装管理器的生产优化
- 构建代码
- 运行数据库迁移
- 关闭维护模式
- 填充卡车(应用程序,Opcache,
wp rewrite flush ) - 至少运行1个基本功能或单元测试(例如登录或显示仪表板)
- 检查HTML输出
- 用于重新加载PHP-FPM或Cachetool的特殊Sudo配置
- 警报失败
- “ x秒倒数秒”
- 发送电子邮件,休闲,特雷洛或Google Hangouts通知
phpstan静态分析
- 扩展
phpstan/phpstan-strict-rules-
phpstan/phpstan-deprecation-rules -
dave-liddament/sarb -
ekino/phpstan-banned-code -
tomasvotruba/type-coverage -
pepakriz/phpstan-exception-rules -
canvural/larastan-strict-rules -
schlndh/maria-stan - 星级存储库