Пользовательские скрипты


Введение

Пользовательские скрипты - инструмент для создания самописных скриптов, выполняемых в GitFlic и взаимодействующий с его сущностями. Скрипты выполняются на JavaScript стандарта ECMAScript версии 2022-го года. Благодаря данной функции, команды разработки самостоятельно могут создавать интеграции со сторонними инструментами и сервисами, настраивать автоматизацию внутри GitFlic по своим сценариям.

Ещё одна ценность инструмента - открытый исходный код интеграций. Чтобы интегрировать свой развёрнутый GitFlic, достаточно скопировать из репозитория с интеграциями нужные файлы и добавить их через интерфейс. Это не требует сложных конфигураций, развёртывания или взаимодействия с REST-API GitFlic.

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

Взаимодействие с сущностями происходит через сервисы - объекты с набором методов, позволяющих создавать новые, изменять или получать уже имеющиеся сущности в GitFlic. Для того, чтобы лучше понимать, что принимают и возвращают сервисы, даётся определение нескольких классов:

Объект страницы содержит в себе следующие данные:

class Page<T> {...}
Название Тип данных Описание
page number Номер текущей страницы
size number Число элементов на текущей страницы
pageSize number Максимальный число элементов на страницы
totalPages number Всего страниц
totalElements number Всего элементов
elements T[] - массив сущностей Список элементов

Сущности, с которыми возможно взаимодействие:

Лейбл

Для взаимодействия с лейблами определен объект labelService

Сущность лейбл содержит в себе следующие данные:

class Label {...}
Название Тип данных Описание
id string UUID лейбла
projectId string UUID проекта, в котором находится лейбл
value string Название лейбла
description string Описание лейбла
hexColor string Код цвета лейбла в формате HEX

Методы для работы с лейблами

Для работы с сущностью лейбл существуют следующие методы:

Создание лейбла

labelService.create(toCreate: Label) => Label

Необходимо передать следующие значения в методе

Название Тип данных Описание
projectId string UUID проекта, в котором будет создан лейбл
value string Название лейбла
description string Описание лейбла
hexColor string Код цвета лейбла в формате HEX

Изменение лейбла

labelService.edit(toEdit Label) => Label

Необходимо передать следующие значения в методе

Название Тип данных Описание
id string UUID лейбла
projectId string UUID проекта, в котором будет изменен лейбл
value string Необязательный параметр. Название лейбла
description string Необязательный параметр. Описание лейбла
hexColor string Необязательный параметр. Код цвета лейбла в формате HEX

Получение списка всех лейблов

labelService.getAll(...) => Page<Label>

Необходимо передать следующие значения в методе

Название Тип данных Описание
projectId string UUID проекта, в котором будет осуществлен поиск
startPage number Номер запрашиваемой страницы
pageSize number Размер страницы

Получение списка лейблов по UUID

labelService.findAllByIds(projectId: string, ids: string[]) => Label[]
Название Тип данных Описание
projectId string UUID проекта, в котором будет осуществлен поиск
ids []string Список UUID лейблов, которые нужно получить

Проблема

Для взаимодействия с проблемами определен объект issueService

Сущность проблема содержит в себе следующие данные:

class Issue {...}
Название Тип данных Описание
id string UUID проблемы
localId number Номер проблемы в проекте
projectId string UUID проекта
title string Заголовок проблемы
description string Описание проблемы
status string Статус проблемы. Возможные значения: OPEN, IN_PROGRESS, CLOSED, COMPLETED
priority string Приоритет проблемы. Возможные значение: LOW, MIDDLE, HIGH, EXTREME
authorId string UUID автора проблемы
assignedUserIds string[] Список UUID ответственных за проблему
labelIds string[] Список UUID лейблов

Методы для работы с проблемами

Для работы с сущностью проблема существуют следующие методы:

Создание проблемы

issueService.create(toCreate: Issue) => Issue

Необходимо передать следующие значения в методе

