#jenkins
Вопрос:
У меня есть задание Дженкинса, настроенное для опроса на предмет изменений в репозитории git каждые 10 минут. Если он не находит его (99/100 раз, вот что происходит), он рано прерывает сборку и помечает ее как НЕСТАБИЛЬНУЮ . Если он находит изменение, он проходит через него и отмечает его как УСПЕХ, сохраняя свои артефакты. Я знаю, что могу использовать плагин для удаления старых сборок, но он допускает только эти опции: как вы можете видеть, нет возможности фильтровать по статусу завершения.
В идеале я хочу удалить все, кроме последней НЕСТАБИЛЬНОЙ сборки, и сохранить все УСПЕШНЫЕ или НЕУДАЧНЫЕ сборки и их артефакты. Если это невозможно, то также сработает простое удаление всех НЕСТАБИЛЬНЫХ сборок.
Примечание: Я использую декларативный конвейер
Комментарии:
1. Какой проект вы используете-конвейерный или фристайл-проект? Если конвейер, то это декларативный конвейер или сценарий?
2. @HussainK Извините, забыл включить это. Это декларативный конвейер.
Ответ №1:
Одной из возможностей было бы отказаться от сборки программно. Получите свой объект работы с
def job = Jenkins.instance.getItem("JobName")
Поскольку вы используете декларативный конвейер, job
он имеет тип WorkflowJob
[1], и вы можете получить все его сборки с
job.getBuilds()
. Теперь вы можете проверить результат каждой сборки ( WorkflowRun
объекты [2]) и решить, хотите ли вы удалить ее или нет. Должно сработать что-то вроде следующего
def job = Jenkins.instance.getItem("JobName")
job.getBuilds().each {
if(it.result.toString() == "UNSTABLE") {
it.delete()
job.save()
}
}
Вы можете создать новое задание, которое выполняет приведенный выше код и запускается после YourJob
создания.
[1] https://javadoc.jenkins.io/plugin/workflow-job/org/jenkinsci/plugins/workflow/job/WorkflowJob.html
[2] https://javadoc.jenkins.io/plugin/workflow-job/org/jenkinsci/plugins/workflow/job/WorkflowRun.html
Комментарии:
1. Может ли этот фрагмент кода также быть включен в
post { always { } }
мой файл Дженкинса или, что еще лучшеpost { unstable { } }
, чтобы избежатьif
утверждения?2. Я еще не пробовал этого. Я не уверен, что это хорошая идея, так как это означало бы, что сборка все еще работает (
UNSTABLE
) и пытается удалить себя.