字節級護理
筆記
當前,此存儲庫中有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 - 星級存儲庫