記一次代碼事故之后

寫在前面:近來管理的事兒做得多了些,也就多了些時(shí)間去思考什么是公司的“工程師文化”。所謂文化,一定是整個(gè)公司都浸淫著的氛圍,得靠點(diǎn)滴小事才能折射出來。所以就開始隨手記一些工作中的小事兒,給自己一些答案,也和大家多一些交流。


某下午,大家正各自忙活著,忽然傳來一聲吼:“都別pull代碼哈,master上的代碼不知被誰revert成兩個(gè)月前的了!”(沒錯(cuò),就是百姓網(wǎng)網(wǎng)站的代碼庫)。立刻,鎖部署系統(tǒng)(后來驗(yàn)證部署系統(tǒng)還是有足夠防范不會(huì)把老代碼直接發(fā)布的,但當(dāng)時(shí)那個(gè)緊張呀),手工恢復(fù)代碼庫,幾個(gè)人折騰了快一個(gè)小時(shí),才安定下來開始找元兇:是一個(gè)實(shí)習(xí)生小朋友犯迷糊想pull卻打成了push --force,指向主repo的master。

幾個(gè)人坐下來討論今后該如何防范類似問題。
取消實(shí)習(xí)生的master寫權(quán)限?這會(huì)嚴(yán)重影響實(shí)習(xí)生和他mentor的生產(chǎn)效率,不可??;更何況,正式員工也會(huì)犯錯(cuò)呀,是不是他們也要根據(jù)資歷分出個(gè)三六九等呢?
那就做更多的mentoring、教會(huì)了才給權(quán)限?可這次新人的mentor可是公司里最著名的布道github工作流程的人,真的全都教過、教會(huì)了,新人只是一時(shí)迷糊而已。

那怎么辦?

最終的方案:

  1. 取消所有人的baixing repo的寫權(quán)限,只能在自己的repo上修改。
  2. 所有工程師要merge代碼時(shí)就向一個(gè)robot發(fā)送merge命令。robot會(huì)進(jìn)行各種校驗(yàn)(merge命令發(fā)起方的身份、是否有PR、PR是否有reviewer給出LGTM、接下來還考慮加UT等等),成功后才會(huì)用robot的賬號(hào)執(zhí)行merge操作。
  3. 由于同學(xué)們已經(jīng)習(xí)慣了在github上review代碼然后點(diǎn)merge按鈕了,我們就寫了一小段油猴腳本,把github PR下面那個(gè)merge按鈕變成了給robot發(fā)merge命令。

于是,除了需要設(shè)置一下油猴插件,之前的工作方式幾乎沒有任何改變,堪稱完美!


一場(chǎng)虛驚后,我們的工作方式又進(jìn)化了一步。我們一直都信奉breaking things and moving fast,有很多地方為了效率我們會(huì)采取一些(以我之前在微軟時(shí)的標(biāo)準(zhǔn)來看)簡(jiǎn)單粗暴甚至危險(xiǎn)的方式。隨著公司的成長(zhǎng),我們要學(xué)著避免breaking things,但如何在避免它的同時(shí)又不影響moving fast,是一個(gè)很值得研究的話題。今后應(yīng)該不斷會(huì)有case扔出來和大家交流。


5.28攜程事故,左耳朵耗子說了段話特別有道理,結(jié)合著咱們自己的事情回顧、自夸一下 :P

技術(shù)上出故障是必然的。能否體現(xiàn)一個(gè)公司是技術(shù)公司,重要看這幾點(diǎn):1)故障的恢復(fù)是否有技術(shù)含量,2)公司對(duì)故障的處理方式,如果是通過加更多的流程,或是通過加更多的權(quán)限管控,或是通過處罰犯錯(cuò)誤的人,或是上升到員工意識(shí)形態(tài)上,而不是去用更好的技術(shù)來解決,那么這個(gè)公司不會(huì)是個(gè)技術(shù)公司。


文章末尾必須的廣告:我們?cè)谡衅福?a target="_blank" rel="nofollow">職位看這里。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,001評(píng)論 25 709
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,545評(píng)論 19 139
  • 天空里 白云鋪展開來 潔白 凈亮 是藍(lán)天的翅膀 這一切 生于天地宇宙 映入人之眼目 在心中自在飛翔 看 人兒在微笑...
    隨心Rider閱讀 164評(píng)論 0 1
  • 如果把千軍萬馬過獨(dú)木橋的高考視為攻城,那么四年的大學(xué)生活就可以說是守城了。俗話說,攻城容易守城難啊,多少曾經(jīng)成功攻...
    16aa5fab5f62閱讀 207評(píng)論 0 3
  • 如花美眷,終敵不過似水流年,江山早已為你我說定了永別——引 羽還真和風(fēng)天逸第一次相見,他十四,風(fēng)天逸十七,他為皇家...
    點(diǎn)犀閱讀 944評(píng)論 1 0

友情鏈接更多精彩內(nèi)容