У меня есть такая структура папок:
|
+-my_python_folder/
+-my_other_python_folder/
+-ci/
У меня есть yaml, который выглядел примерно так:
my_job:
stage: test
only:
changes:
my_python_folder/*
script:
- ci/ci_file_i_deleted.sh
- pytest ...
Я запустил задание в первый раз, после внесения изменений в файл в my_python_folder/*
. В конвейере произошел сбой, потому что я сам удалил ci/ci_file_i_deleted.sh
, но забыл удалить его из .gitlab-ci.yaml
.
Затем я удалил эту строку из .gitlab-ci.yaml
, чтобы она выглядела так:
my_job:
stage: test
only:
changes:
my_python_folder/*
script:
- pytest ...
Поскольку изменение в my_python_folder
происходит в коммите с до , my_job
не выполнялся в секунду времени, когда я запускаю канал. Поэтому, когда я повторяю конвейер, задание не выполняется и фактически никогда не "проходит", а затем переходит к развертыванию.
У меня есть несколько идей о как чтобы справиться с этим, но я не уверен, что имеет смысл:
- добавить любые изменения в папку
ci/
в условия для запуска задания - это означает, что рабочие места будут работать больше. Если каждое задание зависит от изменений в папке CI, каждое задание будет запускаться каждый раз, когда происходят какие-либо изменения. Это кажется чрезмерным?
- переместить все так, чтобы каждое задание зависело только от того, что находится внутри соответствующей папки
- это будет дублировать код, есть некоторые общие биты, которые я могу повторно использовать в нескольких заданиях
- есть ли некоторая проверка linting / pre-commit, которая проверит, не совершил ли я такую ошибку, и пометит ее мне до I вызвать канал?
Могут быть и другие соображения, о которых я не задумывался, включая то, что я просто использую gitlab 'неправильно'.
Итак:
Как мне настроить мою трубу, чтобы избежать вышеуказанной ошибки?