2015-07-13 7 views
1

Я пытаюсь использовать плагин Publish Over SSH для публикации многих видов артефакта сборки на внешний сервер. Примерами артефактов сборки являются скомпилированные сборки, выход XML из тестирования и вывод JSON из linting.Jenkins: Опубликовать через SSH после неудачной сборки

Если тестирование или перевязка приводит к ошибкам, сборка завершится ошибкой или будет нестабильной. В случае неудачной сборки, Публикация через SSH плагин не будет копировать сборки артефактов, запись в консоли:

SSH: Current build result is [FAILURE], not going to run. 

Я не вижу причин, почему я не хотел бы опубликовать эту информацию, если она существует, и я хотел бы продолжать сообщать об ошибках как сбоях сборки. Итак, есть ли способ заставить Дженкинса публиковать артефакты сборки, даже если задание помечено как сбой?

Я думал, что могу использовать Flexible Publish, чтобы заставить это, обернув публикацию по SSH в состоянии «всегда», но это дало такой же результат, как и при сбое сборки.

Я могу думать о нескольких обходных:

а) сохранить статус сборки в переменной окружения; заставить статус УСПЕХА; выполнить шаг публикации; восстановить статус сборки из переменной окружения с помощью java jenkins-cli.jar set-build-status $STORED_STATUS

ИЛИ

б) Написать Баш скрипт для выполнения шага публикации вручную с помощью SSH, вырезая Публикация через SSH плагин вообще

Перед тем, как двигаться вперед с любым из этих решений (ни один из которых мне не нравится), есть ли какая-то конфигурация, которую мне не хватает?

+0

Я работал над этой проблемой, используя второй вариант, который я предписал выше. Простая команда 'rsync' в задаче Post Script в моей работе Jenkins. Если никто не может предложить исправление для плагина, я добавлю это как ответ через несколько дней. – laffoyb

ответ

1

Решение, которое я в конечном итоге использовал, состояло в использовании rsync/ssh для копирования файлов вручную с использованием сценария пост-сборки. Я настроил это в моем Jenkins Job Builder YAML следующим образом:

- publisher: 
    name: publish-to-archive 
    publishers: 
     - post-tasks: 
      - matches: 
       - log-text: ".*" 
       script: | 
        ssh -i ${{HOME}}/.ssh/id_rsa [email protected] "mkdir -p {archive_path}" 
        rsync -Pravdtze "ssh -i ${{HOME}}/.ssh/id_rsa" {source_path} [email protected]:{archive_path} 
2

Цитирование старый прогул на jenkinsci-users:

Как я могу заставить Опубликовать За SSH работать даже если сборка была отмечена провал?

Использование "Отправка файлов или выполнять команды через SSH после сборки трасс" в
разделе конфигурации "Построение среды"

Конфигурация Работа/Build Environment/Отправка файлов или выполнять команды через SSH после строящие работы

вместо использования пост-сборки или строительной площадки.

+0

Ха-ха, я задал этот вопрос в списке рассылки jenkinsci-users. Я собирался добавить ответ, предоставленный старым крючком, здесь для справки для кого-то еще, который может искать то же самое.Я не использовал это решение в конце, так как он не поддерживается Jenkins Job Builder (AFAICT), поэтому он не подходит для моих целей. – laffoyb

Смежные вопросы