Название Тип данных Описание
projectId string UUID проекта, в котором будет создана проблема
title string Заголовок проблемы
description string Описание проблемы
status string Статус проблемы. Возможные значения: OPEN, IN_PROGRESS, CLOSED, COMPLETED
priority string Приоритет проблемы. Возможные значение: LOW, MIDDLE, HIGH, EXTREME
assignedUserIds string[] Список UUID ответственных за проблему
labelIds string[] Список UUID лейблов

Изменение проблемы

issueService.edit(toEdit: Issue) => Issue

Необходимо передать следующие значения в методе

Название Тип данных Описание
projectId string UUID проекта, в котором будет обновлена проблема
id string UUID проблемы
title string Заголовок проблемы
description string Описание проблемы
status string Статус проблемы. Возможные значения: OPEN, IN_PROGRESS, CLOSED, COMPLETED
priority string Приоритет проблемы. Возможные значение: LOW, MIDDLE, HIGH, EXTREME
assignedUserIds string[] Список UUID ответственных за проблему
labelIds string[] Список UUID лейблов

Получение списка всех проблем

issueService.getAll(...) => Page<Issue>
Название Тип данных Описание
projectId string UUID проекта, в котором будет осуществлен поиск
startPage number Номер запрашиваемой страницы
pageSize number Размер страницы

Получение списка всех проблем с указанным статусом

issueService.getAllWithStatus(...) => Page<Issue>

Необходимо передать следующие значения в методе

Название Тип данных Описание
projectId string UUID проекта, в котором будет осуществлен поиск
startPage number Номер запрашиваемой страницы
pageSize number Размер страницы
status string Статус проблемы. Возможные значения: OPEN, IN_PROGRESS, CLOSED, COMPLETED

Получение проблемы по локальному номеру

issueService.findByLocalId(...) => Issue | undefined
Название Тип данных Описание
projectId string UUID проекта, в котором будет осуществлен поиск
localId number Номер проблемы в проекте

Получение проблемы по UUID

issueService.findById(...) => Issue | undefined
Название Тип данных Описание
id string UUID проблемы

Комментарий к проблеме

Для взаимодействия с комментариями к проблеме определен объект issueNoteService

Сущность комментарий к проблеме содержит в себе следующие данные:

class IssueNote {...}
Название Тип данных Описание
id string UUID комментария
message string Содержимое комментария
authorId string UUID автора комментария
issueId string UUID проблемы, содержащей комментарий

Методы для работы с комментариями к проблемам

Для работы с сущностью комментарий к проблеме существуют следующие методы:

Создание комментария к проблеме

issueService.create: (toCreate: IssueNote) => IssueNote

Необходимо передать следующие значения в методе

Название Тип данных Описание
issueId string UUID проблемы, в котором будет создан комментарий
message string Содержимое комментария

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

issueService.edit(toEdit IssueNote) => IssueNote

Необходимо передать следующие значения в методе

Название Тип данных Описание
id string UUID комментария проблемы
message string Содержимое комментария

Получение списка всех комментариев к проблеме

issueService.findAll(...) => Page<IssueNote>

Необходимо передать следующие значения в методе

Название Тип данных Описание
issueId string UUID проблемы, в которой будет осуществлен поиск
startPage number Номер запрашиваемой страницы
pageSize number Размер страницы

Получение комментария к проблеме по UUID

issueService.findById(...) => IssueNote | undefined

Необходимо передать следующие значения в методе

Название Тип данных Описание
issueNoteId string UUID комментария проблемы

Получение количества комментариев в проблеме

issueService.countAll(...) => number

Необходимо передать следующие значения в методе

Название Тип данных Описание
issueId string UUID проблемы, в которой будет произведен подсчет комментариев

Запрос на слияние

Для взаимодействия с запросами на слияние определен объект mergeRequestService

Сущность запрос на слияние содержит в себе следующие данные:

