как сохранить рабочее пространство сборки jenkins без stash/unstash

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

stage('one'){
   node { ... }
}
// free up the executor if many other builds are running
stage('two'){
   node { ... }
}

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

Теперь наша проблема в том, что с несколькими блоками узлов документация говорит, что вы должны тайник/unstash, чтобы сохранить результаты, полученные в последней рабочей области. Теперь наша рабочая область содержит много файлов, для хранения/удаления которых требуется от 5 до 10 минут, что убивает все остальные приросты производительности.

Есть ли способ эффективно зарезервировать последнее рабочее пространство до завершения сборки. Просто оставаться на том же узле не помогает, так как одновременно запущенная сборка может быть назначена той же рабочей области, если старая сборка просто приостановлена.

def nodeName
stage('one'){
   node {
       nodeName = "${NODE_NAME}"
   }
}
stage('two'){
   node(nodeName) { 
       // this is the same node but another workspace
   }
}

Единственный способ принудительно использовать рабочую область, который я видел, — это либо внешний менеджер рабочей области плагин или ws< /а> шаг. Но тогда я потеряю функцию автоматического перемещения по умолчанию для параллельных сборок, и мне придется самому позаботиться об очистке, поскольку эти рабочие области не удаляются при удалении сборки.

Любые идеи, как сохранить рабочее пространство даже после выхода из узла?


person dag    schedule 24.01.2018    source источник
comment
Я столкнулся с той же проблемой, и я уже использовал шаг ws в качестве решения. Это stackoverflow.com/questions/33282783/preserve-jenkins-workspace может оказаться полезным.   -  person np2807    schedule 22.03.2021