CI/CD
Описание структуры JSON-объекта, описывающего конвейер
| Поле | Тип | Описание | 
|---|---|---|
| id | String | ID конвейера | 
| status | String | Статус конвейера. Возможные значения: CREATED,PENDING,WAITING_FOR_RESOURCE,RUNNING,SUCCESS,FAILED,CANCELED,SKIPPED,MANUAL,WARNING | 
| duration | String | Время продолжительности выполнения контейнера в секундах | 
| localId | String | Локальный ID конвейера | 
| commitId | String | Хэш коммита, для которого создан конвейер | 
| projectId | String | ID проекта, в котором запущен конвейер | 
| userId | String | ID пользователя, который запустил конвейер | 
| beforeCommitId | String | Устаревший параметр. По умолчанию возвращает null | 
| ref | String | Указывает refдля которого запускался конвейер - ветка или тег | 
| source | String | Источника, который инициировал конвейер. Возможные значения: PUSH,TRIGGER,SCHEDULE,WEB,API,PARENT_PIPELINE,MERGE_REQUEST_EVENT | 
| configSource | String | Устаревший параметр. По умолчанию возвращает null | 
| failureReason | String | Причина, по которой конвейер завершился со статусом FAILED | 
| startedAt | String | Время, в которое конвейер приступил к выполнению | 
| finishedAt | String | Время, в которое был завершен конвейер | 
| createdAt | String | Время, в которое был создан конвейер | 
| tag | String | Устаревший параметр. По умолчанию возвращает false | 
Описание структуры JSON-объекта, описывающего задачу
| Поле | Тип | Описание | 
|---|---|---|
| id | String | ID задачи | 
| localId | Integer | Локальный ID задачи | 
| finishedAt | Date | Время окончания выполнения | 
| startedAt | Date | Время начала выполнения | 
| name | String | Имя задачи | 
| stageName | String | Имя стадии, к которой прикреплена задача | 
| tag | Boolean | Прикреплена ли задача к тегу trueили нетfalse | 
| ref | String | Указывает refдля которого запускался конвейер - ветка или тег | 
| artifactsExpireAt | Date | Дата, когда артефакт пропадет | 
| status | String | Статус задачи. Возможные значения: CREATED,PENDING,WAITING_FOR_RESOURCE,RUNNING,SUCCESS,FAILED,CANCELED,SKIPPED,MANUAL,WARNING | 
| pipelineLocalId | Integer | Локальный ID конвейера | 
| erasedAt | Deprecated | Устаревший параметр. По умолчанию возвращает null | 
Описание структуры JSON-объекта, описывающего артефакт
| Поле | Тип | Описание | 
|---|---|---|
| id | String | ID артефакта | 
| fileType | Integer | Тип файла | 
| size | String | Размер в байтах | 
| expireAt | Date | Дата, когда артефакт пропадет | 
| fileName | String | Имя файла | 
| downloadUrl | String | Путь для скачивания артефакта | 
| jobLocalId | Integer | Локальный ID задачи | 
Описание структуры JSON-объекта, описывающего настройки времени существования конвейеров
Ознакомиться с настройкой времени существования конвейеров возможно здесь
| Поле | Тип | Описание | 
|---|---|---|
| lifetime | Integer | Срок существования конвейера до автоматического удаления (в днях) | 
| ownerType | String | Тип владельца настроек. Возможные значения: COMPANY,TEAM | 
| uuid | String | UUID настройки времени существования конвейеров | 
| enabled | Boolean | Автоматическое удаление конвейеров включено trueили выключеноfalse | 
Описание структуры JSON-объекта, описывающего CI/CD переменные
| Поле | Тип | Описание | 
|---|---|---|
| id | String | UUID CI/CD переменной | 
| key | String | Значение переменной | 
| value | String | Ключ переменной | 
| environmentScope | String | Наименование окружения, в котором данная переменная должна быть доступной. Возвращает nullесли переменная доступна во всех окружениях | 
| mask | Boolean | Переменная является маскированной (ее значение скрывается в логах задач) trueили нетfalse | 
Методы для конвейеров
Метод для получения списка конвейеров проекта
GET /project/{ownerrAlias}/{projectAlias}/cicd/pipeline
Запрос возвращает список конвейеров проекта, есть возможность настройки количества отображаемых объектов на странице
| Переменная пути запроса | Тип | Описание | 
|---|---|---|
| ownerAlias | String | Псевдоним владельца проекта | 
| projectAlias | String | Псевдоним проекта | 
Responses
STATUS 200 - Список конвейеров успешно возвращен.
Пример ответа
    