class MergeRequest {...}
Название Тип данных Описание
id string UUID Запроса на слияние
localId number Локальный ID ЗнС
authorId string UUID автора
targetBranch string Целевая ветка
targetCommit string Целевой коммит
sourceBranch string Исходная ветка
sourceCommit string Исходный коммит
title string Заголвок ЗнС
description string Описание ЗнС
removeSourceBranch string Флаг удаления ветки после слияния
squashCommit string Слияние одним коммитом
status string Один из вариантов: “OPENED”, “CLOSED”, “MERGED”, “FAILED”, “CONFLICT”, “CANCELED”, “REVERTED”
mergeCommit string Коммит слияния
workInProgress boolean Флаг блокировки Знс
workInProgressReason string Причина блокировки ЗнС

Методы для работы с запросами на слияние

Для работы с сущностью запрос на слияние существуют следующие методы:

Создание запроса на слияние

mergeRequestService.create(...) => MergeRequest

Необходимо передать следующие значения в методе

Название Тип данных Описание
targetBranch string Целевая ветка
sourceBranch string Исходная ветка
removeSourceBranch string Флаг удаления ветки после слияния
title string Заголовок Знс
description string Описание ЗнС
workInProgress boolean Флаг блокировки Знс
workInProgressReason string Причина блокировки ЗнС
squashCommit boolean Слияние одним коммитом

Изменение запроса на слияние

mergeRequestService.edit(toEdit: MergeRequest) => MergeRequest

Необходимо передать следующие значения в методе

Название Тип данных Описание
targetProjectId string UUID целевого проекта
targetBranch string Целевая ветка
sourceBranch string Исходная ветка
removeSourceBranch string Флаг удаления ветки после слияния
title string Заголовок
description string Описание
workInProgress boolean Флаг блокировки Знс
workInProgressReason string Причина блокировки ЗнС
squashCommit boolean Слияние одним коммитов
status string Один из вариантов ‘OPENED‘, ‘CLOSED’, ‘MERGED’, ‘FAILED’, ‘CONFLICT‘, ‘CANCELED‘, ‘REVERTED‘

Изменение статуса запроса на слияние

mergeRequestService.editStatus(: string, : ) => MergeRequest | undefined

Необходимо передать следующие значения в методе

Название Тип данных Описание
mergeRequestId string UUID ЗнС
newStatus string Один из вариантов ‘OPENED‘, ‘CLOSED’, ‘MERGED’, ‘FAILED’, ‘CONFLICT‘, ‘CANCELED‘, ‘REVERTED‘

Получение списка запросов на слияние по исходному проекту

mergeRequestService.findAllBySourceProject(...) => Page<MergeRequest>

Необходимо передать следующие значения в методе

Название Тип данных Описание
projectId string UUID проекта
startPage number Запрашиваемая страница
pageSize number Размер страницы

Получение списка запросов на слияние по целевому проекту

mergeRequestService.findAllByTargetProject(...) => Page<MergeRequest>

Необходимо передать следующие значения в методе

Название Тип данных Описание
projectId string UUID проекта
startPage number Запрашиваемая страница
pageSize number Размер страницы

Поиск запроса на слияние по UUID

mergeRequestService.findById(...) => MergeRequest | undefined

Необходимо передать следующие значения в методе

Название Тип данных Описание
id string UUID ЗнС

Поиск запроса на слияние по локальному номеру

mergeRequestService.findByLocalId(...) => MergeRequest | undefined

Необходимо передать следующие значения в методе

Название Тип данных Описание
localId number Локальный ID ЗнС
projectId string UUID проекта

Проверка существования запроса на слияние

mergeRequestService.exists(...) => boolean

Необходимо передать следующие значения в методе

Название Тип данных Описание
sourceProjectUuid string UUID исходного проекта
sourceBranch string Исходная ветка
targetProjectUuid string UUID целевого проекта
targetBranch string Целевая ветка

Проверка возможности слить запрос на слияние

mergeRequestService.canMerge(id: string) => boolean

Необходимо передать следующие значения в методе

Название Тип данных Описание
id string UUID ЗнС

Дискуссия к запросу на слияние

