[Python][P4][OpenGrok] Automation from P4 to OpenGrok

「因為人會犯錯,所以我們要寫扣。」

敝人是一個很容易犯錯的人,一件事情重複做10次可以錯8次,
所以寫扣是避免自己重複犯同樣錯誤的最好方法。

這次的自動化的任務是定期從P4上拉最新的扣下來,放到OpenGrok上給大家trace code跟code review用,另外還要維護一個首頁搜集每個project的連結。

過去的方法是重複的copy paste, 每次增加一個新的project,就有5個檔案要改。

然而最近發現要sync的project竟然也快20個,每個月又會再增加新的,
雖然原本的方法很難出錯,但我做起來就是錯誤百出。

於是想改成只要在某個設定檔上加一行,然後每件事情就自動完成:
1. 做出新project的webapp, 
2. 在首頁中加入新webapp連結,
3. 更新現有webapp的原始碼
4. index現有的webapp

這裡是幾個設計與遇到的問題:
1. 因為要跟前端JavaScript分享設定檔,設定檔預期使用json格式。
2. 但是用shell script處理json頗麻煩,所以用不是很熟但相對輕鬆的Python來做
3. 過去是用P4的command line tool更新原始碼,所以需要P4的python lib....
幸好,他們真的有這種東西 p4python
安裝有點小曲折,不過裝完就忘了 XDDD
4. OpenGrok的事情就繼續用subprocess + command line tool.
5. 建立新webapp還有一些xml要處理,還好Python都有。

最後測試成功的結果是這樣
當中困擾我最久的就是,
p4python的run_sync預設會將"Up to date"視為exception,
如果沒有catch p4.warnings 後面都不用玩了。
這要仔細看exception_level那段才會發現。


留言