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

Я использую 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
        }

person Anand    schedule 27.09.2019    source источник


Ответы (1)


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

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

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

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

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

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

person yahavi    schedule 29.09.2019