Для взаимодействия с дискуссиями к запросам на слияние определён объект noteService

Сущность дискуссия к запросам на слияние содержит в себе следующие данные:

class Note {...}
Название Тип данных Описание
id string UUID дискуссии
mergeRequestId string UUID ЗнС
discussionId string UUID дискуссии
baseCommit string Исходный коммит
targetCommit string Целевой коммит
startCommit string
newLine number
oldLine number
newPath string
oldPath string
resolvable boolean
resolved boolean
type string
message string Содержание дискуссии
authorId string UUID автора
diff string Изменения
highlightLanguage string Язык программирования для подсветки кода

Методы для работы с дискуссиями к запросу на слияние

Для работы с сущностью дискуссия к запросам на слияние существуют следующие методы:

Создание дискуссии к запросу на слияние

noteService.create(toCreate: Note) => Note

Необходимо передать следующие значения в методе

Название Тип данных Описание
message string Сообщение для дискуссии
highlightLanguage string Язык программирования для подсветки кода
resolved boolean Статус дискуссии: открыта/закрыта
mergeRequestId string UUID ЗнС

Изменение дискуссии к запросу на слияние

noteService.edit(toEdit: Note) => Note

Необходимо передать следующие значения в методе

Название Тип данных Описание
id string UUID дискуссии
sourceProjectId string UUID исходного проекта
targetProjectId string UUID целевого проекта
targetBranch string Целевая ветка
sourceBranch string Исходная ветка
removeSourceBranch boolean Флаг для удаления ветки после слияния
title string Заголовок
description string Описание
workInProgress boolean Флаг, фиксирующий ЗнС в работе
workInProgressReason string Сообщение для блокировки ЗнС
squashCommit boolean Слить запрос одним коммитом

Создание ответа в дискуссии к запросу на слияние

noteService.reply(...) => Note

Необходимо передать следующие значения в методе

Название Тип данных Описание
id string UUID дискуссии
message string Ответ для дискуссии

Закрытие дискуссии к запросу на слияние

noteService.resolve(id: string) => void

Необходимо передать следующие значения в методе

Название Тип данных Описание
id string UUID дискуссии

Открытие дискуссии к запросу на слияние

noteService.unresolve(id: string) => void

Необходимо передать следующие значения в методе

Название Тип данных Описание
id string UUID дискуссии

Получение списка всех дискуссий к запросу на слияние

findAllInMergeRequest(...) => Page<Note>

Необходимо передать следующие значения в методе

Название Тип данных Описание
mergeRequestId string UUID ЗнС
startPage number Запрашиваемая страница
pageSize number Размер старницы

Получение дискуссии к запросу на слияние по UUID

noteService.findById(id: string) => Note | undefined

Необходимо передать следующие значения в методе

Название Тип данных Описание
id string UUID дискуссии

Конвейер

Для взаимодействия с конвейером определен объект pipelineService

Сущность конвейер содержит в себе следующие данные:

class Pipeline {...}
Название Тип данных Описание
id string
status string Один из вариантов: “CREATED”, “PENDING”, “RUNNING”, “SUCCESS”, “FAILED”, “CANCELED”, “SKIPPED”, “MANUAL”, “SCHEDULED”, “PREPARING”, “WAITING_FOR_RESOURCE”
duration number Время выполнения
projectId string UUID проекта
userId string UUID пользователя, запустившего конвейер
localId number Локальный ID конвейера
mergeRequestId string UUID запроса на слияние
commitId string Хеш коммита
beforeCommitId string Хеш предыдущего коммита
sourceCommitId string Хеш исходного коммита
ref string Указатель проекта
isTag boolean Запущен из тега
yamlErrors string Ошибки в файле конфигурации
source string Источник запуска
configSource number Числовое обозначение источника
failureReason string Причина оишбки конвейера
startedAt string Время запуска конвейера
finishedAt string Время завершения конвейера
createdAt string Время создания конвейера
isMergedResults boolean Конвейер является результирующим

