說明
在工作中,代碼上線是很重要的,而作為上線人員,對流程要嚴格把控,對需要上線代碼的更新是需要仔細研究!!
向持續交付前行
在保證上線質量的前提下,如何提高上線效率,做到自動化部署,持續交付,這是一個值得深入和持久關注的問題。
代碼上線流程
svn代碼更新-->測試環境上線測試-->測試OK后發送郵件告知測試結果給運維,并說明可以上線代碼svn_revision -->上線前記錄svn_revision,對比上次上線時的改動,判斷對各服務連接有無影響,注意配置文件的修改-->匯報上級(確定上線后)-->上線需將所有測試OK的所有代碼統一上線(提前做好備份,方便出現問題回滾。注意配置文件的變動,防止更新后各服務不通)-->對上線后的功能進行測試(通知公司人員進行測試)-->OK郵件通知全員。
注:打標簽(svn tag)是一個更通用的做法。
代碼中運維需要處理的配置
<?php
return [
//緩存中無數據時,是否從db中讀取數據
'read_data_from_db'=>true,
//用戶頭像
'user_avatar' =>[
//默認的用戶頭像,不包含域名
'default_avatar' => 'default.jpg',
],
//經紀人頭像
'broker_avatar' =>[
//默認的經紀人頭像,不包含域名
'default_avatar' => 'default.jpg',
//經紀人頭像域名
]
];
保持項,key和svn中的一致性
其中對應的項、key的前后順序保持和svn中的一樣,這樣對于開發人員、測試人員來說,出現問題后便于對比。對于運維來說,僅需要修改對應key下的value即可,根據線上的實際情況進行修改。對相應的注釋,項和key不要隨意修改,也不要調整其前后順序,如果需要調整,則需要到svn中進行調整,并且和開發人員進行交流核實。
** 上線中遇到的問題 **
下面列舉一個上線遇到的問題,再次記錄,避免下次出錯:
昨日通知上線后,首先我將svn代碼進行更新,記錄svn_flag位置點為1392,詢問上傳代碼人員無誤并無嚴重修改后,更新代碼上線,因為是首次上線,所以將所有代碼一次性部署到線上,完成后測試無問題。結束報告。
在回到家中,公司人員反映,出現問題,無法登陸,便上去查看api日志訪問日志,發現有error,但無處理結果,次日到公司商議解決。
來后,詢問編寫代碼人員,查看api日志發現此error后,發現有一個配置文件仍然是舊版本,進行核對后重新上線代碼。問題得到解決!
** 簡述原因 **
因為代碼中有一個config目錄,在上線后運維需在config目錄下修改配置,連接mysql及redis,所以在上代碼前我提前將舊版本和此目錄做好備份,待新代碼上線后,將config目錄替換,本以為一切配置無改變。
但是在日志中發現,api接口調用錯誤,返回配置文件發現,雖然我將舊的config目錄替換,但是此目錄下也做了更新,所以上線并沒有做到同步。
錯誤總結
通過此次的錯誤,認識問題的嚴重性,如果當次類問題發生在正式產品線上,后果很嚴重,所以需要嚴格反思,總結文檔,提高警惕,避免以后出現同樣的錯誤。