Есть ли способ выполнить этап предварительной проверки в декларативных конвейерах Jenkins?

Декларативные конвейеры Jenkins предлагают директиву post для выполнения кода после завершения этапов. Есть ли что-то похожее для запуска кода перед запуском этапов, и, самое главное, перед проверкой SCM?

Например, что-то вроде:

pre {
    always {
        rm -rf ./*
    }
}

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

3 ответа

pre это классная идея, но пока не существует. skipDefaultCheckout а также checkout scm (это то же самое, что и проверка по умолчанию):

pipeline {
  agent { label 'docker' }
  options {
    skipDefaultCheckout true
  }
  stages {
    stage('clean_workspace_and_checkout_source') {
      steps {
        deleteDir()
        checkout scm
      }
    }
    stage('build') {
      steps {
        echo 'i build therefore i am'
      }
    }
  }
}

На данный момент нет pre-buildшаги, но для той цели, которую вы ищете, это можно сделать в конфигурации задания конвейера, а также в заданиях многоотраслевого конвейера, когда вы определяете, где находится ваш файл jenkins, выберите Дополнительные поведения -> Удалить репозиторий и принудительно клонировать.

Удалите содержимое рабочего пространства перед построением, чтобы обеспечить полностью свежее рабочее пространство.

Если вы действительно не хотите удалять все и сохранять некоторое использование сети, вы можете просто использовать эту другую опцию: Дополнительные действия -> Очистить перед оформлением заказа.

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

Это не удалит рабочую область, а просто вернет репозиторий в исходное состояние и подтянет новые изменения, если таковые имеются.

Я использую "Подготовить среду для запуска / Содержимое скрипта"

Другие вопросы по тегам