{
    "_embedded": {
        "restPipelineModelList": [
            {
                "id": "d4b27a95-aaaa-aaaa-aaaa-97632f700b27",
                "status": "SUCCESS",
                "duration": 3,
                "localId": 2,
                "commitId": "86d949be6ec074aaaaaaaaaaaad98acef85341f7",
                "projectId": "f980649d-aaaa-aaaa-aaaa-40102294aa2d",
                "userId": "02d57aff-aaaa-aaaa-aaaa-9edc50257a42",
                "beforeCommitId": null,
                "ref": "master",
                "source": "WEB",
                "configSource": null,
                "failureReason": null,
                "startedAt": null,
                "finishedAt": "2024-09-19T15:08:11.026116",
                "createdAt": "2024-09-19T15:08:06.97725",
                "tag": false
            },
            {
                "id": "19975dcd-aaaa-aaaa-aaaa-bbd6494c5bc0",
                "status": "SUCCESS",
                "duration": 3,
                "localId": 1,
                "commitId": "6d8b6e82f18c5eaaaaaaaaaaaa21e1e1e3a16f2b",
                "projectId": "f980649d-aaaa-aaaa-aaaa-40102294aa2d",
                "userId": "02d57aff-aaaa-aaaa-aaaa-9edc50257a42",
                "beforeCommitId": null,
                "ref": "master",
                "source": "PUSH",
                "configSource": null,
                "failureReason": null,
                "startedAt": null,
                "finishedAt": "2024-09-19T15:07:50.840049",
                "createdAt": "2024-09-19T15:06:11.109839",
                "tag": false
            }
        ]
    },
    "page": {
        "size": 10,
        "totalElements": 2,
        "totalPages": 1,
        "number": 0
    }
}
    
  
STATUS 403 - Нет прав для доступа.
STATUS 404 - Данные по запросу не найдены.
Метод для получения информации о задачах
GET /project/{ownerAlias}/{projectAlias}/cicd/pipeline/{localId}/jobs
Запрос возвращает список задач конвейера, есть возможность настройки количества отображаемых объектов на странице
| Переменная пути запроса | Тип | Описание | 
|---|---|---|
| ownerAlias | String | Псевдоним владельца проекта | 
| projectAlias | String | Псевдоним проекта | 
| localId | String | Номер конвейера | 
Responses
STATUS 200 - Список задач указанного конвейера успешно возвращен.
Пример ответа
    
{
    "_embedded": {
        "restPipelineJobModelList": [
            {
                "id": "a550da80-aaaa-aaaa-aaaa-1698bac3e8e9",
                "localId": 1,
                "finishedAt": "2023-01-01T00:00:00.00000Z",
                "startedAt": null,
                "name": "job 1",
                "stageName": "build",
                "tag": false,
                "ref": "master",
                "erasedAt": null,
                "artifactsExpireAt": null,
                "status": "SUCCESS",
                "pipelineLocalId": 1
            }
        ]
    },
    "page": {
        "size": 10,
        "totalElements": 1,
        "totalPages": 1,
        "number": 0
    }
}
    
  
STATUS 403 - Нет прав для доступа.
STATUS 404 - Данные по запросу не найдены.
Метод для получения информации об артефактах
GET /project/{ownerAlias}/{projectAlias}/cicd/pipeline/{localId}/artifacts
Запрос возвращает список артефактов конвейера, есть возможность настройки количества отображаемых объектов на странице
| Переменная пути запроса | Тип | Описание | 
|---|---|---|
| ownerAlias | String | Псевдоним владельца проекта | 
| projectAlias | String | Псевдоним проекта | 
| localId | String | Номер конвейера | 
Responses
STATUS 200 - Список артефактов указанного конвейера успешно возвращен.
Пример ответа
    
