2015-09-13 92 views
2

我有一個Jenkins構建服務器,並希望使用符號服務器上的構建生成PDB。從Jenkins收集生成的PDB文件

理想情況下,PDB文件將保留,而生成它們的構建仍然存檔,因爲第三方庫,穩定版本,夜間構建等有不同的時間表,我們希望保留調試信息至少對於那些我們仍然可以安裝的版本。

我的想法的當前行是一份工作,

  1. 開始每當另一個作業完成

    • 這個問題能以某種方式作出暗示,以避免不必修改很多不同的工作;是否可能觸發擴展名爲.pdb的文件作爲工件存檔?
    • 這是否可以與矩陣構建集成,以便成功的子構建已經觸發檔案?
  2. 進口所有PDB文物從所有工作

    再次,有沒有辦法收集來自所有作業PDBS,而無需顯式配置,我們希望從收集,以避免此成爲不一致的作業列表?

  3. 找出哪些是新

    可以這樣從詹金斯查詢某種程度上(在更改選項卡列出了引用的項目修改後的文物,是它在某種程度上可以跳過複製不變的神器,和/或獲取關於哪些文物被改變爲構建步驟,所以我們可以避免不必要的工作?

  4. 提交到這些符號服務器

  5. 查詢符號服務器現有PDBS
  6. 檢查這些是否仍然被稱爲構建的文物

    這可以使用工件指紋完成嗎?我可以直接用MD5金額查詢詹金斯嗎?指紋條目是否從Jenkins的數據庫中刪除,所以我可以發現生成該文件的版本已過期?

  7. 過期這些不是。

如果有更好的方法可以做到這一點,我願意接受其他策略。

回答

1

每當另一個作業完成

我將在PDBS存儲爲原始作業的一部分,而不是在一個新的工作時啓動工作。 存儲PDB不應該花太長時間。

進口所有PDB文物從所有工作

我不認爲這是將管理系統明智PDB收集的插件。請參閱:立即收集PDB。

找出哪些是新

PDBS將在每次構建不同,即使源代碼是一樣的。 DLL和PDB包含時間戳信息。

再次:立即收集PDB,你就會知道它們是新的。不需要日期檢查。

除此之外,如果您嘗試再次向符號服務器提交相同的PDB,它會拒絕它或將其替換爲相同的版本。在這兩種情況下都沒有什麼可擔心的。

提交到這些符號服務器

是。

查詢符號服務器現有PDBS

這是後話了一份新的工作,例如每晚清理構建。

檢查是否這些仍稱爲文物從構建

請考慮,有人仍然與已被刪除的每晚構建的本地副本工作。

除此之外,一個PDB有一個時間戳,並且該構建也有一個時間戳。也許這些差異會持續幾分鐘,所以你可能需要自己實現一些東西。 debugdir可能會在這裏幫助。

只要確保您不會意外刪除官方版本。如果您事先知道您製作了正式版本,您可以設置一個「全部符號」服務器和一個「官方符號」服務器。

過期這些不是。

也許吧。請檢查是否值得所有的努力。磁盤空間很便宜,您可能不需要超快速磁盤。也許你可以保持所有版本沒有任何問題。