Сборка проекта C # через SVN с использованием Jenkins - сборка завершается успешно, но где результат? - PullRequest
2 голосов
/ 25 января 2012

Я хочу создать установочный установочный файл проекта C #, используя SVN в качестве менеджера исходного кода и Jenkins в качестве инструмента CI. Я настроил jenkins, введя URL-адрес хранилища SVN. Когда я собираю проект, хотя сборка завершается успешно, я получаю 2 xml файла.

Как я могу создать установочный файл установки для этого проекта.

1 Ответ

1 голос
/ 25 января 2012

Посмотрите на консольный вывод для задания. Я подозреваю, что ваша работа создала результат, который вы ожидаете, но Дженкинс просто не представляет его вам. Вам нужно изменить задание Jenkins, чтобы сказать, что вы ожидаете получить.

Задания могут архивировать и / или считывать отпечатки пальцев с выходных файлов. Если вы измените свою работу в Jenkins, на странице настройки вы можете выбрать, какие файлы следует заархивировать. Вы должны сообщить Jenkins, где находится ваш результат сборки, например MyProject\bin\Release\*. Как только Дженкинс узнает об этом, он сохранит идентифицированные вами файлы и представит их как артефакты вывода заданий.

Затем вы можете использовать эти выходные файлы для создания устанавливаемой установки - либо вручную, либо, что более предпочтительно, в качестве другого задания Jenkin.

У вас может быть другое задание Jenkins, которое копирует артефакты из вышестоящего задания (см. Плагин CopyArtifact ), а затем создайте устанавливаемую настройку, используя ее и любой другой метод, подходящий для вашего проекта и потребностей развертывания.

В качестве альтернативы, вы можете изменить исходное задание, добавив шаг сборки, чтобы взять собранный вывод и создать установщик - но опять же вам нужно будет сказать Дженкинсу, что создаваемые файлы * .msi или * .zip и т. Д. выходной артефакт.

N.B. Отпечатки пальцев - это метод, который Дженкинс использует для хранения хеша ключевых файлов заданий и отслеживания, какие версии каких файлов и где использовались. Например. если JobA создает файл MyProject.dll, это означает, что вы можете сказать, что JobB build123 использовал dll из JobA build5.

Обычно я архивирую все выходные данные сборки (* .dll, * .exe, * .msi и т. Д.) И приказываю Дженкинсу снять отпечатки всех архивных артефактов.

EDIT:

В настоящий момент у меня есть только легкий доступ к серверу Hudson v1.386 (т.е. версии до разделения Hudson / Jenkins), так что это может незначительно отличаться от версии Jenkins.

Сначала перейдите на страницу соответствующего задания в Jenkins и нажмите на ссылку Workspace слева. Это должно позволить вам увидеть все файлы в рабочей области, то есть все, что было извлечено и собрано после завершения последней сборки. Убедитесь, что ожидаемые выходные файлы есть. Если нет, у вас есть проблема с вашими шагами сборки, не генерирующими ожидаемый результат. Исправьте это сначала.

Как только вы получите ожидаемый результат, вы можете попросить Jenkins архивировать эти выходные файлы после каждой сборки. На странице конфигурации задания есть раздел, озаглавленный Действия после сборки . Второй вариант здесь - «Архивировать артефакты», установите этот флажок. Затем в поле «Файлы в архив» поместите список файлов, которые вы считаете своими. Например, я поставил **/Release/*.msi, **/bin/Release/*, Database/Scripts/*.sql.

Я также включил параметр «Записывать отпечатки файлов для отслеживания использования», а затем «Отпечатывать все архивные артефакты»

Сделав это, нажмите Сохранить внизу, а затем запустите сборку. После того, как сборка завершена, вы должны увидеть в нижней части консоли вывод что-то вроде:

Архивация артефактов
Запись отпечатков пальцев

Страница проекта должна иметь ссылку Last Successful Artifacts , а сборки (с этого момента) будут иметь ссылку Artifacts .

Эти ссылки покажут список заархивированных файлов и позволят вам загрузить их. Я верю, что это то, что вы после.

Я бы также посоветовал взглянуть на этот вопрос для получения дополнительной информации: Архив артефактов в Гудзоне-Дженкинсе

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...