GitLab: влияет на конфигурацию задания из скрипта задания - PullRequest
0 голосов
/ 23 октября 2018

У меня есть конфигурация 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 об этих фактах.Например, «Я только что создал артефакты в этом каталоге» или «Я скачал / собрал некоторые пакеты зависимостей, и они должны быть кэшированы».Возможно ли это сделать?

Если это не удастся, есть ли способ «импортировать» общую конфигурацию во все наши файлы конфигурации пакета, чтобы мы могли поддерживать конфигурацию централизованно, а не распространять одинаковую конфигурацию по многим проектам?

1 Ответ

0 голосов
/ 23 октября 2018

Я предполагаю, что вы используете GitLab Premium, в этом случае вы можете использовать общедоступный репозиторий в качестве репозитория центральной конфигурации, а затем включить туда то, что вам нужно.

Единственные недостатки, которые я вижу: - Публичный репозиторий, доступный для чтения любому сотруднику вашей организации - Если код в общедоступном репозитории поврежден, то все конвейеры, которые его используют, повреждены

Имеютвзгляд на https://docs.gitlab.com/ee/ci/yaml/#include

...