{
    "_embedded": {
        "restPipelineJobArtifactModelList": [
            {
                "id": "g4i6tfl6-aaaa-aaaa-aaaa-i4t0707fl194",
                "fileType": "metadata",
                "size": 125667,
                "expireAt": "2023-06-13T15:40:26.145095Z",
                "fileName": "d00c197c-aaaa-aaaa-aaaa-a902b51f230f.log",
                "downloadUrl": "api.gitflic.ru/project/username/projectname/cicd/job/1/artifact/g4i6tfl6-aaaa-aaaa-aaaa-i4t0707fl194/download",
                "jobLocalId": 1
            }
        ]
    },
    "page": {
        "size": 1,
        "totalElements": 1,
        "totalPages": 1,
        "number": 0
    }
}
    
  
STATUS 403 - Нет прав для доступа.
STATUS 404 - Данные по запросу не найдены.
Метод для скачивания артефактов
GET /project/{ownerAlias}/{projectAlias}/cicd/pipeline/{localId}/artifacts-download
Запрос скачивает артефакт конвейера
| Переменная пути запроса | Тип | Описание | 
|---|---|---|
| ownerAlias | String | Псевдоним владельца проекта | 
| projectAlias | String | Псевдоним проекта | 
| localId | String | Номер конвейера | 
Responses
STATUS 200 - Начинается процесс скачивания файла.
STATUS 403 - Нет прав для доступа.
STATUS 404 - Данные по запросу не найдены.
Метод для запуска конвейера
POST /project/{ownerAlias}/{projectAlias}/cicd/pipeline/start
Запрос запускает новый конвейер для стандартной ветки проекта
| Переменная пути запроса | Тип | Описание | 
|---|---|---|
| ownerAlias | String | Псевдоним владельца проекта | 
| projectAlias | String | Псевдоним проекта | 
Request
Поддерживаемый формат: application/json
Структура тела POST-запроса:
| Поле | Тип | Описание | 
|---|---|---|
| refName | String | Необязательный параметр. Название ветки или тега, на котором необходимо запустить конвейер | 
| isTag | Boolean | Обязательный параметр, если указан параметр refName. Значение параметрrefNameуказывает на тегtrueили на веткуfalse | 
| variables | Object | Необязательный параметр. Объект, содержащий в себе названия и значения переменных, которые будут существовать только для данного конвейера | 
Пример JSON объекта
{
    "refName": "master",
    "isTag": "false",
    "variables": [
        {
            "key": "pass",
            "value" : "123"
        },
        {
            "key": "name",
            "value" : "adminuser"
        }
    ]
}
Responses
STATUS 200 - Начало выполнения нового конвейера.
STATUS 403 - Нет прав для доступа.
STATUS 404 - Данные по запросу не найдены.
Метод для перезапуска конвейера
POST /project/{ownerAlias}/{projectAlias}/cicd/pipeline/{localId}/restart
Запрос перезапускает конвейер
| Переменная пути запроса | Тип | Описание | 
|---|---|---|
| ownerAlias | String | Псевдоним владельца проекта | 
| projectAlias | String | Псевдоним проекта | 
| localId | String | Номер конвейера | 
Responses
STATUS 200 - Перезапуск конвейера
STATUS 403 - Нет прав для доступа.
STATUS 404 - Данные по запросу не найдены.
Метод для отмены выполнения конвейера
POST /project/{ownerAlias}/{projectAlias}/cicd/pipeline/{localId}/cancel
Запрос отменяет выполнение конвейера
| Переменная пути запроса | Тип | Описание | 
|---|---|---|
| ownerAlias | String | Псевдоним владельца проекта | 
| projectAlias | String | Псевдоним проекта | 
| localId | String | Номер конвейера | 
Responses
STATUS 200 - Прекращение выполнения конвейера.
STATUS 403 - Нет прав для доступа.
STATUS 404 - Данные по запросу не найдены.
Метод удаления конвейера
DELETE /project/{ownerAlias}/{projectAlias}/cicd/pipeline/{localId}/delete
Запрос удаляет конвейер
| Переменная пути запроса | Тип | Описание | 
|---|---|---|
| ownerAlias | String | Псевдоним владельца проекта | 
| projectAlias | String | Псевдоним проекта | 
| localId | String | Номер конвейера | 
Responses
STATUS 200 - Удаление конвейера.
STATUS 403 - Нет прав для доступа.
STATUS 404 - Данные по запросу не найдены.
Методы для задач
Метод получения информации о задаче по id
GET /project/{ownerAlias}/{projectAlias}/cicd/job/{localId}
Запрос возвращает информацию о задаче
| Переменная пути запроса | Тип | Описание | 
|---|---|---|
| ownerAlias | String | Псевдоним владельца проекта | 
| projectAlias | String | Псевдоним проекта | 
| localId | String | Номер задачи | 
Responses
STATUS 200 - Задача успешно возвращена.
Пример ответа
    