Методы для работы с конвейерами

Для работы с сущностью конвейер существуют следующие методы:

Создание конвейера

pipelineService.create(...) => Pipeline | undefined

Необходимо передать следующие значения в методе

Название Тип данных Описание
projectId string UUID проекта
ref string Указатель в проекте

Создание пустого конвейера

Данный конвейер невозможно запустить в GitFlic

pipelineService.createBlank(projectId: string, ref: string) => Pipeline

Необходимо передать следующие значения в методе

Название Тип данных Описание
projectId string UUID проекта
ref string Указатель в проекте

Получение списка всех конвейеров

pipelineService.findAllByProject(projectId: string, startPage: number, pageSize: number) => Page<Pipeline>

Необходимо передать следующие значения в методе

Название Тип данных Описание
projectId string UUID проекта
startPage number Запрашиваемая страница
pageSize number Размер страницы

Получение списка конвейеров по ветке или тегу

pipelineService.findByProjectIdAndRef(...) => Page<Pipeline>

Необходимо передать следующие значения в методе

Название Тип данных Описание
projectId string UUID проекта
ref string Указатель в проекте
startPage number Запрашиваемая страница
pageSize number Размер страницы

Получение конвейера по локальному номеру

pipelineService.findByLocalId(...) => Pipeline | undefined

Необходимо передать следующие значения в методе

Название Тип данных Описание
projectId string UUID проекта
localId number Локальный ID конвейера

Получение конвейера по UUID

pipelineService.findById(...) => Pipeline | undefined

Необходимо передать следующие значения в методе

Название Тип данных Описание
id string UUID конвейера

Получение списка конвейеров в запросе на слияние

pipelineService.findByMergeRequestId(...) => Page<Pipeline>

Необходимо передать следующие значения в методе

Название Тип данных Описание
mergeRequestId string UUID Запроса на слияние
startPage number Запрашиваемая страница
pageSize number Размер страницы

Перезапуск конвейера

pipelineService.restart(...) => void

Необходимо передать следующие значения в методе

Название Тип данных Описание
id string UUID конвейера

Отмена конвейера

pipelineService.cancelPipeline(...) => void

Необходимо передать следующие значения в методе

Название Тип данных Описание
pipelineId string UUID конвейера

Изменение статуса конвейера

pipelineService.changeStatus(...) => void

Необходимо передать следующие значения в методе

Название Тип данных Описание
pipelineId string UUID конвейера
status string Один из вариантов “CREATED”, “PENDING”, “RUNNING”, “SUCCESS”, “FAILED”, “CANCELED”, “SKIPPED”, “MANUAL”, “SCHEDULED”, “PREPARING”, “WAITING_FOR_RESOURCE”

Обновление времени начала выполнения конвейера

pipelineService.setStartTime(...) => void

Необходимо передать следующие значения в методе

Название Тип данных Описание
pipelineId string UUID конвейера
startTimeMillis number UnixTime до тысячных долей секунды

Обновление времени окончания выполнения конвейера

pipelineService.setFinishTime(...) => void

Необходимо передать следующие значения в методе

Название Тип данных Описание
pipelineId string UUID конвейера
finishTimeMillis number UnixTime до тысячных долей секунды

Изменение времени выполнения конвейера

pipelineService.setExecutionTime(...) => void

Необходимо передать следующие значения в методе

Название Тип данных Описание
pipelineId string UUID конвейера
duration number Время выполнения в милисекундах

Создание стадии

pipelineService.createStage(...) => Stage

Необходимо передать следующие значения в методе

Название Тип данных Описание
pipelineId string UUID конвейера
name string Название стадии
pipstatuselineId string Один из вариантов “CREATED”, “PENDING”, “RUNNING”, “SUCCESS”, “FAILED”, “CANCELED”, “SKIPPED”, “MANUAL”, “SCHEDULED”, “PREPARING”, “WAITING_FOR_RESOURCE”, “WARNING”

Изменение статуса стадии

