Size: a a a

2021 August 19

C

Crysalis in jenkins_ru
не, ну теоретически может залезть в код дженкинса и чото подобное сделать сам
но надо ли 😂
источник

OM

Oleg Mironov in jenkins_ru
Может в лупе перехватывать экспешн на аборт?
источник

PK

Pavel Kamyshev in jenkins_ru
можно потом руки оторвать, кто джобу остановил)
источник

PK

Pavel Kamyshev in jenkins_ru
другие так не будут делать
источник

ММ

Максим Максаков... in jenkins_ru
Тогда тупой вопрос - как полученную дату отправить дженкинсу как переменную?
источник

DS

Dmitry Sergeev in jenkins_ru
def date = sh returnStdout: true, script: "your_date_script"
источник

ММ

Максим Максаков... in jenkins_ru
Спасибо. А в декларативном виде никак? Только через скрипт шаг описывать?
источник

DS

Dmitry Sergeev in jenkins_ru
хз, не пользуюсь
источник

II

Igor Ivanov in jenkins_ru
товарищи, я тут начал думать в сторону контейнеризации да configuration as code, и как-то завис в трёх соснах. Нужен взгляд со стороны

Вот я хочу описать какой-то сетап для жени. Окружение для запуска задаём докером, плагины ставим через консольную утилитку и местный requirements.txt, сам дженкинс настраиваем через jcasc.yml, джобы поднимаем через DSL-seed или JJB — само по себе это всё вроде понятно. А вот как это всё вместе на реальные юзкейсы-то накладывать?

Дженкинс как будто хочется обновлять путём подмены одной строчки FROM в докерфайле — и не терять при этом накопленный багаж логов, билдов и прочего. Значит хомяк жени должен храниться в волюме?
Но волюм при монтировании перетирает всё содержимое внутри контейнера — значит как минимум нужно плагины ставить в рантайме? Т.е. подменять entrypoint на собственный с plugins-cli plutins.txt && java ${JAVA_OPTS} ${JENKINS_OPTS} .... Плюс если по дороге нужны ещё какие-то дополнительные конфигурации (pip install --user, грубо говоря) — то это всё тоже в тот же энтрипоинт...

Но во-первых, как-то ж страшно вроде, не? Докер выворачивается наизнанку, куски сборки образа с RUN вдруг переезжают в рантайм контейнера ENTRYPOINT — это ж вроде какая-то дичь?

А во-вторых, раз уж докер — то хочется ещё и по мановению воздуха получать под руки временные тестовые инстансы, для плагинов или обновлений или ещё чего. Но это получается он будет стартовать полчаса как чёрт — пока плагинчики подтянутся, пока jcasc применится, пока джобы развернутся и ещё какая хтонь произойдёт?..

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

Уточню, что пока смотрю на дженкинс в вакууме как сервис сам в себе, без обвеса из графан-прометеев-нексусов. и как-то всё равно пока контужен и ошеломлён открывающимися горизонтами

хочется как будто поделить /var/lib/jenkins надвое — вот это незыблемая основа со всеми плагинами, конфигами, софтинками и тому подобным, — а вот это всякая юзерская придурь с джобами и билдами. Может быть тогда в волюм нужно пихать не весь хомяк, а только папку jobs/? Но это же дженкинс, он кроме той папки наверняка ещё куда-нибудь метастазирует...
источник

C

Combot in jenkins_ru
Мальвина has been banned! Reason: CAS ban.
источник

J

John Roe in jenkins_ru
источник

u

unixshaman in jenkins_ru
Я могу ошибаться, но у меня вот так работает:
в каталоге bin лежит war файл
запускается он с указанием config файла, и параметров -Djenkins.model.Jenkins.buildsDir="%devopsat_share%\jenkins_root\${ITEM_FULL_NAME}\builds" -Djenkins.model.Jenkins.workspacesDir="%devopsat_share%\jenkins_root_ws\${ITEM_FULL_NAME}\workspace", где devopsat_share - это какой-то каталог (может быть и расшаренным)

При запуске Jenkins создает каталоги с data (где создаются все файлы в соответствии с yaml конфигом) и data_tmp - куда распаковывается war-ник.

В каталоге data, должен быть каталог plugins с плагинами, чтобы при запуске Jenkins полностью взлетел сам.

Как-то так. Но это из опыта Windows. На контейнер я думаю аналогично можно сделать.

Собственно, при переносе, нужен только war-ник, плагины + строка запуска сервиса.
источник

DB

Dmitry Burmistrov in jenkins_ru
да, для дженкинса надо собирать свой имидж на базе апстримного
плагины качаем при сборке имиджа в /usr/share/jenkins/plugins
хомяк подключаем вольюмом
энтрипоинт-скрипт модифицируем:
проверяем, что в хомяке plugins/ - это симлинк. если нет - удаляем и делаем симлинк на /usr/share/jenkins/plugins
источник

DB

Dmitry Burmistrov in jenkins_ru
т.о. получаем артефакт с ядром и плагинами. обновление делается пересборкой имиджа с апдейтом FROM
источник

II

Igor Ivanov in jenkins_ru
в дженкинсе есть ручки для указания директорий? вот это поворот, надо будет поглядеть, что входит в список оных...
источник

II

Igor Ivanov in jenkins_ru
интересная задумка
источник

DB

Dmitry Burmistrov in jenkins_ru
да
источник

II

Igor Ivanov in jenkins_ru
а можно как-то JCasC упихнуть внутрь имаджа, с помощью условного RUN java plugins/jcasc.jar --convert-from config.yml --config-to config.xml? или это излишне, и конфиг как раз-таки стоит подтягивать в рантайме?
источник

DB

Dmitry Burmistrov in jenkins_ru
FROM jenkins/jenkins:lts

USER root

COPY jenkins.sh.patch /jenkins.sh.patch
COPY plugins.txt ${JENKINS_HOME}/plugins.txt

RUN git -C /usr/local/bin apply /jenkins.sh.patch && rm /jenkins.sh.patch

USER jenkins

RUN /usr/local/bin/install-plugins.sh \
   $(cat ${JENKINS_HOME}/plugins.txt)
источник

DB

Dmitry Burmistrov in jenkins_ru
как-то так
источник