{
    "id": "g00i197t-aaaa-aaaa-aaaa-4902i51t230f",
    "localId": 1,
    "finishedAt": "2023-01-01T00:00:00.00000Z",
    "startedAt": null,
    "name": "job 1",
    "stageName": "stage",
    "tag": false,
    "ref": "master",
    "erasedAt": null,
    "artifactsExpireAt": null,
    "status": "FAILED",
    "pipelineLocalId": 1
}
    
  
STATUS 403 - Нет прав для доступа.
STATUS 404 - Данные по запросу не найдены.
Метод получения информации об артефактах задачи
GET /project/{ownerAlias}/{projectAlias}/cicd/job/{localId}/artifacts
Запрос возвращает информацию об артефактах задачи, есть возможность настройки количества отображаемых объектов на странице
| Переменная пути запроса | Тип | Описание | 
|---|---|---|
| ownerAlias | String | Псевдоним владельца проекта | 
| projectAlias | String | Псевдоним проекта | 
| localId | String | Номер задачи | 
Responses
STATUS 200 - Список артефактов задачи успешно возвращен.
Пример ответа
    
{
    "_embedded": {
        "restPipelineJobArtifactModelList": [
            {
                "id": "g4i6tfl6-aaaa-aaaa-aaaa-i4t0707fl194",
                "fileType": "metadata",
                "size": 125667,
                "expireAt": "2023-01-01T00:00:0.00000Z",
                "fileName": "g4i6tfl6-aaaa-aaaa-aaaa-i4t0707fl194.log",
                "downloadUrl": "api.gitflic.ru/project/username/projectname/cicd/job/1/artifact/g4i6tfl6-aaaa-aaaa-aaaa-i4t0707fl194/download",
                "jobLocalId": 1
            }
        ]
    },
    "page": {
        "size": 1,
        "totalElements": 1,
        "totalPages": 1,
        "number": 0
    }
}
    
  
STATUS 403 - Нет прав для доступа.
STATUS 404 - Данные по запросу не найдены.
Метод блокировки артефактов задачи
POST /project/{ownerAlias}/{projectAlias}/cicd/job/{localId}/{artifactUuid}/lock
Запрос блокирует артефакт задачи
| Переменная пути запроса | Тип | Описание | 
|---|---|---|
| ownerAlias | String | Псевдоним владельца проекта | 
| projectAlias | String | Псевдоним проекта | 
| localId | String | Номер задачи | 
| artifactUuid | String | UUID артефакта | 
Responses
STATUS 200 - Артефакт заблокирован.
STATUS 403 - Нет прав для доступа.
STATUS 404 - Данные по запросу не найдены.
Метод разблокировки артефактов задачи
POST /project/{ownerAlias}/{projectAlias}/cicd/job/{localId}/{artifactUuid}/unlock
Запрос разблокирует артефакт задачи
| Переменная пути запроса | Тип | Описание | 
|---|---|---|
| ownerAlias | String | Псевдоним владельца проекта | 
| projectAlias | String | Псевдоним проекта | 
| localId | String | Номер задачи | 
| artifactUuid | String | UUID артефакта | 
Responses
STATUS 200 - Артефакт разблокирован.
STATUS 403 - Нет прав для доступа.
STATUS 404 - Данные по запросу не найдены.
Метод скачивания артефактов задачи
GET /project/{ownerAlias}/{projectAlias}/cicd/job/{localId}/artifacts-download
Запрос начинает процесс скачивания артефактов задачи
| Переменная пути запроса | Тип | Описание | 
|---|---|---|
| ownerAlias | String | Псевдоним владельца проекта | 
| projectAlias | String | Псевдоним проекта | 
| localId | String | Номер задачи | 
Responses
STATUS 200 - Скачивание артефактов.
STATUS 403 - Нет прав для доступа.
STATUS 404 - Данные по запросу не найдены.
Метод скачивания артефакта по uuid
GET /project/{ownerAlias}/{projectAlias}/cicd/job/{localId}/artifact/{artifactUuid}/download
Запрос начинает процесс скачивания артефакта
| Переменная пути запроса | Тип | Описание | 
|---|---|---|
| ownerAlias | String | Псевдоним владельца проекта | 
| projectAlias | String | Псевдоним проекта | 
| localId | String | Номер задачи | 
| artifactUuid | String | UUID артефакта | 
Responses
STATUS 200 - Скачивание артефактов.
STATUS 403 - Нет прав для доступа.
STATUS 404 - Данные по запросу не найдены.
Метод перезапуска задачи
POST /project/{ownerAlias}/{projectAlias}/cicd/job/{localId}/restart
Запрос перезапускает задачу
| Переменная пути запроса | Тип | Описание | 
|---|---|---|
| ownerAlias | String | Псевдоним владельца проекта | 
| projectAlias | String | Псевдоним проекта | 
| localId | String | Номер задачи | 
Responses
STATUS 200 - Перезапуск задачи.
STATUS 403 - Нет прав для доступа.
STATUS 404 - Данные по запросу не найдены.
Метод отмены выполнения задачи
POST /project/{ownerAlias}/{projectAlias}/cicd/job/{localId}/cancel
Запрос отменяет выполнение задачи. Отменить можно задачи, которые находятся НЕ в статусе Успех, Отмена или Ошибка
| Переменная пути запроса | Тип | Описание | 
|---|---|---|
| ownerAlias | String | Псевдоним владельца проекта | 
| projectAlias | String | Псевдоним проекта | 
| localId | String | Номер задачи | 
Responses
STATUS 200 - Отмена выполнения задачи.
STATUS 400 - Ошибка при попытке отменить задачу в статусе Успех, Ошибка или Отменен
STATUS 403 - Нет прав для доступа.
STATUS 404 - Данные по запросу не найдены.
Метод удаления артефакта
DELETE /project/{ownerAlias}/{projectAlias}/cicd/job/{localId}/artifact/{artifactUuid}/delete
Запрос удаляет артефакт
| Переменная пути запроса | Тип | Описание | 
|---|---|---|
| ownerAlias | String | Псевдоним владельца проекта | 
| projectAlias | String | Псевдоним проекта | 
| localId | String | Номер задачи | 
| artifactUuid | String | UUID артефакта | 
Responses
STATUS 200 - Удаление артефакта.
STATUS 403 - Нет прав для доступа.
STATUS 404 - Данные по запросу не найдены.
Методы для настроек CI/CD
Метод для получения настроек существования конвейеров
Компании: GET /company/{companyAlias}/cicd/pipeline-lifetime
Команды: GET /team/{teamAlias}/cicd/pipeline-lifetime
Запрос возвращает настройки времени существования конвейеров указанной сущности с данным псевдонимом.
| Переменная пути запроса | Тип | Описание | 
|---|---|---|
| companyAlias | String | Псевдоним компании | 
| teamAlias | String | Псевдоним команды | 
Responses
STATUS 200 - Настройки времени существования конвейеров возвращены:
Пример ответа
    
