Предварительно собранный файл релиза исчезает из папки сборки между промежуточными задачами - но только внутри Jenkins - PullRequest
0 голосов
/ 07 ноября 2019

Я выполняю довольно сложную многопроектную сборку в Jenkins.

Перед сборкой задание Jenkins архивирует релиз-релиз всех источников, называемый escrow.zip, и оставляет его в папке. по имени build \ release.

Во время сборки файл escrow.zip удаляется - но только внутри Jenkins.

Это не происходит в «чистой» задаче, поскольку «clean» isnне запускаетсяДля отладки я добавил «doFirst» и «doLast», которые распечатывают содержимое каталога build \ release с помощью команды DOS для каждой задачи проекта. Задача «сборка» (которая не появляется в моем сценарии, поэтому должна быть заданием по умолчанию) «doLast» выполняется и показывает, что файл escrow.zip присутствует, но уже следующая задача «bootstrapScript» «doFirst» показывает, что файл отсутствует! Вывод (обрезанный по меткам и сводкам DOS) показан ниже.

Это происходит только в Jenkins, только после добавления новой задачи копирования:

task bootstrapScript(type: Copy) {
  from('scripts') {
    include 'bootstrap-setup.sh'
  }
  into "$rootProject.buildDir/release"
  rename('bootstrap-setup.sh',
         "bootstrap-setup-${version}.sh")
}

, поэтому я с подозрением отношусь кэта задача (Это не происходит в ветви разработки, в которой нет этой новой задачи.)

Я не могу воспроизвести ее вне Jenkins, даже в реальном рабочем пространстве Jenkins на подчиненном устройстве, которое выполняет задание. Когда я запускаю команду в интерактивном режиме в оболочке DOS, zip-файл условного депонирования не исчезает.

Мне также любопытно, почему файл исчезает между задачами, а не во время задание. Что происходит между задачами Gradle, которые могут привести к исчезновению файла?

Хотя это происходит в Jenkins, Jenkins вызывает Gradle с помощью команды gradle в «Выполнить пакетный скрипт windows» - поэтому я не верю, что существует какое-либо смешиваниеиз JVM Jenkins и Gradle - хотя, конечно, некоторые переменные среды Jenkins могут вызвать разницу.

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

00:01:06.095 > Task :buildSrc:compileJava NO-SOURCE

00:01:06.188 > Task :buildSrc:compileGroovy UP-TO-DATE
00:01:06.189 > Task :buildSrc:processResources NO-SOURCE
00:01:06.190 > Task :buildSrc:classes UP-TO-DATE
00:01:06.191 > Task :buildSrc:jar UP-TO-DATE
00:01:06.192 > Task :buildSrc:assemble UP-TO-DATE
00:01:06.192 > Task :buildSrc:compileTestJava NO-SOURCE
00:01:06.193 > Task :buildSrc:compileTestGroovy NO-SOURCE
00:01:06.193 > Task :buildSrc:processTestResources NO-SOURCE
00:01:06.193 > Task :buildSrc:testClasses UP-TO-DATE
00:01:06.194 > Task :buildSrc:test NO-SOURCE
00:01:06.194 > Task :buildSrc:check UP-TO-DATE
00:01:06.195 > Task :buildSrc:build UP-TO-DATE

00:01:07.589 
00:01:07.589 > Task :assemble
00:01:07.591  Directory of C:\jenkins\workspace\project\build\release
00:01:07.592 11/07/2019  08:27 AM         6,069,548 escrow.zip
00:01:07.594 
00:01:07.594  Directory of C:\jenkins\workspace\project\build\release
00:01:07.595 11/07/2019  08:27 AM         6,069,548 escrow.zip
00:01:07.688 
00:01:07.689 > Task :bootstrapScript
00:01:07.689  Directory of C:\jenkins\workspace\project\build\release
00:01:07.691                0 File(s)              0 bytes
00:01:07.692 
00:01:07.692  Directory of C:\jenkins\workspace\project\build\release
00:01:07.692 11/07/2019  08:27 AM             5,641 bootstrap-setup-3.3.0-SNAPSHOT.sh
00:01:07.693 

Среда - Gradle 5.6.2;Java 8u191-x64;Дженкинс 2.190.2;Windows Server 2012 R2.

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