Проверьте, был ли каталог загружен из кэша в Gitlab CI

#gitlab #continuous-integration

#gitlab #непрерывная интеграция

Вопрос:

Я хочу установить значение переменной в зависимости от того, была ли загрузка из кэша успешной. Я планирую установить переменную с помощью оператора if, так же, как они делают в этом примере: https://docs.gitlab.com/ee/ci/yaml/#workflowrulesvariables (Ссылка ведет не в ту часть страницы: поиск примера рабочего процесса: правила: переменные ) Если мой yaml выглядит так:

 cache:
    key: $CI_COMMIT_REF_SLUG
    paths:
    - pathtocache
 

Как я могу проверить, существует ли pathtocache?

Ответ №1:

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

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

Комментарии:

1. Есть ли что-то, что я могу поместить в yaml, или мне лучше написать скрипт на python или что-то еще, чтобы посмотреть, появился ли нужный мне каталог? Я пробую второй способ, но пока не вижу результатов.

2. К сожалению, вам лучше использовать второй способ. Вы просто ничего не можете поместить в YAML, потому что кэш никогда не загрузится до оценки ваших правил. Все, что вы бы туда поместили, имело бы 0%-ную вероятность загрузки кэша вовремя. Вы могли бы использовать «before_script», чтобы сохранить ваши сценарии python / bash отдельно от остальной части вашего скрипта.

3. В итоге я написал сценарий bash.