Репозитории Git
Управление репозиториями Git через REST API: привязка внешнего git-репозитория, сборка Docker-образа и автообновление при push. Все методы требуют токен аутентификации.
POST /v1/project/:projectId/repository
Привязывает внешний git-репозиторий к проекту и создаёт запись с настройками сборки Docker-образа: веткой, лимитами CPU и памяти, путём к Dockerfile и аргументами сборки. Новый репозиторий создаётся с autoUpdate: true, paused: false и пустой статистикой ошибок (lastBuildAt: null). Имя репозитория должно быть уникальным в рамках проекта.
Параметры:
| Параметр | Место | Тип | Обязательный | Описание |
|---|---|---|---|---|
projectId |
Path | UUID | Да | ID проекта |
Body:
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
name |
string | Да | Имя репозитория (3–60 символов, латиница в нижнем регистре, цифры и дефис, начинается с буквы) |
url |
string | Да | URL git-репозитория |
username |
string | Нет | Логин для авторизации |
password |
string | Нет | Пароль для авторизации |
branch |
string | Нет | Ветка (по умолчанию main) |
cpu |
number | Да | Количество CPU ядер (по умолчанию 1) |
cpuFraction |
number | Нет | Доля CPU в процентах (10, 20, 50 или 100, по умолчанию 20) |
memory |
number | Да | Объём памяти в байтах (по умолчанию 268435456 — 256MB) |
dockerFile |
string | Нет | Путь к Dockerfile (по умолчанию Dockerfile) |
dockerContext |
string | Нет | Контекст сборки Docker (по умолчанию .) |
dockerArgs |
array | Нет | Аргументы сборки Docker ([{name, value}]) |
Пример запроса:
{
"name": "my-app",
"url": "https://github.com/org/repo.git",
"cpu": 1,
"cpuFraction": 20,
"memory": 268435456,
"dockerFile": "Dockerfile",
"branch": "main",
"dockerArgs": [
{
"name": "NODE_VERSION",
"value": "18"
}
]
}
Ответ:
{
"id": "660e8400-e29b-41d4-a716-446655440001",
"name": "my-app",
"url": "https://github.com/org/repo.git",
"username": null,
"branch": "main",
"autoUpdate": true,
"paused": false,
"cpu": 1,
"cpuFraction": 20,
"memory": 268435456,
"dockerFile": "Dockerfile",
"dockerContext": ".",
"dockerArgs": [
{
"name": "NODE_ENV",
"value": "production"
}
],
"isError": false,
"errorMessages": [],
"errorCount": 0,
"lastBuildAt": null,
"createdAt": "2024-01-15T10:30:00+00:00",
"updatedAt": "2024-01-15T10:30:00+00:00"
}
Ошибки:
404 Not Found— Проект не найден409 Conflict— Репозиторий с таким именем уже существует в проекте400 Bad Request— Невалидные параметры
PUT /v1/repository/:repositoryId
Обновляет конфигурацию существующего репозитория: URL git-репозитория, учётные данные для авторизации, ветку и параметры сборки Docker. В ответе возвращается обновлённый объект Repository с новой датой updatedAt. Передача пароля сбрасывает накопленные ошибки репозитория.
Параметры:
| Параметр | Место | Тип | Обязательный | Описание |
|---|---|---|---|---|
repositoryId |
Path | UUID | Да | ID репозитория |
Body:
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
url |
string | Да | URL git-репозитория |
username |
string | Нет | Логин для авторизации |
password |
string | Нет | Пароль для авторизации (сбрасывает ошибки) |
branch |
string | Нет | Ветка (по умолчанию main) |
dockerFile |
string | Нет | Путь к Dockerfile (по умолчанию Dockerfile) |
dockerContext |
string | Нет | Контекст сборки Docker (по умолчанию .) |
dockerArgs |
array | Нет | Аргументы сборки Docker ([{name, value}]) |
Пример запроса:
{
"url": "https://github.com/org/repo.git",
"branch": "develop",
"dockerFile": "Dockerfile"
}
Ответ:
{
"id": "660e8400-e29b-41d4-a716-446655440001",
"name": "my-app",
"url": "https://github.com/org/repo.git",
"username": null,
"branch": "develop",
"autoUpdate": true,
"paused": false,
"cpu": 1,
"cpuFraction": 20,
"memory": 268435456,
"dockerFile": "Dockerfile",
"dockerContext": ".",
"dockerArgs": [],
"isError": false,
"errorMessages": [],
"errorCount": 0,
"lastBuildAt": null,
"createdAt": "2024-01-15T10:30:00+00:00",
"updatedAt": "2024-01-15T11:45:00+00:00"
}
Ошибки:
404 Not Found— Репозиторий не найден400 Bad Request— Невалидные параметры
DELETE /v1/repository/:repositoryId
Удаляет репозиторий и его конфигурацию. В ответе возвращается объект Repository — снимок удалённой записи с её идентификатором и параметрами. Операция необратима: последующие запросы к этому UUID завершаются ошибкой «Репозиторий не найден».
Параметры:
| Параметр | Место | Тип | Обязательный | Описание |
|---|---|---|---|---|
repositoryId |
Path | UUID | Да | ID репозитория |
Ответ:
{
"id": "660e8400-e29b-41d4-a716-446655440001",
"name": "my-app",
"url": "https://github.com/org/repo.git",
"username": null,
"branch": "main",
"autoUpdate": true,
"paused": false,
"cpu": 1,
"cpuFraction": 20,
"memory": 268435456,
"dockerFile": "Dockerfile",
"dockerContext": ".",
"dockerArgs": [],
"isError": false,
"errorMessages": [],
"errorCount": 0,
"lastBuildAt": "2024-01-15T10:35:00+00:00",
"createdAt": "2024-01-15T10:30:00+00:00",
"updatedAt": "2024-01-15T10:35:00+00:00"
}
Ошибки:
404 Not Found— Репозиторий не найден
GET /v1/repository/:repositoryId
Возвращает репозиторий по его UUID. Ответ содержит полную конфигурацию — от URL git-репозитория и ветки до лимитов ресурсов и параметров Dockerfile — и текущий статус: флаги autoUpdate, paused, isError, счётчик ошибок и дату последней сборки lastBuildAt.
Параметры:
| Параметр | Место | Тип | Обязательный | Описание |
|---|---|---|---|---|
repositoryId |
Path | UUID | Да | ID репозитория |
Ответ:
{
"id": "660e8400-e29b-41d4-a716-446655440001",
"name": "my-app",
"url": "https://github.com/org/repo.git",
"username": null,
"branch": "main",
"autoUpdate": true,
"paused": false,
"cpu": 1,
"cpuFraction": 20,
"memory": 268435456,
"dockerFile": "Dockerfile",
"dockerContext": ".",
"dockerArgs": [
{
"name": "NODE_ENV",
"value": "production"
}
],
"isError": false,
"errorMessages": [],
"errorCount": 0,
"lastBuildAt": "2024-01-15T10:35:00+00:00",
"createdAt": "2024-01-15T10:30:00+00:00",
"updatedAt": "2024-01-15T10:35:00+00:00"
}
Ошибки:
404 Not Found— Репозиторий не найден
GET /v1/project/:projectId/repositories
Возвращает все репозитории, привязанные к проекту, в виде массива объектов Repository. Каждый элемент содержит конфигурацию сборки (ветку, лимиты ресурсов, параметры Dockerfile) и текущий статус: флаги ошибок и дату последней сборки lastBuildAt.
Параметры:
| Параметр | Место | Тип | Обязательный | Описание |
|---|---|---|---|---|
projectId |
Path | UUID | Да | ID проекта |
Ответ:
[
{
"id": "660e8400-e29b-41d4-a716-446655440001",
"name": "my-app",
"url": "https://github.com/org/repo.git",
"username": null,
"branch": "main",
"autoUpdate": true,
"paused": false,
"cpu": 1,
"cpuFraction": 20,
"memory": 268435456,
"dockerFile": "Dockerfile",
"dockerContext": ".",
"dockerArgs": [],
"isError": false,
"errorMessages": [],
"errorCount": 0,
"lastBuildAt": "2024-01-15T10:35:00+00:00",
"createdAt": "2024-01-15T10:30:00+00:00",
"updatedAt": "2024-01-15T10:35:00+00:00"
}
]
Ошибки:
404 Not Found— Проект не найден
POST /v1/repository/:repositoryId/build
Запускает сборку Docker-образа из текущего состояния ветки git-репозитория. Тело запроса не передаётся: сборка выполняется по конфигурации, сохранённой в репозитории (dockerFile, dockerContext, dockerArgs, лимиты cpu и memory). В ответе возвращается true; ход и результат сборки отслеживаются через пайплайны репозитория.
Параметры:
| Параметр | Место | Тип | Обязательный | Описание |
|---|---|---|---|---|
repositoryId |
Path | UUID | Да | ID репозитория |
Ответ:
true
Ошибки:
404 Not Found— Репозиторий не найден
GET /v1/repository/:repositoryId/last-pipeline
Возвращает самый свежий пайплайн репозитория — итог его последней сборки. Ответ включает счётчик counter, источник запуска trigger, статус (например, passed), git-ревизию и времена начала и завершения. Позволяет проверить результат последней сборки, не запрашивая полный список пайплайнов.
Параметры:
| Параметр | Место | Тип | Обязательный | Описание |
|---|---|---|---|---|
repositoryId |
Path | UUID | Да | ID репозитория |
Ответ:
{
"id": "770e8400-e29b-41d4-a716-446655440002",
"counter": 1,
"trigger": "admin",
"status": "passed",
"revision": "abc123def456",
"startedAt": "2024-01-15T10:30:00+00:00",
"completedAt": "2024-01-15T10:35:00+00:00",
"createdAt": "2024-01-15T10:30:00+00:00",
"updatedAt": "2024-01-15T10:35:00+00:00"
}
Ошибки:
404 Not Found— Репозиторий не найден
POST /v1/repository/:repositoryId/auto-update/enable
Включает автообновление: репозиторий автоматически собирается при push в подключённую ветку. При этом пайплайн репозитория приостанавливается. В ответе возвращается объект Repository с autoUpdate: true.
Параметры:
| Параметр | Место | Тип | Обязательный | Описание |
|---|---|---|---|---|
repositoryId |
Path | UUID | Да | ID репозитория |
Ответ:
{
"id": "660e8400-e29b-41d4-a716-446655440001",
"name": "my-app",
"url": "https://github.com/org/repo.git",
"username": null,
"branch": "main",
"autoUpdate": true,
"paused": true,
"cpu": 1,
"cpuFraction": 20,
"memory": 268435456,
"dockerFile": "Dockerfile",
"dockerContext": ".",
"dockerArgs": [],
"isError": false,
"errorMessages": [],
"errorCount": 0,
"lastBuildAt": "2024-01-15T10:35:00+00:00",
"createdAt": "2024-01-15T10:30:00+00:00",
"updatedAt": "2024-01-15T10:35:00+00:00"
}
Ошибки:
404 Not Found— Репозиторий не найден
POST /v1/repository/:repositoryId/auto-update/disable
Отключает автообновление: репозиторий перестаёт собираться автоматически при push. После вызова приостановленный пайплайн возобновляется. В ответе возвращается объект Repository с autoUpdate: false.
Параметры:
| Параметр | Место | Тип | Обязательный | Описание |
|---|---|---|---|---|
repositoryId |
Path | UUID | Да | ID репозитория |
Ответ:
{
"id": "660e8400-e29b-41d4-a716-446655440001",
"name": "my-app",
"url": "https://github.com/org/repo.git",
"username": null,
"branch": "main",
"autoUpdate": false,
"paused": false,
"cpu": 1,
"cpuFraction": 20,
"memory": 268435456,
"dockerFile": "Dockerfile",
"dockerContext": ".",
"dockerArgs": [],
"isError": false,
"errorMessages": [],
"errorCount": 0,
"lastBuildAt": "2024-01-15T10:35:00+00:00",
"createdAt": "2024-01-15T10:30:00+00:00",
"updatedAt": "2024-01-15T10:35:00+00:00"
}
Ошибки:
404 Not Found— Репозиторий не найден