公司上线流程 pushonline_alpha
?這是在公司將服務部署上線的一個記錄,只是部署很小的python腳本,各公司不同,參考性不是很大
開始吧(版本管理是git)
1.整理好代碼后:git add xxx.py
? ? ? ? ? ? ? ? ? ? ? ? ? ?git commit -m "輸入這次提交的說明"
2.代碼review:git push origin HEAD:refs/for/master%r=username, r=XXX
? ? 在公司相應得review管理網頁中中找到相應的提交,review通過后submit就好
3.原來就在master分支上,就不用這步了,如果不在的提交到master分支上去
git push origin HEAD:master4.開發機上 輸入Pushonline_alpha 我的理解是將代碼提交到遠程的機器上去。然后就等代碼部署好
關于pushonline_alpha命令是個什么東西,看下面這個:
| 背景 由于業務規模擴大,pushonline的速度和穩定性已經不能滿足業務需求;所以基于nodekeeper,開發了新的上線系統;由于新的系統處于小流量階段,所以暫時取名pushonline_alpha。老的pushonline上線的流程是先由一個server打一個bundle,然后放到hdfs,再ssh到所有需要上線的機器,然后將bundle下載下來再apply完成上線。這個過程首先是受限與上線的單機能力,所以在處理一些上線機器眾多的情況效率會非常低。另外,由于上線以來ssh,所以上線會很不穩定,遇到一些負載高的節點會拖慢整個上線。HDFS作為離線存儲,實時性比較難保證,上傳下載bundle經常會hung住一段時間。最后,新增節點的庫應該上什么版本并不知道,需要專門的初始化的過程。 實現? ? pushonline_alpha摒棄了ssh的思路,采用基于nodekeeper的方案來實現。nodekeeper簡單來說是采用了Master-agent的框架,每個機器會有一個agent與Master保持心跳,Master通過心跳下發agent需要執行的命令,已經執行過的命令會定期檢查其狀態,保證機器的環境處于一致的狀態。因此新增機器也可以通過增加tag來完成節點初始化,詳細介紹可以參考nodekeeper。 ? ? 另一方面,pushonline_alpha也廢棄了同步打bundle的方案,采用一個bundle service來訂閱gitlab和gerrit的push事件,收到新的push事件后,會馬上開始打bundle,上傳到一個maven庫,需要上線的時候,直接從maven庫下載就可以,節約了打bundle的時間。 ? ? ?用戶調用pushonline_alpha上線,實際上只是記錄一下當前的commit_id,然后向nodekeeper提交一個命令將XX庫更新到XX commit,然后交給agent去執行,并定期從nodekeeper獲取執行的進度。 |
5.切換管理員用戶(最高權限的用戶)。在開發機上ssh user@10.2.xxx.xx?如果發現要輸入密碼的話,先退出來,輸入kinit命令,輸入你的郵箱密碼。然后在ssh就好了。? ?切換用戶后 ?用gg 命令就跳轉到想要把服務跑起來的機器上(gg 22.161這樣)
6.在機器上看下git的代碼是不是已經是修改完畢的代碼,然后:
? ? ?(1)進入/home/tiger/.server 目錄 ,在這個目錄下建立要啟動服務的軟鏈,就是建立real_run所在的文件夾的軟鏈
? ? ? ? ? ? ?軟鏈就相當于一個快捷方式的感覺,用命令: ln -s 目標文件夾 服務名稱 ? ? ?來建立
? ? ? (2)有些機器沒找到.server目錄 ,在/home/tiger/.config/systemd/user/ 下執行相同的操作
7.建立連接后 服務就啟動了,svc命令來處理服務相關
? ? svc -d 服務名稱 ? :停止服務
? ? svstat 服務名稱 ?:查看服務狀態,如果啟動時間一直是0s,1s的就說明沒啟動起來
? ? svc -u 服務名稱 :啟動服務
? ? svc -i 服務名稱 ?:重新啟動服務,查看狀態時,啟動時間會更新
8.注意,啟動的腳步需要有執行權限,遇到了服務怎么都啟動不起來,就是real_run腳本沒有x權限,要chmod +x 添加下權限
9.關于腳本怎么寫,可以在.server文件夾下隨便找個服務看看人家的怎么寫,基本上格式都一樣,改個執行py文件的地址就好
轉載于:https://www.cnblogs.com/qingjiaowoyc/p/6994489.html
總結
以上是生活随笔為你收集整理的公司上线流程 pushonline_alpha的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pip: command not fou
- 下一篇: Java中的基本数据类型以及Java的基