Перейти к содержанию

Компоненты


Компонент CI/CD является единым модулем конфигурации конвейера предназначенный для многократного использования. Использование компонентов позволяет создать как небольшую части более крупного конвейера, так и полную конфигурацию конвейера. Использование inputs позволяет указать требуемые входные параметры, что делает использование компонентов более удобным.

Компоненты CI/CD аналогичны другим конфигурациям, добавляемым с помощью ключевого слова include, но имеют ряд преимуществ:

  • Компоненты могут быть перечислены в каталоге CI/CD.
  • Компоненты могут быть выпущены и использоваться с определенной версией.
  • В одном проекте можно определить сразу несколько компонентов.
  • Вместо создания собственных компонентов возможно использование опубликованных публичных компонентов, обладающих нужной функциональностью.

Компоненты

Проект каталог

Каталог это проект, который предназначен для хранения компонентов. Все компоненты в одном каталоге версионируются вместе. Максимально в одном каталоге допустимо создать 30 компонентов.

Для создания каталога необходимо создать обычный проект, после чего в настройках проекта, в разделе Основное изменить положение переключателя Проект каталога CI/CD. Вкладка Компоненты CI/CD станет доступной в навигационной панели проекта.

Изменения типа проекта

Для удобства рекомендуется изменить порядок разделов в навигационной панели в основном разделе настроек проекта.

Изменение навигационной панели

Создание компонента

Каждый компонент является отдельным файлом с расширением .yml, который должен располагаться в директории templates в корне проекта. Для удобства рекомендуется:

  • В корне проекта разместить README.md файл с полезной информацией о структуре компонентов, их назначении и функционировании.
  • Создать gitflic-ci.yaml для автоматического создания релизов.
├── templates/
│   └── my-component.yml
├── README.md
└── gitflic-ci.yaml

При необходимости, возможно создание поддиректорий в templates с файлами, на основе которых будут сформированы компоненты. При таком формате, название компонента будет составлено из имени поддиректории, а сам компонент может быть сформирован только из файлов с названием template.yml. Такой формат удобен, если для отдельных компонентов необходимо размещение дополнительных файлов, например Dockerfile или частный README.md.

├── templates/
│   ├── my-component.yml
│   └── my-other-component/
│       ├── template.yml
│       ├── Dockerfile
│       └── test.sh
├── README.md
└── gitflic-ci.yaml

После формирования выбранной структуры необходимо создать тег, по которому требуется создать релиз с названием, подходящим под регулярное выражение \d+\.\d+\.\d+ (например 1.0.0). После создания релиза на вкладке Компоненты CI/CD будут отображены все сформированные компоненты с инструкцией по их подключению и информацией об использованных в них inputs.

Использование компонентов

Для добавления компонента в конфигурацию конвейера необходимо воспользоваться ключевым словом include: components в следующем формате:

include:
  - component: $CI_SERVER_FQDN/{ownerAlias}/{catalogAlias}@{componentVersion}
    inputs:
      {inputsName}: {inputsValue}
Переменная пути Описание
ownerAlias Псевдоним владельца проекта-каталога
catalogAlias Псевдоним проекта-каталога
componentVersion Версия компонента
inputsName Название входных данных
inputsValue Значение входных данных

Пример:

Во владении пользователя adminuser существует проект-каталог с псевдонимом catalog-project. В этом каталоге расположен компонент my-component с версией 1.0.0:

my-component.yaml
spec:
  inputs:
    job-prefix:
      description: "Область развертывания"
      options: [ "production", "testing", "development" ]
    version:
      default: 1.0
      type: NUMBER
---

$[[ inputs.job-prefix ]]-deployment:
  image: gitflic-$[[ inputs.version ]]
  script:
    - ./$[[ inputs.job-prefix-1 ]]-deployment.sh

В другом проекте требуется добавить этот компонент в конфигурацию конвейера. Вариант добавления может выглядеть так:

gitflic-ci.yaml
include:
  - component: $CI_SERVER_FQDN/adminuser/catalog-project/my-component@1.0.0
    inputs:
      job-prefix: "testing"

build:
  stage: build
  script:
    - ./build.sh
Конфигурация после использования компонента
gitflic-ci.yaml
build:
  stage: build
  script:
    - ./build.sh

testing-deployment:
  image: gitflic-1.0
  script:
    - ./testing-deployment.sh