#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.