llvm-cov не может создать отчет при запуске в облаке GitLab CI - PullRequest
1 голос
/ 08 февраля 2020

Я выполняю следующую команду llvm-cov report (которая поставляется как часть наборов инструментов Swift) в Docker изображениях (swift:5.1) в различных средах.

BINARY_PATH="..."
PROF_DATA_PATH="..."
IGNORE_FILENAME_REGEX="..."

llvm-cov report \
   $BINARY_PATH \
   --format=text \
   -instr-profile="$PROF_DATA_PATH" \
   -ignore-filename-regex="$IGNORE_FILENAME_REGEX"

Когда docker изображение размещено на любом компьютере, кроме облака GitLab docker бегунов, я получаю ожидаемый результат покрытия кода:

Filename                                      Regions    Missed Regions     Cover   Functions  Missed Functions  Executed       Lines      Missed Lines     Cover
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
ChannelHandlers/RedisByteDecoder.swift              5                 0   100.00%           3                 0   100.00%          10                 0   100.00%
ChannelHandlers/RedisCommandHandler.swift          15                 5    66.67%           8                 3    62.50%          45                11    75.56%
ChannelHandlers/RedisMessageEncoder.swift           3                 1    66.67%           3                 1    66.67%          13                 6    53.85%
Commands/BasicCommands.swift                       28                 4    85.71%          16                 2    87.50%          99                 7    92.93%
Commands/HashCommands.swift                        38                 4    89.47%          29                 1    96.55%         156                 1    99.36%
Commands/ListCommands.swift                        56                 8    85.71%          48                 5    89.58%         217                11    94.93%
Commands/SetCommands.swift                         46                12    73.91%          30                 4    86.67%         147                 4    97.28%
Commands/SortedSetCommands.swift                  172                19    88.95%         105                 6    94.29%         555                18    96.76%
Commands/StringCommands.swift                      23                 2    91.30%          21                 1    95.24%         100                 1    99.00%
Extensions/StandardLibrary.swift                   10                 2    80.00%           6                 1    83.33%          21                 1    95.24%
Extensions/SwiftNIO.swift                           9                 1    88.89%           7                 0   100.00%          38                 1    97.37%
RESP/RESPTranslator.swift                          69                 7    89.86%          10                 2    80.00%         172                10    94.19%
RESP/RESPValue.swift                               39                11    71.79%          14                 3    78.57%          69                17    75.36%
RESP/RESPValueConvertible.swift                    52                19    63.46%          15                 3    80.00%          99                22    77.78%
RedisClient.swift                                   2                 0   100.00%           2                 0   100.00%           7                 0   100.00%
RedisConnection.swift                              72                23    68.06%          47                10    78.72%         228                31    86.40%
RedisErrors.swift                                  12                 4    66.67%           6                 1    83.33%          23                 3    86.96%
RedisKey.swift                                     15                 9    40.00%          12                 6    50.00%          38                20    47.37%
RedisMetrics.swift                                  9                 2    77.78%           9                 2    77.78%          23                 2    91.30%
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
TOTAL                                             675               133    80.30%         391                51    86.96%        2060               166    91.94%

Однако, когда те же самые docker изображения, выполняющие те же команды, размещаются с Облачные раннеры GitLab:

 Filename                      Regions    Missed Regions     Cover   Functions  Missed Functions  Executed       Lines      Missed Lines     Cover
 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 TOTAL                               0                 0         -           0                 0         -           0                 0         -

Я проверяю, что данные покрытия кода корректно предоставляются диспетчером пакетов Swift через ls -l и в каждой среде (включая GitLab CI) Я получаю:

Profdata:  -rw-r--r--. 1 root root 575608 Feb 8 19:51 .build/x86_64-unknown-linux/debug/codecov/default.profdata
Test binary:  -rwxr-xr-x. 1 root root 16309424 Feb 8 19:51 .build/x86_64-unknown-linux/debug/redi-stackPackageTests.xctest

Это также случается с LLVM-8 и LLVM-9 (корабли LLVM-7 со Swift 5.1)

Для жизни я не могу понять почему.

Среды, которые я тестировал (все работают Docker Engine 19 +):

+----------------+-----------------+----------------+-------------------+
|                |                 |                |                   |
|      HOST      |       OS        |      CPU       | Generates Report? |
|                |                 |                |                   |
+-----------------------------------------------------------------------+
| iMac 2011      | High Sierra     | sandybridge    |        YES        |
+-----------------------------------------------------------------------+
| MBP 2019       | Catalina        | skylake        |        YES        |
+-----------------------------------------------------------------------+
| mac mini 2018  | Catalina        | skylake        |        YES        |
+-----------------------------------------------------------------------+
| GitHub Actions | 'ubuntu|latest' | skylake|avx512 |        YES        |
+-----------------------------------------------------------------------+
| GitLab CI      | 'tags: docker'  | haswell        |        NO         |
+----------------+-----------------+----------------+-------------------+
...