Воспроизводимая сборка проекта Spring Boot с использованием Gradle - PullRequest
0 голосов
/ 19 сентября 2019

Я работаю над созданием воспроизводимой сборки для проекта на основе Spring Boot (v2.1.3), для которого я использую gradle (v5.3) в качестве инструмента сборки.

К сожалению, когда я собираюпроект - с использованием задачи bootJar - на двух разных серверах сборки, MD5 результирующих исполняемых JAR-файлов не совпадают.

Обратите внимание, что я использую блокировку версии и включаю следующий пунктв моем файле build.gradle:

tasks.withType(AbstractArchiveTask) {
    preserveFileTimestamps = false
    reproducibleFileOrder = true
}

Если я выполню ' jar tvf myjarfile.jar ' для файла JAR, созданного на сервере сборки A, и для файла JAR, созданного на сервере сборкиВ, результаты совпадают.

Далее, если я разархивирую два jar-файла и сравню значения MD5 для каждого из соответствующих файлов в этих архивах, эти значения также совпадут.

Что,затем создает несоответствие и как я могу предотвратить или иным образом обойти это?

Если я сравниваю hexdumps двух файлов JAR, я замечаю, что все различия происходят в последней частифайлы.Вот фрагмент из вывода дифоскопа:

019c06a0: 4b01 0042 4f4f 542d 494e 462f 6c69 622f  K..BOOT-INF/lib/
 019c06b0: 504b 0102 1403 1400 0808 0800 0000 4100  PK............A.
 019c06c0: ac57 40fe 7200 0000 8200 0000 1400 0000  .W@.r...........
 019c06d0: 0000 0000 0000 0000 a481 a54b 0100 4d45  ...........K..ME
 019c06e0: 5441 2d49 4e46 2f4d 414e 4946 4553 542e  TA-INF/MANIFEST.
 019c06f0: 4d46 504b 0102 1403 1400 0808 0800 0000  MFPK............
 019c0700: 4100 604b eb66 7700 0000 ac00 0000 2000  A.`K.fw....... .
-019c0710: 0000 0000 0000 0000 0000 f881 594c 0100  ............YL..
+019c0710: 0000 0000 0000 0000 0000 b481 594c 0100  ............YL..
 019c0720: 424f 4f54 2d49 4e46 2f63 6c61 7373 6573  BOOT-INF/classes
 019c0730: 2f61 7070 6c69 6361 7469 6f6e 2e79 6d6c  /application.yml
 019c0740: 504b 0102 1403 1400 0808 0800 0000 4100  PK............A.
 019c0750: e4ce f547 e304 0000 1123 0000 2200 0000  ...G.....#.."...
-019c0760: 0000 0000 0000 0000 f881 1e4d 0100 424f  ...........M..BO
+019c0760: 0000 0000 0000 0000 b481 1e4d 0100 424f  ...........M..BO
...