Запуск запускаемых заданий Gitlab только в определенные дни

# #gitlab

Вопрос:

У меня есть следующая проблема:

У меня есть запланированный конвейер git, который запускается каждый рабочий день утром. Этот трубопровод запускает другие трубопроводы других проектов. Задания определены в нескольких файлах gitlab.yml в соответствующих проектах. Для лучшего понимания приведем минимальный пример только с одним запущенным заданием:

 main job:
  trigger: child job


child job:
  // Do something here
 

Теперь дело в том, что это запущенное дочернее задание разрешено запускать только в определенные дни. В нашем случае это означает, что дочерняя работа не может выполняться по понедельникам.

У меня уже была идея выделить в основном задании, в какой день должно быть выполнено дочернее задание, указать дочернему заданию переменную и проверить данную переменную only except тегами или. Но, похоже, не так просто получить текущий рабочий день в gitlab.yml. Или я здесь ошибаюсь?

Есть ли способ достичь этого?

ОБНОВЛЕНИЕ @KamilCuk заставило меня понять, что я упустил важный аспект в вопросе. Когда дочернее задание выполняется самостоятельно, оно должно выполняться без каких-либо помех (также в понедельник), если это возможно. При срабатывании по основному заданию должна применяться проверка.

Ответ №1:

Самое простое-просто проверить это на работе.

 child job:
  script:
    - weekday=$(LC_ALL=C date  %a)
    - case "$weekday" in
      Mon) echo "Not running on monday"; exit 0; ;;
      esac
    - rest of the job
 

Вы можете запустить задание через API. https://docs.gitlab.com/ee/api/pipeline_triggers.html https://docs.gitlab.com/ee/ci/triggers/index.html

 main job trigger child job:
  script:
    - weekday=$(LC_ALL=C date  %a)
    - case "$weekday" in
      Mon) echo "Not running on monday"; exit 0; ;;
      esac
    - curl
      -H "Authorization: Bearer somethingosmething" 
      $CI_GITALB_URL/.../api/4/....
      trigger child job
 

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

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