Компоненты
Компонент 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:
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
В другом проекте требуется добавить этот компонент в конфигурацию конвейера. Вариант добавления может выглядеть так:
include:
- component: $CI_SERVER_FQDN/adminuser/catalog-project/my-component@1.0.0
inputs:
job-prefix: "testing"
build:
stage: build
script:
- ./build.sh
Конфигурация после использования компонента
build:
stage: build
script:
- ./build.sh
testing-deployment:
image: gitflic-1.0
script:
- ./testing-deployment.sh


