Обзор

Репозитории 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 — Репозиторий не найден
Назад
Реестры образов
Далее
Репозитории Git / Пайплайны
В этой статье
POST /v1/project/:projectId/repository
PUT /v1/repository/:repositoryId
DELETE /v1/repository/:repositoryId
GET /v1/repository/:repositoryId
GET /v1/project/:projectId/repositories
POST /v1/repository/:repositoryId/build
GET /v1/repository/:repositoryId/last-pipeline
POST /v1/repository/:repositoryId/auto-update/enable
POST /v1/repository/:repositoryId/auto-update/disable

Мы используем файлы cookies

Продолжив работу с сайтом, вы соглашаетесь с   политикой использования файлов Cookies