Архів артефактів у Дженкінсі


132

Чи могла б хтось пояснити мені ідею артефактів у процесі збирання?

У мене є каталог робочої області, де я перевіряю код для компіляції та запуску своїх скриптів мурашок тощо. Зрештою, у моєму випадку я отримую файл jar, який готовий встановити. Це вважається артефактом?

Де мені сказати сценарій складання, щоб помістити файл jar? У каталозі робочої області? Мій файл jar отримує унікальне ім'я файлу залежно від змінних, таких як BUILD_IDі такі, як я можу сказати Дженкінсу, який файл jar вибрати?

EDIT: Гаразд, тому я спробував зробити щось подібне:

введіть тут опис зображення

Шлях ще не існує в моєму робочому просторі, так як сценарій збірки передбачається створити його, і, звичайно ж , .jarі .propertiesфайли не там , тому що вони ще не були сформовані ще. Чому тоді це дає мені помилку? Здається, я щось пропускаю.

Крім того, чи видаляє Дженкінс артефакти після кожної збірки (не заархівовані артефакти, я знаю, я можу сказати, щоб вони видаляли)? Інакше він досить швидко засмітить жорсткий диск.


12
Помилка, яку ви отримуєте, швидше за все, не є проблемою - якщо процес збирання буде успішним, його слід створити. Збережіть і спробуйте це: кілька налаштованих складок під час налаштування трубопроводу є цілком нормальним. :)
Андерс Ліндаль

3
Не лякайтеся попередження, якщо артефакт буде створений після складання, він буде заархівований вашим конфігурацією (хоча на сторінці конфігурації є попередження).
Хуан Ф. Лей

Відповіді:


68

Ваше розуміння правильне, артефакт у сенсі Дженкінса є результатом побудови - наміченого результату процесу збирання.

Загальна конвенція є покласти результат збірки в build, targetабо binкаталог.

Архіватор Дженкінса може використовувати глобуси ( target/*.jar), щоб легко підібрати потрібний файл, навіть якщо у вас є унікальне ім’я на збірку.


@Andres спасибі, також, чи видаляють артефакти після кожної збірки (не заархівовані артефакти, я знаю, я можу сказати, щоб це видалити)? або я відповідальний, щоб це зробити myslef?
Майкл

6
@michael: Ви повинні очистити робочу область самостійно, добре очистити хоча б цільовий каталог перед кожною збіркою, щоб переконатися, що ви не закінчилися з результатами попередньої збірки.
Андерс Ліндаль

@Michael Ви можете додати крок "чистого" збирання. Напр. З Maven -sh 'mvn clean package'
Snowcrash

@AndersLindahl - "загальна умова - це перевести результат збірки в каталог збірки, цілі або біна". Ви посилаєтесь на каталог сміття, яким поділяються всі проекти? Як це зробити? Це дія після створення?
користувач3240688

@ user3240688 Ні, я маю на увазі цільові папки для кожного проекту. Якщо ви хочете артефакти з декількох завдань в одну загальну папку, вам доведеться опублікувати артефакти, використовуючи, наприклад, один із плагінів "Опублікувати над $ PROTOCOL".
Андерс Ліндаль

11

Артефакт може бути результатом вашого процесу збирання. Важливо те, що не важливо, для якого клієнта він був побудований, він буде переведений з робочої області назад в майстер (сервер) і зберігається там із посиланням на збірку. Перевага полягає в тому, що в такий спосіб виокремлено, вам потрібно налаштувати резервне копіювання на своєму майстрі, а також те, що всі артефакти доступні через веб-інтерфейс, навіть якщо всі клієнти побудови в автономному режимі.

Можна визначити регулярний вираз як назву артефакту. У моєму випадку я збирав усі файли, які хотів зберегти в одному файлі з постійним іменем під час збирання.


3
"Можна визначити регулярний вираз як назву артефакту. У моєму випадку я застебнув усі файли". Чи можете ви пояснити це? звучить саме те, що я хочу?
Кріс Мілберн

7

Також чи видаляє Дженкінс артефакти після кожної збірки? (не заархівовані артефакти, я знаю, я можу сказати, щоб видалити ці)

Ні, Хадсон / Дженкінс сама по собі не очищає робочу область після складання. У процесі збирання у вас можуть бути дії, які стирають, переписують або переміщують артефакти збірки з того місця, де ви їх залишили. Існує опція в конфігурації завдань, в Додаткові параметри проекту (яку потрібно розширити), що називається "Очистити робочу область перед збіркою", яка буде стерти робочу область на початку нової збірки.


1

У Jenkins 2.60.3 є спосіб видалити артефакти збірки (а не архівні артефакти), щоб заощадити на жорсткому диску місце на машині збирання. У розділі Загальні поставте прапорець "Відхилити старі складання" зі стратегією "Обертання журналу", а потім перейдіть до його додаткових параметрів. З'являться ще два варіанти, пов’язані із збереженням артефактів збірки для роботи на основі кількості днів або складок.

Налаштування, які працюють для мене, полягають у тому, щоб ввести 1 для "Максимальна кількість будівель для збереження артефактів", а потім виконати дію після збирання для архівації артефактів. Таким чином, всі артефакти з усіх збірок будуть архівовані, вся інформація з збірок буде збережена, але лише остання збірка збереже власні артефакти.

Відмовтеся від старих варіантів складання

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.