在將項目集成到 Jenkins 後,經常會出現不穩定的構建,Jenkins 控制台輸出的錯誤信息為: Gradle build daemon disappeared unexpectedly (it may have been killed or may have crashed) 。 經過調查,問 ...
在將項目集成到 Jenkins 後,經常會出現不穩定的構建,Jenkins 控制台輸出的錯誤信息為:Gradle build daemon disappeared unexpectedly (it may have been killed or may have crashed)。
經過調查,問題可能出在 ./gradlew assembleDebug 這條命令上。
通過查看Gradle的官方文檔,得知從 Gradle 3.0 開始,Daemon 便預設開啟的。它是一個長時間運行的後臺進程,作用是在記憶體中存儲構建信息,以便在之後的構建過程中復用信息提高構建速度。
但是在文檔中,也提到一句:If you run CI builds in ephemeral environments (such as containers) that do not reuse any processes, use of the Daemon will slightly decrease performance (due to caching additional information) for no benefit, and may be disabled. 大概的意思是如果通過CI(持續集成)進行項目構建,Daemon 就沒多大作用了,反倒會因為存儲額外的信息而降低系統性能,從而導致被停用。
那麼,如何在 Jenkins 里停止使用 Daemon 呢?
很簡單,如下:
./gradlew --no-daemon assembleDebug
在命令裡加入一個 --no-daemon 參數就好啦。