pipelineService.changeStageStatus(...) => Stage | undefined

Необходимо передать следующие значения в методе

Название Тип данных Описание
stageId string UUID стадии
pipstatuselineId string Один из вариантов “CREATED”, “PENDING”, “RUNNING”, “SUCCESS”, “FAILED”, “CANCELED”, “SKIPPED”, “MANUAL”, “SCHEDULED”, “PREPARING”, “WAITING_FOR_RESOURCE”, “WARNING”

http запросы

На текущий момент поддерживаются 2 метода:

http.get(url: string, config?: RequestConfig) => HttpResponse
http.post(url: string, body: any, config?: RequestConfig) => HttpResponse

где RequestConfig и HttpResponse - следующие классы (написаны на typescript):

interface HttpRequestConfig {
    url?: string;
    method?: string;
    baseUrl?: string;
    headers?: { [key: string]: string[] };
    params?: { [key: string]: string[] };
    data?: any;
    auth?: {username: string, password: string}
}
interface HttpResponse {
    body: any;
    isSuccessful: boolean;
    code: number;
    message: string;
    headers: { [key: string]: string[] };
}

Пример использования:

Пример GET-запроса к REST-API Gitflic

const url = '${baseurl}/user/me'
req = http.get(url,{ headers: { "Authorization": `token ${gitflicApiToken}` }});

console.log(JSON.stringify(req))
req.code

Пример POST-запроса, не требующий передачи body

const url = ${exampleUrl}
req = http.get(url,{},{headers: { "Authorization": `token ${token}` }});

console.log(JSON.stringify(req))
req.code

Права

Проверка на права выполняется для пользователя, который создал скрипт. То есть когда в пределах скрипта создаётся, например, конвейер, проводится проверка на право создания для автора скрипта

Переменные

Для определения пользовательских переменных существуют переменные. Они создаются отдельно в пределах проекта, в настройке скрипта указываются, какие из них будут в нём доступны

Триггеры

Триггеры это то, из-за чего запускаются скрипты. Всего есть несколько видов, для каждого из которых определены свои дополнительные переменные окружения

REST-API

Триггер указывающий, что скрипт был вызван из REST-API GitFlic. Для скриптов указана переменная request типа string, содержащая тело запроса

POST {baseurl}/rest-api/project/{userAlias}/{projectAlias}/script/{uuid}

Запрос возвращает следующую информацию:

Значение Тип Описание
executionUuid String UUID выполения
scriptUuid String UUID скрипта
triggerType String Тип триггера
triggerName String Название триггера
triggeringUserUuid String UUID пользователя, который запустил скрипт
executionStartTimestamp long Время начала выполнения скрипта
executionEndTimestamp long Время окончания выполнения скрипта
queueAppendTimestamp long Время добавления. вочередь выполнения
result String Результат
returnedValue String Возвращенное значение

Событие сервиса

Триггеры событий сервиса запускают скрипты по событию GitFlic. Ниже описаны события, по которым возможно запустить скрипты, указаны также дополнительные переменные окружения для каждого события

NEW_PIPELINE (новый конвейер),

DELETE_PIPELINE (удаление конвейера),

SUCCESS_PIPELINE (удачно завершившийся конвейер),

FAIL_PIPELINE (неудачно завершившийся конвейер):

Название Тип Описание
userId string UUID пользователя, который вызвал событие
status string Статус конвейера на момент создания события
localId integer Локальный ID конвейера
ref string Референс, на котором был запущен конвейер
isTag boolean Флаг, указывающий, что референс является тег
commitAfter string Коммит, на котором был запущен конвейер
projectId string UUID проекта, к которому относится конвейер
authorUsername string Псевдоним пользователя, который вызвал событие

NEW_MERGE_REQUEST_NOTE (создание комментария в дискуссии ЗнС):

Название Тип Описание
projectId string UUID проекта, к которому относится ЗнС
userId string UUID автора комментария
message string Содержание комментария
authorUsername string Псевдоним автора комментария
noteId string UUID созданного комментария
status string Статус комментария, один из вариантов: ”note.resolved”, “note.unresolved"

