Сбор сгенерированных файлов PDB из Jenkins

У меня есть сервер сборки Jenkins, и я хотел бы сделать PDB, созданные с помощью сборки, доступными на сервере символов.

В идеале файлы PDB должны храниться, пока созданная ими сборка все еще находится в архиве, поскольку существуют разные расписания для сторонних библиотек, стабильных выпусков, ночных сборок и т. Д., И мы хотели бы сохранить отладочную информацию, по крайней мере, для этих сборки, которые мы все еще можем установить.

Мой нынешний образ мышления - это работа, которая

  1. запускается всякий раз, когда заканчивается другая работа

    • Can this be somehow made implicit, to avoid having to modify lots of different jobs; is it perhaps possible to trigger on files with an extension of *.pdb being archived as artifacts?
    • Можно ли это интегрировать с матричными сборками, если успешные подсборки уже запускают архивирование?
  2. импортирует все артефакты PDB из всех заданий

    Опять же, есть ли способ собирать PDB со всех заданий без необходимости явно настраивать список заданий, которые мы хотим собирать, чтобы избежать несогласованности?

  3. узнает, какие из них новые

    Можно ли как-то запросить это у Дженкинса (на вкладке «Изменения» перечислены измененные артефакты из связанных проектов, возможно ли каким-то образом пропустить копирование неизмененного артефакта и / или получить информацию о том, какие артефакты были изменены, на этапах сборки, чтобы мы могли избежать ненужная работа?

  4. отправляет их на сервер символов

  5. запрашивает у сервера символов существующие PDB

  6. проверяет, известны ли они как артефакты сборки

    Можно ли это сделать с помощью артефактов отпечатков пальцев? Могу ли я напрямую запросить у Дженкинса сумму MD5? Удаляются ли записи отпечатков пальцев из базы данных Дженкинса, чтобы я мог узнать, что срок действия сборки, создавшей файл, истек?

  7. истекает срок действия тех, которых нет.

Я открыт для альтернативных стратегий, если есть лучший способ сделать это.


person Simon Richter    schedule 13.09.2015    source источник


Ответы (1)


задание, которое запускается всякий раз, когда заканчивается другое задание

Я бы сохранил PDB как часть исходного задания, а не в новом задании. Хранение PDB не должно занимать слишком много времени.

импортирует все артефакты PDB из всех заданий

Я не думаю, что есть плагин, который бы управлял системной коллекцией PDB. См. Ранее: немедленно собирайте PDB.

узнает, какие из них новые

PDB будут отличаться в каждой сборке, даже если исходный код был одинаковым. Библиотеки DLL и PDB содержат информацию о временных метках.

Опять же: немедленно соберите PDB, и вы узнаете, что они новые. Нет необходимости проверять дату.

В остальном, если вы снова попытаетесь отправить ту же PDB на сервер символов, он либо отклонит ее, либо заменит идентичной версией. В обоих случаях волноваться не о чем.

отправляет их на сервер символов

да.

запрашивает у сервера символов существующие PDB

Это что-то для новой работы, например сборка ночной уборки.

проверяет, известны ли они как артефакты сборки

Учтите, что кто-то все еще работает с локальной копией ночной сборки, которая уже была удалена.

Помимо этого, у PDB есть отметка времени, и у сборки тоже есть отметка времени. Возможно, они отличаются на несколько минут, поэтому, возможно, вам нужно что-то реализовать самостоятельно. Здесь может помочь debugdir.

Только убедитесь, что вы случайно не удалили официальные выпуски. Если вы заранее знаете, что собираете официальный выпуск, вы можете, например, настроить сервер «все символы» и сервер «официальных символов».

истекает срок действия тех, которых нет.

Может быть. Пожалуйста, проверьте, стоит ли оно всех усилий. Место на диске дешевое, и вам, вероятно, не нужен сверхбыстрый диск. Возможно, вы сможете просто сохранить все версии без проблем.

person Thomas Weller    schedule 17.09.2015