鑑於:使用Jenkins,Perforce和Ant,我如何只對自上次綠色構建以來發生更改的文件運行PMD?
如何優化我們的構建,以便在運行PMD時,它只針對自上次構建綠色以來已修改的文件運行。
備份有點...我們需要PMD 3-4分鐘,以防止〜150萬行代碼運行,如果發現問題,報告不約而同內存用完它完成之前。我希望能夠縮短我們編譯時間的幾分鐘,並獲得關於失敗的良好報告。我原來的做法是,我會:
- 從詹金斯
- 運行PMD得到更改列表針對列表的工會和pmd_failures.txt的內容
- 如果PMD失敗,包括列表pmd_failures.txt中的失敗文件
比我想要的更復雜,但值得擁有更快但仍然可靠的構建。
一旦我意識到詹金斯不會輕易給我想要的東西,我意識到還有另一種可能的方法。我們標註每一個綠色建築。我可以簡單地獲取自標籤以來更改的文件列表,然後我可以完全取消pmd_failures.txt。
沒有骰子。越來越標籤以來XXXX改變從Perforce的文件列表的想法似乎從來沒有從精簡:
$ p4 files //path/to/branch/[email protected] > label.out $ p4 files //path/to/branch/[email protected] > now.out $ diff label.out now.out
惱人的,但更重要的還要慢於我們的許多成千上萬的文件,不是簡單地運行PMD。
所以現在我期待到試圖與其他建立的東西,它仍然是浪費時間和資源,使我們構建更復雜的並行運行PMD。在我看來,我不能輕易地從Jenkins或Perforce獲取已更改文件的列表。是否有其他人找到了解決這些問題的合理解決方法?