{
    "lifetime": 90,
    "ownerType": "COMPANY",
    "uuid": "986313a5-aaaa-aaaa-aaaa-56f719abb3a0",
    "enabled": true
}
    
  
STATUS 403 - Нет прав для доступа.
STATUS 404 - Данные по запросу не найдены.
Метод для изменения настроек существования конвейеров
Компании: PATCH /company/{companyAlias}/cicd/pipeline-lifetime/edit
Команды: PATCH /team/{teamAlias}/cicd/pipeline-lifetime/edit
Запрос изменяет и возвращает настройки времени существования конвейеров указанной сущности с данным псевдонимом.
| Переменная пути запроса | Тип | Описание | 
|---|---|---|
| companyAlias | String | Псевдоним компании | 
| teamAlias | String | Псевдоним команды | 
Request
Поддерживаемый формат JSON
Структура тела PATCH-запроса:
| Поле | Тип | Описание | 
|---|---|---|
| enabled | Boolean | Автоматическое удаление конвейеров включено trueили выключеноfalse | 
| lifetime | Integer | Срок существования конвейера до автоматического удаления (в днях) | 
Пример JSON объекта
{
    "enabled": true
    "lifetime": 90,
}
Responses
STATUS 200 - Настройки времени существования конвейеров изменены:
Пример ответа
    