MERGE (слияние ЗнС),

UPDATE_MERGE_REQUEST (обновление ЗнС),

CLOSE_MERGE_REQUEST (закрытие ЗнС),

CANCELED_MERGE_REQUEST (отмена ЗнС),

NEW_MERGE_REQUEST (создание ЗнС):

Название Тип Описание
description string Опсиание ЗнС
localId integer Локальный ID ЗнС
sourceProjectId string UUID проекта, к которому относится ЗнС
targetProjectId string UUID проекта, в который направлен ЗнС
authorId string UUID автора ЗнС
targetBranch string Целевая ветка ЗнС
sourceBranch string Исходная ветка ЗнС
status string Статус ЗнС на момент создания события, один из вариантов: "OPENED”, “CLOSED”, “MERGED”, “FAILED”, “CONFLICT”, “CANCELED”, “REVERTED”
authorUsername string Псевдоним автора ЗнС
assignedUsers string[] Список ответственных в ЗнС

NEW_ISSUE_NOTE (создание комментария в проблеме):

Название Тип Описание
authorId string UUID автора комментария
message string Содержание комментария
issueLocalId integer Локальный ID проблемы
authorUsername string Псевдоним автора проблемы
projectId string UUID проекта, к которому относится проблема

CLOSE_ISSUE (закрытие проблемы),

UPDATE_ISSUE (обновление проблемы),

NEW_ISSUE (создание проблемы):

Название Тип Описание
localId integer локальный ID проблемы
projectId string UUID проблемы, к которой относится проблема
authorId string UUID автора проблемы
title string Заголовок проблемы
authorUsername string Псевдоним автора проблемы
assignedUsers string[] Псевдонимы ответственных за проблему
status string статус проблемы на момент создания события, один из вариантов ”OPEN”, “IN_PROGRESS”, “CLOSED”, “COMPLETED”

UPDATE_BRANCH (обновление ветки),

DELETE_BRANCH (удаление ветки),

NEW_BRANCH (создание ветка),

DELETE_TAG (удаление тега),

NEW_TAG (создание тега),

PULL (pull-запрос),

PUSH (push-запрос):

Название Тип Описание
ref string git-ссылка на тег или ветку
commitBefore string последний коммит в ветке до пуша
commitAfter string последний коммит в ветке после пуша
projectId string UUID проекта, в котором произошло событие
userId string UUID пользователя, который совершил действие

Ручной запуск

Триггер, указывающий, что скрипт был вызван вручную в самом GitFlic (по нажатию на кнопку). Дополнительные переменные не определяются

Тестовый запуск

Триггер, указывающий, что скрипт был вызван в тестовой среде. Дополнительные переменные не определяются

Ограничения

Определены ограничения на ресурсы среды выполнения, а также дополнительные ограничения со стороны сервисов.

Все настройки управляются через файл конфигурации (application.properties)

Описание настройки Название в файле конфигурации Значение по умолчанию
Максимальное количество вызовов методов сервиса (для каждого свой счётчик) scripts.limits.max-calls-per-context 10
Максимальный размер стандартного вывода в байтах scripts.limits.output.max-script-output-size-bytes 4096
Максимальное количество выполняемых statement scripts.resources.statement.limit 1000
Максимальная глубина AST scripts.limits.max-ast-depth 64
Максимальное количество фреймов на стеке scripts.limits.max-stack-frames 64
Максимальное время выполнения скрипта в миллисекундах scripts.limits.execution-timeout-milliseconds 1000

Примеры

var issueNoteCount = issueNoteService.countAll(issueId);
issueNoteCount
// Вывод количества комментариев в Проблеме
// Необходимо дополнительно объявить переменную issueId
var newPipe = pipelineService.create(projectId, "master");
newPipe.id
// Результатом выполнения скрипта будет значение UUID созданного конвейера
// Необходимо дополнительно объявить переменную projectId