У меня есть конфигурация GitLab CI, которая выглядит примерно так:
build:
stage: build
image: my_image:latest
script:
- /var/scripts/build_python_package.sh
Это очень просто по своей конструкции - идея в том, что любой в нашей организации может создать новый репозиторий, содержащий пакет Python, поместите этоминимальный .gitlab-ci.yml
конвейерный конфиг в нем, и это позволяет нашему «стандартному процессу» для сборки и тестирования пакетов Python, ветки develop
и master
публикуются в наших репозиториях артефактов (в Nexus) и т. д.
Теперь я хотел бы добавить еще кое-что к этой настройке, например,
- кэширование зависимостей пакетов, установленных с помощью
pip
или для более быстрого времени сборки (на самом деле это не большая проблема для Python,но у нас также есть R-пакеты, использующие аналогичную настройку, и R-пакеты всегда собираются из исходного кода, поэтому время сборки очень и очень долго.) - обозначение каталога для артефактов (удобно, когда не в
develop
или master
но вы все еще хотите сделать доступным артефакт пакета)
Кажется, для этого нужно пройти через всефайлы .gitlab-ci.yml
в различных проектах для добавления записей, таких как cache
или artifacts
в конфигурацию CI - но это нежелательно, потому что у нас есть десятки таких проектов, имы хотим, чтобы они получали улучшенное поведение, не обновляя каждый проект каждый раз, когда мы вносили улучшения в наш стандартный процесс сборки.
В идеале, у нас был бы сценарий build_python_package.sh
, который как-то сообщал бы GitLab об этих фактах.Например, «Я только что создал артефакты в этом каталоге» или «Я скачал / собрал некоторые пакеты зависимостей, и они должны быть кэшированы».Возможно ли это сделать?
Если это не удастся, есть ли способ «импортировать» общую конфигурацию во все наши файлы конфигурации пакета, чтобы мы могли поддерживать конфигурацию централизованно, а не распространять одинаковую конфигурацию по многим проектам?