Как программно узнать, когда jfrog-cli пропускает уже существующий файл или артефакт при загрузке? - PullRequest
1 голос
/ 27 сентября 2019

Я использую jfrog-cli для автоматизации, которая обновляет базу данных при каждой успешной загрузке артефакта.Автоматизация написана на Perl, и она просто использует системный код завершения процесса jfrog.Проблема в том, что jfrog-cli завершается с кодом выхода 0 каждый раз, когда пропускает или успешно загружает какой-либо артефакт.

Вот псевдокод того, что я делаю -

system("jfrog rt dl --url https://$artifactory_server/artifactory --user $artifactory_username --password $artifactory_password $source $destination");
    if ($? == -1) {
            print "failed to execute: $!\n";
            # notify the failure
        }
    elsif ($? & 127) {
            printf "child died with signal %d, %s coredump\n", ($? & 127),  ($? & 128) ? 'with' : 'without';
            # notify the failure
        }
    else {
            printf "child exited with value %d\n", $? >> 8;
            # update the database
        }

1 Ответ

0 голосов
/ 29 сентября 2019

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

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

Однако JFrog CLI может регистрировать, когда пропускает загрузку файла.Одним из решений является увеличение детализации журналов и их анализ.Вы можете сделать это, установив переменную окружения JFROG_CLI_LOG_LEVEL=DEBUG и grep для этих сообщений:

[Debug] [Thread X]  File already exists locally.

Другая идея - проверить, изменилась ли временная метка файла.

Вы можете прочитать больше оОптимизация контрольной суммы CLI JFrog здесь .

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