Как я должен убедиться, что задание проходит перед развертыванием в gitlab, когда сбой был в ci.yaml в предыдущем коммите? - PullRequest
0 голосов
/ 15 января 2020

У меня есть такая структура папок:

|
+-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 'неправильно'.

Итак:

Как мне настроить мою трубу, чтобы избежать вышеуказанной ошибки?

...