#jenkins #jenkins-pipeline
#дженкинс #дженкинс-конвейер
Вопрос:
Я пытаюсь написать jenkinsfile из моего приложения javascript. можно ли разобрать jenkinsfile, чтобы я мог добавлять изменения в существующий jenkinsfile. Или можно создать новый с помощью любого пакета npm или стороннего инструмента?
Комментарии:
1. Мне кажется маловероятным. Это было бы очень сложно для небольшого / узкого использования. Либо ваше приложение может разрешить некоторые минимальные модификации одного или нескольких предопределенных файлов Jenkins путем заполнения заполнителей, либо это может быть в основном текстовый редактор. Зачем вам это нужно? Вы смотрели на графический редактор в BlueOcean? Если вы все еще хотите продолжить работу, jobdsl в сочетании с jenkins в качестве серверной части может оказаться полезным.
2. да, я хочу небольшие изменения в предопределенном Jenkinsfile. Я пытаюсь использовать один Jenkinsfile для более чем одного репозитория, изменив URL-адрес git в предопределенном Jenkinsfile в моем приложении javascript. Например, у меня есть 2 приложения react на Github. Теперь, когда я даю URL-адрес репозитория моему приложению javascript. Он собирается создать Jenkinsfile для этого репозитория give react путем изменения предопределенного git-блока Jenkinsfile. Пожалуйста, помогите мне. Если есть какой-либо инструмент или пакет npm для такой цели 🙂
Ответ №1:
Поскольку вы хотите повторно использовать один и тот же конвейер только для нескольких проектов, я бы рекомендовал вам сделать репозиторий параметром вашего конвейера.
Если вы хотите запустить его вручную, вы можете установить другое значение по умолчанию для каждого задания.
Если вы хотите запустить его через веб-хук (например, с github), Обычно в полезную нагрузку триггера включается некоторая информация (включая URL репозитория, информацию о ветке и т. Д.). Лично я использую для этого универсальный плагин запуска Webhook с JsonPaths, но вы также можете найти плагин github более полезным.
Просто храните Jenkinsfile в одном центральном месте.
В качестве альтернативы вы можете использовать инструменты командной строки, такие как sed, для замены заполнителя в общем конвейере (что-то вроде%REPO_URL% ) или написать свою собственную маленькую функцию replaceStringInFile в node (но я уверен, что что-то подобное уже должно быть). Но я бы не рекомендовал этот подход, поскольку он приводит к дублированию кода и различным версиям повсюду.
Комментарии:
1. ваш ответ помогает мне решить мою проблему Спасибо!