Подтвердить что ты не робот

Как написать Pipeline, чтобы отбросить старые сборки?

Генератор синтаксиса groovy НЕ работает для этапа шага properties: Set Job Properties. Я выбрал Discard old builds, а затем введите 10 в поле Max # of builds to keep, а затем Generate Groovy и ничего не отображается.

Версия Jenkins: 2.7

4b9b3361

Ответ 1

Вы можете использовать метод properties, который, вложенный в BuildDiscarderProperty, в конце концов имеет ключ, который вы хотите установить. У меня все еще нет надежного способа поиска правильного синтаксиса каждого ключа. После долгих угадываний и проверки:

properties([[$class: 'BuildDiscarderProperty', strategy: [$class: 'LogRotator', artifactDaysToKeepStr: '', artifactNumToKeepStr: '', daysToKeepStr: '', numToKeepStr: '10']]]);

Обратите внимание, что этот фрагмент предназначен для скриптового синтаксиса.

Ответ 2

Что касается декларативного синтаксиса, вы можете использовать блок options:

pipeline {
  options {
    buildDiscarder(logRotator(numToKeepStr: '30', artifactNumToKeepStr: '30'))
  }
  ...
}

Параметры для logRotator (из исходного кода):

  • daysToKeepStr: история сохраняется только до наших дней.
  • numToKeepStr: сохраняется только это количество журналов сборки.
  • artifactDaysToKeepStr: артефакты сохраняются только до наших дней.
  • artifactNumToKeepStr: только у этого количества сборок есть свои артефакты.

Более подробную информацию можно найти в базе знаний Cloudbees и в документах для блока options.

Ответ 3

Для скриптовых конвейеров используйте:

properties([
    buildDiscarder(logRotator(daysToKeepStr: '3', numToKeepStr: '3')),
])

Ответ 4

Дженкинс имеет встроенные страницы генератора синтаксиса.

Синтаксис конвейера: генератор фрагментов
<your jenkins url>/pipeопровод-синтаксис/

Синтаксис конвейера: Генератор директив
<your jenkins url>/директива-генератор/

Discard old builds пример из Директивы Генератора discard old builds example

Ответ 5

Вадим ответил мне по какой-то неизвестной причине. Я упростил это следующим образом, и теперь он работает:

options {
    buildDiscarder(logRotator(numToKeepStr: '3'))
}

Ответ 6

  • Отменить сборку после определенного числа дней:

     options {
         buildDiscarder(logRotator(daysToKeepStr: '7'))
     }
    
  • Отменить сборку после определенного количества сборок:

     options {
         buildDiscarder(logRotator(numToKeepStr: '7'))
     }
    

Ответ 7

Если вы хотите сконфигурировать сохранение сборки на уровне задания многоблочного конвейера (vs во всех отдельных Jenkinsfile s), это тоже возможно: https://issues.jenkins-ci.org/browse/JENKINS-30519?focusedCommentId=325601&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-325601

В дополнение к BuildRetentionBranchProperty вы можете настроить любой другой из *BranchProperty здесь: https://github.com/jenkinsci/branch-api-plugin/tree/master/src/main/java/jenkins/branch

Они могут не отображаться в GUI, хотя, по крайней мере, для меня с Jenkins 2.73.2. Но вы все равно можете использовать JobDSL или изменить config.xml напрямую (я не сказал этого; -))

Ответ 8

Если вам нужен программный способ (т.е. делать это из функции, а не использовать конвейерный синтаксис options{}):

def someFunction() {
  ...
  properties([
    buildDiscarder(logRotator(numToKeepStr: '5'))
  ])
}