{
    "lifetime": 90,
    "ownerType": "COMPANY",
    "uuid": "986313a5-aaaa-aaaa-aaaa-56f719abb3a0",
    "enabled": true
}
    
  
STATUS 403 - Нет прав для доступа.
STATUS 404 - Данные по запросу не найдены.
STATUS 422 - В теле запроса не указано обязательно поле.
Метод для применения настроек существования конвейеров к проектам
Компании: POST /company/{companyAlias}/cicd/apply-settings-to-projects
Команды: POST /team/{teamAlias}/cicd/apply-settings-to-projects
Запрос применяет настройки времени существования конвейеров ко всем проектам указанной сущности с данным псевдонимом.
| Переменная пути запроса | Тип | Описание | 
|---|---|---|
| companyAlias | String | Псевдоним компании | 
| teamAlias | String | Псевдоним команды | 
Responses
STATUS 204 - Настройки времени существования конвейеров применены ко всем дочерним проектам.
STATUS 403 - Нет прав для доступа.
STATUS 404 - Данные по запросу не найдены.
Метод для получения CI/CD переменных
Проекта GET /project/{ownerAlias}/{projectAlias}/setting/cicd/variable
Компании: GET /company/{companyAlias}/cicd/variable
Команды: GET /team/{teamAlias}/cicd/variable
Всего сервиса GET /admin/ci-cd-variables
Метод получения CI/CD переменных всего сервиса доступен только администраторам сервиса.
Запрос возвращает список CI/CD переменных, созданных в указанной сущности.
| Переменная пути запроса | Тип | Описание | 
|---|---|---|
| ownerAlias | String | Псевдоним владельца проекта | 
| projectAlias | String | Псевдоним проекта | 
| companyAlias | String | Псевдоним компании | 
| teamAlias | String | Псевдоним команды | 
Responses
STATUS 200 - CI/CD переменные успешно возвращены.
Пример ответа
    
{
    "_embedded": {
        "restPipelineJobVariableModelList": [
            {
                "id": "95b8a16d-aaaa-aaaa-aaaa-016ebdf2c060",
                "key": "SSH_HOST",
                "value": "127.0.0.1",
                "environmentScope": null,
                "mask": false
            },
            {
                "id": "23755bc1-aaaa-aaaa-aaaa-1f87f93361fd",
                "key": "SSH_PASS",
                "value": "qwe123",
                "environmentScope": "test-env",
                "mask": true
            }
        ]
    },
    "page": {
        "size": 10,
        "totalElements": 2,
        "totalPages": 1,
        "number": 0
    }
}
    
  
STATUS 403 - Нет прав для доступа.
STATUS 404 - Данные по запросу не найдены.