aosp 本地版本管理_谈 DevOps 平台实施:我在本地跑明明成功的,为什么在你平台跑就报错?...
我在本地跑明明成功的,為什么在你平臺跑就報錯?
用戶在 Jenkins 上跑構建時,失敗了,把日志截圖給我看,如下圖:
在過去幾個月,每個星期都會有一兩個 Jenkins 用戶就會給我發送類似的錯誤日志。
這樣的日志,我通常回:請檢查你們的依賴,是不是有依賴沒有上傳到咱們的 Nexus 倉庫。驗證方法是先在本地刪除你的 .m2 目錄,然后再執行一次構建。
當用戶業務開發比較急的時候,他們還會說本文標題中的那句話。有些抱怨的意思。我都已經習慣了。
出現這樣的情況,我總結大概會有以下原因:
用戶對于 Maven 這類構建工具不熟悉。
用戶對于依賴管理不重視,或者沒有依賴管理的意識。
用戶根本不看日志。
面對這三個原因,我就在思考:我們 DevOps 平臺能做些什么呢?
我覺得 DevOps 平臺是不是可以直截了當地告訴用戶:
xxx 依賴在 Nexus 倉庫(maven.abc.com)中沒有找到,請您先 deploy 該依賴到 Nexus 倉庫后,再執行此任務。
如果能檢測到缺少的依賴放在哪個代碼倉庫就更好了。因為這樣,就可以提示用戶直接到該代碼倉庫的 deploy 了。
這樣的技術,我稱為依賴AI管理技術(笑)。當然,這樣的技術,應該可以應用于所有的語言。
同時,我們將這些數據(依賴管理失誤)統計起來,就可以看出一個團隊在依賴管理方面的能力表現了,進而可以有效的對團隊進行培訓,以提高相應的能力。
回到本文主題,當用戶自行檢查依賴后,大多數時候,用戶就不會來找我了,因為問題已經解決了。可是有一次,用戶還是說不行,他已經把 .m2 刪除,并把依賴包上傳到 Nexus 倉庫了。
我檢查了他的 pom.xml 文件,發現版本號的定義也是正確的。可是,放在 Jenkins 上執行時,使用的還是舊版本的類的定義。
這就奇怪了。這種情況還是頭一回遇到。來來回回檢查了好幾次,查了好久才知道,是因為用戶 deploy 依賴到 Nexus 時,deploy 的是相同的版本號,就是覆蓋了原來的版本的包,但是版本沒有升級。而 Maven 檢測到本地就該版本的依賴,就不會重新下載了。最后,就是大家看到的,本地可以,但是 Jenkins 上就是不行。
最后的解決方式是:
用戶 deploy 一個新的版本到 Nexus 倉庫,并在 pom.xml 中使用新的版本。
我們將 Nexus 設置為不允許重復 deploy。
小結
經過這次事件,我們可以看出,依賴管理對于工程質量的重要性。因為,依賴管理不當,很有可能在連開發人員都不知情的情況下引入Bug。
而 DevOps 平臺能實現依賴AI管理技術將有效的提升工程質量。
END
總結
以上是生活随笔為你收集整理的aosp 本地版本管理_谈 DevOps 平台实施:我在本地跑明明成功的,为什么在你平台跑就报错?...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021五大银行哪个理财最好?五大银行是
- 下一篇: 多线程和单线程 打印数字到100000