diff --git a/content/documentation/admin/actions/codescoring/_index.ru.md b/content/documentation/admin/actions/codescoring/_index.ru.md new file mode 100644 index 00000000..e3bbeaa9 --- /dev/null +++ b/content/documentation/admin/actions/codescoring/_index.ru.md @@ -0,0 +1,6 @@ +--- +title: CodeScoring +weight: 100 +params: + no_list: true +--- diff --git a/content/documentation/admin/actions/codescoring/createcodescoringproject.ru.md b/content/documentation/admin/actions/codescoring/createcodescoringproject.ru.md new file mode 100644 index 00000000..731beefd --- /dev/null +++ b/content/documentation/admin/actions/codescoring/createcodescoringproject.ru.md @@ -0,0 +1,33 @@ +--- +title: CreateCodeScoringProject +weight: 10 +--- + +CreateCodeScoringProject — создаёт новый проект в системе CodeScoring. +Действие использует CodeScoring API для регистрации проекта с указанными параметрами: +- название проекта, +- URL репозитория, +- ID VCS системы, +- опция автоматического запуска SCA-анализа после клонирования репозитория. + +### Пример запроса + +```yaml +name: example-project +repository: https://gitlab.example.com/group/project.git +vcs_id: 2 +run_sca_after_clone: true +``` + +### Спецификация запроса + +| Название | Обязательность | Описание | +| -------------------- | ---------------- | ---------------------------------------------------------------------------- | +| name | Да | Название проекта в CodeScoring | +| repository | Да | URL репозитория (например, ) | +| vcs_id | Да | ID VCS системы в CodeScoring (должен быть больше 0) | +| run_sca_after_clone | Нет | Автоматический запуск SCA-анализа после клонирования репозитория | + +### Ответ + +В ответе возвращается объект созданного проекта со следующей информацией: идентификатор проекта (pk), название, тип проекта, описание, информация о репозитории, статус проекта, права доступа, лицензия, количество зависимостей и уязвимостей, языки проекта, статус расписания сканирования и даты первого и последнего SCA-сканирования. diff --git a/content/documentation/admin/actions/codescoring/deletecodescoringproject.ru.md b/content/documentation/admin/actions/codescoring/deletecodescoringproject.ru.md new file mode 100644 index 00000000..c0b56384 --- /dev/null +++ b/content/documentation/admin/actions/codescoring/deletecodescoringproject.ru.md @@ -0,0 +1,18 @@ +--- +title: DeleteCodeScoringProject +weight: 20 +--- + +DeleteCodeScoringProject — удаляет проект в системе CodeScoring по его ID. + +### Пример запроса + +```yaml +id: 1 +``` + +### Спецификация запроса + +| Название | Обязательность | Описание | +| ---------- | ---------------- | ----------------------------- | +| id | Да | ID проекта в CodeScoring | diff --git a/content/documentation/admin/actions/debug/_index.ru.md b/content/documentation/admin/actions/debug/_index.ru.md new file mode 100644 index 00000000..ab53bd3a --- /dev/null +++ b/content/documentation/admin/actions/debug/_index.ru.md @@ -0,0 +1,6 @@ +--- +title: Debug +weight: 110 +params: + no_list: true +--- diff --git a/content/documentation/admin/actions/debug/debug.ru.md b/content/documentation/admin/actions/debug/debug.ru.md new file mode 100644 index 00000000..1375cab4 --- /dev/null +++ b/content/documentation/admin/actions/debug/debug.ru.md @@ -0,0 +1,23 @@ +--- +title: Debug +weight: 10 +--- + +Debug выполняет отладочное действие. Позволяет сделать заданное число циклов ожидания, а также записать произвольные данные в лог и вернуть их в ответе действия. + +### Пример запроса + +```yaml +sleep_time: 1 +sleep_count: 3 +extra: + example_key: example_value +``` + +### Спецификация запроса + +| Название | Обязательность | Описание | Значение по умолчанию | +| --------------- | ---------------- | ----------------------------------------------------------------------------------------------------- | ----------------------- | +| sleep_time | Нет | Длительность одного цикла ожидания в секундах | `1` | +| sleep_count | Нет | Число циклов ожидания | `1` | +| extra | Нет | Произвольный набор пар «ключ–значение», который записывается в лог и возвращается в ответе действия | - | diff --git a/content/documentation/admin/actions/debug/fail.ru.md b/content/documentation/admin/actions/debug/fail.ru.md new file mode 100644 index 00000000..54569ebd --- /dev/null +++ b/content/documentation/admin/actions/debug/fail.ru.md @@ -0,0 +1,18 @@ +--- +title: Fail +weight: 20 +--- + +Fail эмулирует ошибку исполнения действия. Предназначен для использования в процессах в качестве отладочного элемента. + +### Пример запроса + +```yaml +fail: true +``` + +### Спецификация запроса + +| Название | Обязательность | Описание | Значение по умолчанию | +| ---------- | ---------------- | ----------------------------------------------------------------------------------------- | ----------------------- | +| fail | Нет | Если `true`, действие завершается с ошибкой; если `false`, действие завершается успешно | `true` | diff --git a/content/documentation/admin/actions/defectdojo/_index.ru.md b/content/documentation/admin/actions/defectdojo/_index.ru.md new file mode 100644 index 00000000..1b371328 --- /dev/null +++ b/content/documentation/admin/actions/defectdojo/_index.ru.md @@ -0,0 +1,6 @@ +--- +title: DefectDojo +weight: 90 +params: + no_list: true +--- diff --git a/content/documentation/admin/actions/defectdojo/createdefectdojoengagement.ru.md b/content/documentation/admin/actions/defectdojo/createdefectdojoengagement.ru.md new file mode 100644 index 00000000..6c473d30 --- /dev/null +++ b/content/documentation/admin/actions/defectdojo/createdefectdojoengagement.ru.md @@ -0,0 +1,25 @@ +--- +title: CreateDefectdojoEngagement +weight: 30 +--- + + +{{< alert level="info" >}} +Для выполнения действия необходимо наличие токена — API v2 Key пользователя, от имени которого будет запускаться выполнение действия. +{{< /alert >}} + +CreateDefectdojoEngagement — создаёт новый engagement в системе DefectDojo. Действие использует DefectDojo API v2. + +### Пример запроса + +```yaml +name: example engagement +product: '1' +target_start: '2024-06-01' +target_end: '2024-06-30' +lead: '1' +``` + +### Спецификация запроса + +Список полей соответствует официальному API DefectDojo, `/api/v2/engagements`, подробнее — [в документации DefectDojo](https://demo.defectdojo.org/api/v2/oa3/swagger-ui/). diff --git a/content/documentation/admin/actions/defectdojo/createdefectdojoproduct.ru.md b/content/documentation/admin/actions/defectdojo/createdefectdojoproduct.ru.md new file mode 100644 index 00000000..678af935 --- /dev/null +++ b/content/documentation/admin/actions/defectdojo/createdefectdojoproduct.ru.md @@ -0,0 +1,23 @@ +--- +title: CreateDefectdojoProduct +weight: 10 +--- + + +{{< alert level="info" >}} +Для выполнения действия необходимо наличие токена — API v2 Key пользователя, от имени которого будет запускаться выполнение действия. +{{< /alert >}} + +CreateDefectdojoProduct — создаёт новый продукт в системе DefectDojo. Действие использует DefectDojo API v2. + +### Пример запроса + +```yaml +name: example +description: example description +prod_type: 1 +``` + +### Спецификация запроса + +Список полей соответствует официальному API DefectDojo, `/api/v2/products`, подробнее — [в документации DefectDojo](https://demo.defectdojo.org/api/v2/oa3/swagger-ui/). diff --git a/content/documentation/admin/actions/defectdojo/deletedefectdojoproduct.ru.md b/content/documentation/admin/actions/defectdojo/deletedefectdojoproduct.ru.md new file mode 100644 index 00000000..3645682e --- /dev/null +++ b/content/documentation/admin/actions/defectdojo/deletedefectdojoproduct.ru.md @@ -0,0 +1,23 @@ +--- +title: DeleteDefectdojoProduct +weight: 20 +--- + + +{{< alert level="info" >}} +Для выполнения действия необходимо наличие токена — API v2 Key пользователя, от имени которого будет запускаться выполнение действия. +{{< /alert >}} + +DeleteDefectdojoProduct — удаляет продукт из DefectDojo. Действие использует DefectDojo API v2. + +### Пример запроса + +```yaml +id: 1 +``` + +### Спецификация запроса + +| Название | Обязательность | Описание | Значение по умолчанию | +| ------------- | ---------------- | ---------------------------------------------------- | ------------------------ | +| id | Да | Идентификатор продукта, который необходимо удалить | - | diff --git a/content/documentation/admin/actions/gitlab/_index.ru.md b/content/documentation/admin/actions/gitlab/_index.ru.md new file mode 100644 index 00000000..3754448f --- /dev/null +++ b/content/documentation/admin/actions/gitlab/_index.ru.md @@ -0,0 +1,6 @@ +--- +title: Gitlab +weight: 20 +params: + no_list: true +--- diff --git a/content/documentation/admin/actions/gitlab/creategitlabbranches.ru.md b/content/documentation/admin/actions/gitlab/creategitlabbranches.ru.md new file mode 100644 index 00000000..7a5c7929 --- /dev/null +++ b/content/documentation/admin/actions/gitlab/creategitlabbranches.ru.md @@ -0,0 +1,32 @@ +--- +title: CreateGitlabBranches +weight: 40 +--- + +{{< alert level="info" >}} +Для выполнения действия требуется токен пользователя, от имени которого оно будет выполнено. +{{< /alert >}} + +CreateGitlabBranches — создаёт новые ветки в целевом репозитории. + +### Пример запроса + +```yaml +project_id: '0' +branches: + - branch: new-branch + ref: main +``` + +### Спецификация запроса + +| Название | Обязательность | Описание | +| ----------------- | ---------------- | ----------------------------------------------------------------------------- | +| project_id | Да | Идентификатор проекта, в котором необходимо создать ветки | +| branches | Да | Список создаваемых веток | +| branches.branch | Да | Название новой ветки | +| branches.ref | Да | Название существующей ветки или SHA-хеш коммита | + +### Примечание + +Действие осуществляет POST-запрос по URL: `/api/v4/projects/:id/repository/branches`. В случае успешного создания проекта GitLab возвращает информацию о созданных ветках. diff --git a/content/documentation/admin/actions/gitlab/creategitlabgroupvariables.ru.md b/content/documentation/admin/actions/gitlab/creategitlabgroupvariables.ru.md new file mode 100644 index 00000000..61bb4958 --- /dev/null +++ b/content/documentation/admin/actions/gitlab/creategitlabgroupvariables.ru.md @@ -0,0 +1,32 @@ +--- +title: CreateGitlabGroupVariables +weight: 80 +--- + +{{< alert level="info" >}} +Для выполнения действия требуется токен пользователя, от имени которого оно будет выполнено. +{{< /alert >}} + +CreateGitlabGroupVariables — создаёт переменные (variables) на уровне группы в GitLab. + +### Пример запроса + +```yaml +group_id: '0' +variables: + - key: EXAMPLE_VARIABLE + value: value +``` + +### Спецификация запроса + +| Название | Обязательность | Описание | +| ----------------- | ---------------- | ------------------------------------------------------------------------------ | +| group_id | Да | Идентификатор группы, в котором необходимо создать переменные | +| variables | Да | Список создаваемых переменных | + +Список полей для переменных соответствует официальному GitLab Group-level Variables API, `/groups/:id/variables`, подробнее — [в документации GitLab](https://docs.gitlab.com/api/group_level_variables/#create-variable). + +### Примечание + +Действие осуществляет POST-запрос по URL: `/api/v4/groups/:id/variables`. diff --git a/content/documentation/admin/actions/gitlab/creategitlabmergerequest.ru.md b/content/documentation/admin/actions/gitlab/creategitlabmergerequest.ru.md new file mode 100644 index 00000000..8c806a19 --- /dev/null +++ b/content/documentation/admin/actions/gitlab/creategitlabmergerequest.ru.md @@ -0,0 +1,62 @@ +--- +title: CreateGitlabMergeRequest +weight: 70 +--- + +{{< alert level="info" >}} +Для выполнения действия необходимы учётные данные: + +- `password` — пароль (токен) пользователя, от имени которого будет запускаться выполнение действия. +- `username` — имя пользователя, от которого будет запускаться выполнение действия. +{{< /alert >}} + +CreateGitlabMergeRequest — создаёт новый Merge Request (MR) в целевом репозитории. В Merge Request добавляются файлы, хранящиеся в репозитории-источнике. Файлы могут содержать переменные, значение которых будет подставлено в момент создания MR. + +### Пример запроса + +```yaml +source_project_id: '0' +source_project_branch: example +source_project_tag: v1.0.0 +target_project_id: '0' +merge_request_spec: + source_branch: example + target_branch: '1' + title: example +additionalIgnoreFiles: + - .ignore + - .example +values: + key1: value1 + nested: + enabled: true + subkey: 123 +``` + +### Спецификация запроса + +| Название | Обязательность | Описание | Значение по умолчанию | +| ------------------------- | ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- | +| source_project_id | Да | Идентификатор проекта, который служит источником для Merge Request | - | +| target_project_id | Да | Идентификатор целевого проекта, в котором будет сформирован Merge Request | - | +| merge_request_spec | Да | Спецификация, соответствующая [GitLab Merge Requests API](https://docs.gitlab.com/ee/api/merge_requests.html#create-mr) | - | +| source_project_tag | Нет | Тег в проекте-источнике, из которого будет сформирован Merge Request. Если не указан, используется ветка в проекте-источнике | - | +| source_project_branch | Нет | Ветка в проекте-источнике, из которой будет сформирован Merge Request | main | +| additionalIgnoreFiles | Нет | Список файлов, содержащих пути для исключения из MR. Заполняется по аналогии с [.templateignore](createrepositoryfromtemplate/#templateignore) | - | +| values | Нет | Переменные, используемые при шаблонизации, в формате `ключ: значение` | - | + +### Алгоритм работы + +Платформа: + +1. Клонирует репозиторий-шаблон для генерации MR по его идентификатору (`source_project_id`). Подробнее — [в «Деталях работы»](createrepositoryfromtemplate/#детали-работы). +1. Считывает файл `values.yaml`, хранящийся в корне репозитория, и определяет переменные по умолчанию для шаблонизации. +1. Считывает переменные, передаваемые при запуске действия, и объединяет (merge) их с переменными из `values.yaml`. Приоритет отдаётся переменным, передаваемым при запуске действия. +1. Считывает файл `.templateignore` и определяет директории и файлы, исключаемые из шаблонизации. +1. Рендерит файлы из шаблонов, учитывая `values.yaml` и переданных в действие переменных. +1. Изменяет удалённый (remote) репозиторий на целевой, согласно его ID (`target_project_id`), и выполняет git push в ветку в проекте-источнике (`source_project_branch`), либо в основную ветку `main`. +1. Создаёт MR согласно заданным настройкам путём отправки POST-запроса в GitLab API. + +### Примечание + +Действие осуществляет POST-запрос по URL: `/api/v4/projects/:id/merge_requests`. diff --git a/content/documentation/admin/actions/gitlab/creategitlabproject.ru.md b/content/documentation/admin/actions/gitlab/creategitlabproject.ru.md new file mode 100644 index 00000000..94fb1a4a --- /dev/null +++ b/content/documentation/admin/actions/gitlab/creategitlabproject.ru.md @@ -0,0 +1,36 @@ +--- +title: CreateGitlabProjecte +weight: 20 +--- + +{{< alert level="info" >}} +Для выполнения действия требуется токен пользователя, от имени которого оно будет выполнено. +{{< /alert >}} + +CreateGitlabProject — создаёт новый проект в GitLab. Действие осуществляет вызов GitLab API для создания проекта с указанными параметрами, такими как название, путь проекта, описание и другие настройки. Для аутентификации используется GitLab token, который должен быть предоставлен в учётных данных. + +### Пример запроса + +```yaml +name: example +path: example +description: example +default_branch: main +initialize_with_readme: false +namespace_id: '0' +``` + +### Спецификация запроса + +| Название | Обязательность | Описание | Значение по умолчанию | +| ------------------------ | ---------------- | ------------------------------------------------------------------------------------ | ----------------------- | +| name | Да | Название проекта, который будет создан в GitLab | - | +| path | Да | URL-совместимый путь проекта. Обычно совпадает с названием, но может отличаться | - | +| default_branch | Да | Название ветки, которая будет использоваться по умолчанию, например, «main» | - | +| namespace_id | Да | Идентификатор неймспейса (namespace) в GitLab, в котором будет создан проект | - | +| initialize_with_readme | Нет | Флаг, определяющий, нужно ли инициализировать проект с файлом README | false | +| description | Нет | Описание проекта, которое будет видно пользователям | - | + +### Примечание + +Действие осуществляет POST-запрос по URL: `/api/v4/projects`, передавая параметры запроса в формате JSON. В случае успешного создания проекта GitLab возвращает данные о вновь созданном проекте. diff --git a/content/documentation/admin/actions/gitlab/creategitlabprojectvariables.ru.md b/content/documentation/admin/actions/gitlab/creategitlabprojectvariables.ru.md new file mode 100644 index 00000000..15032a88 --- /dev/null +++ b/content/documentation/admin/actions/gitlab/creategitlabprojectvariables.ru.md @@ -0,0 +1,32 @@ +--- +title: CreateGitlabGroupVariables +weight: 90 +--- + +{{< alert level="info" >}} +Для выполнения действия требуется токен пользователя, от имени которого оно будет выполнено. +{{< /alert >}} + +CreateGitlabProjectVariables — создаёт переменные на уровне проекта в GitLab. + +### Пример запроса + +```yaml +project_id: '0' +variables: + - key: EXAMPLE_VARIABLE + value: value +``` + +### Спецификация запроса + +| Название | Обязательность | Описание | +| ----------------- | ---------------- | ------------------------------------------------------------------------------ | +| project_id | Да | Идентификатор проекта, в котором необходимо создать переменные | +| variables | Да | Список создаваемых переменных | + +Список полей для переменных соответствует официальному GitLab Project-level CI/CD variables API, `/projects/:id/variables`, подробнее — [в документации GitLab](https://docs.gitlab.com/api/project_level_variables/#create-a-variable). + +### Примечание + +Действие осуществляет POST-запрос по URL: `/api/v4/projects/:id/variables`. diff --git a/content/documentation/admin/actions/gitlab/creategitlabprojectwebhook.ru.md b/content/documentation/admin/actions/gitlab/creategitlabprojectwebhook.ru.md new file mode 100644 index 00000000..c4e79b64 --- /dev/null +++ b/content/documentation/admin/actions/gitlab/creategitlabprojectwebhook.ru.md @@ -0,0 +1,36 @@ +--- +title: CreateGitlabProjectWebhook +weight: 30 +--- + +{{< alert level="info" >}} +Для выполнения действия требуется токен пользователя, от имени которого оно будет выполнено. +{{< /alert >}} + +CreateGitlabProjectWebhook — создаёт вебхук в проекте GitLab. + +### Пример запроса + +```yaml +project_id: '0' +url: https://example.com +push_events: true +issues_events: true +merge_requests_events: true +pipeline_events: true +``` + +### Спецификация запроса + +| Название | Обязательность | Описание | +| ----------------------- | ------------------ | ------------------------------------------------------------ | +| project_id | Да | Идентификатор проекта, в котором необходимо создать вебхук | +| url | Да | URL-адрес вебхука | +| push_events | Да | Запускать вебхук при push в репозиторий | +| issues_events | Да | Запускать вебхук при создании Issue | +| merge_requests_events | Да | Запускать вебхук при создании Merge Request | +| pipeline_events | Да | Запускать вебхук при запуске Pipeline | + +### Примечание + +Действие осуществляет POST-запрос по URL: `/api/v4/projects/:id/hooks`. diff --git a/content/documentation/admin/actions/gitlab/creategitlabrelease.ru.md b/content/documentation/admin/actions/gitlab/creategitlabrelease.ru.md new file mode 100644 index 00000000..511b106b --- /dev/null +++ b/content/documentation/admin/actions/gitlab/creategitlabrelease.ru.md @@ -0,0 +1,35 @@ +--- +title: CreateGitlabRelease +weight: 60 +--- + +{{< alert level="info" >}} +Для выполнения действия требуется токен пользователя, от имени которого оно будет выполнено. +{{< /alert >}} + +CreateGitlabRelease — создаёт релиз GitLab на основе уже существующего тега. + +### Пример запроса + +```yaml +project_id: '0' +tag_name: v1.0.0 +name: Release v1.0.0 +description: | + ## Изменения: + - Новая функция. + - Исправления ошибок. +``` + +### Спецификация запроса + +| Название | Обязательность | Описание | +| -------------- | ---------------- | -------------------------------------------------------------------------------------------- | +| project_id | Да | Идентификатор проекта, в котором необходимо создать релиз | +| tag_name | Да | Название существующего тега, на основе которого формируется релиз | +| name | Да | Название релиза, отображаемое в GitLab | +| description | Нет | Описание релиза в формате Markdown | + +### Примечание + +Действие осуществляет POST-запрос по URL: `/api/v4/projects/:id/releases`. diff --git a/content/documentation/admin/actions/gitlab/creategitlabtag.ru.md b/content/documentation/admin/actions/gitlab/creategitlabtag.ru.md new file mode 100644 index 00000000..21460a1f --- /dev/null +++ b/content/documentation/admin/actions/gitlab/creategitlabtag.ru.md @@ -0,0 +1,32 @@ +--- +title: CreateGitlabTag +weight: 50 +--- + +{{< alert level="info" >}} +Для выполнения действия требуется токен пользователя, от имени которого оно будет выполнено. +{{< /alert >}} + +CreateGitlabTag — создаёт новый тег в проекте GitLab. + +### Пример запроса + +```yaml +project_id: '0' +tag_name: v1.0.0 +ref: main +message: Tag description +``` + +### Спецификация запроса + +| Название | Обязательность | Описание | +| ---------------------- | ---------------- | ------------------------------------------------------------------------------- | +| project_id | Да | Идентификатор проекта, в котором необходимо создать тег | +| tag_name | Да | Название тега | +| ref | Да | Название ветки, тег или SHA-хеш коммита, на который будет ссылаться новый тег | +| message | Да | Описание тега | + +### Примечание + +Действие осуществляет POST-запрос по URL: `/api/v4/projects/:id/repository/tags`. diff --git a/content/documentation/admin/actions/gitlab/createrepositoryfromtemplate.ru.md b/content/documentation/admin/actions/gitlab/createrepositoryfromtemplate.ru.md new file mode 100644 index 00000000..c0ad7acc --- /dev/null +++ b/content/documentation/admin/actions/gitlab/createrepositoryfromtemplate.ru.md @@ -0,0 +1,396 @@ +--- +title: CreateRepositoryFromTemplate +weight: 10 +--- + +{{< alert level="info" >}} +Для выполнения действия необходимы учётные данные: + +- `password` — пароль (токен) пользователя, от имени которого будет запускаться выполнение действия. +- `username` — имя пользователя, от которого будет запускаться выполнение действия. +{{< /alert >}} + +CreateRepositoryFromTemplate — создаёт новый репозиторий из шаблона в GitLab. Механизм рендеринга основан на [Go template](https://developer.hashicorp.com/nomad/docs/reference/go-template-syntax) и поддерживает все встроенные методы, а также расширения, добавленные в платформу. + +### Пример запроса + +```yaml +sourceBranch: main +sourceTag: v1.0.0 +templateRepositoryUrl: https://gitlab.example.com/example-1.git +targetRepositoryUrl: https://gitlab.example.com/example-2.git +targetBranch: master +additionalIgnoreFiles: + - .ignore + - .example +values: + key1: value1 + nested: + enabled: true + subkey: 123 +``` + +### Спецификация запроса + +| Название | Обязательность | Описание | Значение по умолчанию | +| -------------------------- | ---------------- | -------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- | +| templateRepositoryUrl | Да | URL шаблонного репозитория | - | +| targetRepositoryUrl | Да | URL репозитория, который будет создан в результате выполнения действия | - | +| values | Да | Переменные, используемые при шаблонизации, в формате `ключ: значение` | - | +| additionalIgnoreFiles | Нет | Список файлов, содержащих пути для исключения из целевого репозитория. Заполняется по аналогии с [.templateignore](#templateignore) | - | +| sourceTag | Нет | Тег шаблонного репозитория, который будет использоваться при шаблонизации. Если не указан, используется ветка шаблонного репозитория | - | +| sourceBranch | Нет | Ветка шаблонного репозитория, которая будет использоваться при шаблонизации | main | +| targetBranch | Нет | Ветка целевого репозитория, которая будет создана в результате выполнения действия | main | + +### Алгоритм работы + +Платформа: + +1. Клонирует шаблонный репозиторий по указанному URL (`templateRepositoryUrl`), используя в качестве ref либо `sourceTag`, либо `sourceBranch`, либо ветку `main`. +1. Считывает файл `values.yaml`, хранящийся в корне репозитория, и определяет переменные по умолчанию для шаблонизации. +1. Считывает переменные, передаваемые при запуске действия, и объединяет (merge) их с переменными из `values.yaml`. Приоритет при merge отдаётся переменным, передаваемым при запуске действия. +1. Считывает файл `.templateignore` и определяет директории и файлы, исключаемые из шаблонизации. +1. Рендерит из шаблонов файлы, учитывая `values.yaml` и переданные в действие переменные. +1. Изменяет удалённый (remote) репозиторий на целевой (`targetRepositoryUrl`) и делает git push в целевую ветку (`targetBranch`), либо в основную ветку `main`. + +### Детали работы + +Действие поддерживает шаблонизацию имён директорий и файлов. Для этого необходимо в их название добавить выражение в формате [Go template](https://developer.hashicorp.com/nomad/docs/reference/go-template-syntax). +Например, директория `src/{{ .module }}/utils` при наличии value `module` со значением `example` будет отрендерена в директорию `src/example/utils` в целевом репозитории. + +Если после рендеринга из шаблона содержимое файла будет отсутствовать, файл не создаётся. Например, файл с содержимым: + +```go +{{- if .createContent }} +- Это контент, который будет отображаться, если переменная createContent == true +{{- end }} +``` + +не будет создан, если переменная `createContent` имеет значение `false`. Аналогичным образом, не будут созданы файлы, изначально являющиеся пустыми. + +При отсутствии переменных для шаблонизации одновременно в файле `values.yaml` и в переменных, передаваемых при запуске действия, рендеринг завершится с ошибкой и целевой репозиторий создан не будет. + +### Переменные шаблонного репозитория + +Для добавления переменных по умолчанию, используемых при шаблонизации, необходимо создать в корне репозитория файл values.yaml с соответствующим содержимым. + +Пример файла `values.yaml`: + +```yaml +module: example +createContent: false +``` + +Файл `values.yaml` является опциональным. + + + +### Исключение файлов + +Некоторые файлы могут содержать переменные в формате [Go template](https://developer.hashicorp.com/nomad/docs/reference/go-template-syntax), которые необходимо сохранять при рендеринге репозитория из шаблона, например, Helm-чарты в директории `helm`. Директория `.git` игнорируется всегда. + +Для исключения подобных файлов из механизма рендеринга следует добавить в корень репозитория файл `.templateignore` с соответствующим содержимым. + +В каждой строке `.templateignore` задаётся одно правило — путь или маска. Если в строке есть `{{`, вся строка выполняется как один шаблон Go с теми же переменными и функциями, что при подстановке в имена файлов и каталогов (подробнее — [«Как обрабатывается строка правила»](#templateignore-templates)). Если `{{` в строке нет, подстановка переменных из `values.yaml` и из запроса действия не делается: строка читается как есть и сравнивается с относительным путём на диске, допускаются литералы и символы маски `*` и `**`. + +Пример файла `.templateignore` только с масками пути, без шаблонов подстановки, для игнорирования содержимого директорий `helm`, `docs`: + +```sh +helm/** +docs/** +``` + +#### Добавление путей в игнорирование + +1. В корне шаблонного репозитория создайте или отредактируйте файл `.templateignore` (по одному правилу на строку). +1. Каждая строка — это одно правило: путь от корня репозитория. В нём допускаются обычные символы пути и маски: звёздочка `*` в имени сегмента, последовательность `**` — для произвольной глубины вложенных каталогов. Платформа сопоставляет относительный путь с маской по встроенным правилам (аналогично распространённым соглашениям для масок в файлах игнорирования в системах контроля версий). +1. Чтобы подставить фрагмент пути из `values.yaml` или из поля `values` запроса действия, используйте в строке конструкции Go template (`{{ ... }}`). Если в строке есть `{{`, платформа обрабатывает всю строку от начала до конца как один шаблон Go: нельзя оставить часть строки «простым текстом» и шаблонизировать только середину пути. Примеры — в разделе [«Примеры Go template в `.templateignore`»](#templateignore-go-examples). +1. Пустые строки и строки, начинающиеся с `#`, при разборе файла пропускаются — их можно использовать для комментариев. + +#### Примеры без подстановки (только маски пути) + +Отдельные файлы в корне: + +```sh +package-lock.json +yarn.lock +LICENSE +.env.local +``` + +Каталоги целиком и типичные артефакты сборки: + +```sh +vendor/** +node_modules/** +dist/** +build/tmp/** +``` + +Вложенность по маске: + +```sh +docs/**/*.pdf +charts/*/values.schema.json +.github/workflows/** +``` + +Секреты по расширению во всём дереве: + +```sh +**/*.pem +**/*.key +``` + + + +#### Обработка строки правила + +Переменные для раскрытия правил те же, что объединены из `values.yaml` в корне шаблонного репозитория и из поля `values` в запросе действия (приоритет у `values` в запросе). + +Для каждой непустой строки из `.templateignore` или из файла из `additionalIgnoreFiles` платформа делает следующее. + +1. В список правил всегда попадает строка как в файле, без изменений. Именно её потом сравнивают с путём к файлу в первую очередь — это нужно, когда в именах на диске ещё есть фрагменты вроде `{{ .module }}` до переименования. +1. Если в строке есть `{{`, платформа один раз прогоняет всю строку через шаблонизатор [Go template](https://developer.hashicorp.com/nomad/docs/reference/go-template-syntax) с теми же возможностями, что при подстановке в имена файлов и каталогов (встроенные функции платформы и набор Sprig). Если `{{` в строке нет, этот шаг пропускают. +1. Если шаг подстановки был и полученный текст отличается от строки в файле (включая случай «на выходе пусто»), в список правил добавляют вторую запись — уже с этим полученным текстом. Итого из одной строки файла может получиться две записи в списке. При проверке пути к файлу смотрят обе: достаточно совпадения с любой из них — файл попадает под правило. + +Дальше при обходе дерева для каждого пути к файлу вычисляется путь относительно корня клонированной копии (с прямыми слешами). Путь сравнивается с каждым правилом: сначала по правилам сопоставления с маской (в том числе с использованием `*` и `**`), при необходимости — по точному совпадению строки правила и относительного пути. + +Так одна строка в файле может задать два правила: например, исходное `charts/{{ .name }}/**` (чтобы не трогать путь до переименования каталогов), и раскрытое `charts/billing/**` (чтобы совпадало с путём после подстановки переменных в имена на диске). Поэтому правила работают и «до», и «после» этапа переименования каталогов по шаблону. + +Если шаблон в строке синтаксически неверен или обращается к отсутствующему полю, раскрытие правил завершается ошибкой, и рендер репозитория не продолжается. + +Поле `additionalIgnoreFiles` в действии задаёт имена дополнительных файлов в корне репозитория; в каждом из них — такие же строки-правила, как в `.templateignore`, с тем же раскрытием шаблонов. Но смысл другой: совпавшие пути убирают из рабочей копии (каталог или файл удаляют), и делают это дважды — в начале и в конце цепочки обработки, чтобы эти объекты не участвовали в дальнейших шагах и не попали в итоговый репозиторий. + +Файл `.templateignore`, наоборот, означает «не шаблонизировать»: для совпавших путей платформа не подставляет переменные в содержимое файлов и не применяет к соответствующим каталогам переименование по шаблону в пути. Сами файлы и каталоги при этом не удаляются только из‑за записи в `.templateignore` — они остаются в копии, но обрабатываются как обычный текст и обычные имена, без шага шаблонизации. + + + +#### Примеры Go template в .templateignore + +Ниже в каждом примере показаны фрагменты `values.yaml` (или эквивалентные поля в `values` запроса) и строки `.templateignore`. Несколько независимых правил задают несколькими строками файла: результат одной строки-шаблона — одна строка с маской; перевод строк внутри результата шаблона не делит правило на несколько. + +Имя каталога в правиле берётся из `values.yaml` или из `values` действия: + +`values.yaml`: + +```yaml +project: payment-gateway +``` + +`.templateignore`: + +```go +{{ .project }}/legacy/** +``` + +В набор правил попадут строки `{{ .project }}/legacy/**` и `payment-gateway/legacy/**`. + +Сегмент пути из переменной и фиксированная часть, которая сохраняется после подстановки значения переменной: + +`values.yaml`: + +```yaml +lang: ru +``` + +`.templateignore`: + +```go +apps/{{ .lang }}/messages.yaml +``` + +Условное правило в одной строке работает следующим образом: при `skipGenerated: false` подстановка даёт пустую строку, которая всё равно добавляется вторым правилом. Исходная строка с `{{` используется как маска пути и обычно не совпадает с реальными путями. При `skipGenerated: true` вторым правилом становится `generated/**`): + +`values.yaml`: + +```yaml +skipGenerated: false +``` + +`.templateignore`: + +```go +{{- if .skipGenerated }}generated/**{{- end }} +``` + +Вариант «игнорировать только не production»: + +`values.yaml`: + +```yaml +tier: staging +``` + +`.templateignore`: + +```go +{{- if ne .tier "prod" }}mock/**{{- end }} +``` + +Использование `printf` для сборки строки маски (удобно, если имя чарта в переменной): + +`values.yaml`: + +```yaml +chartName: wordpress +``` + +`.templateignore`: + +```go +{{ printf "charts/%s/**" .chartName }} +``` + +Значение по умолчанию для «пустого» значения — функция `default` из набора Sprig. Поле в данных должно существовать (иначе при раскрытии сработает `missingkey=error`); для «не задано в YAML» заведите ключ с пустой строкой или используйте условие `if` / `index`: + +`values.yaml`: + +```yaml +envName: "" +``` + +`.templateignore`: + +```go +{{ default "dev" .envName }}/secrets/** +``` + +При пустом `envName` в правило попадёт и `{{ default "dev" .envName }}/secrets/**`, и `dev/secrets/**`. + +Опциональный сегмент пути ([`with`](https://pkg.go.dev/text/template#hdr-Actions)): + +`values.yaml`: + +```yaml +analyticsModule: tracking +``` + +`.templateignore`: + +```go +{{ with .analyticsModule }}{{ . }}/vendor/**{{ end }} +``` + +Если `analyticsModule` пусто, шаблон даёт пустую строку (правила раскрытия приведены выше). + +Доступ к полю вложенной структуры по строковому ключу [`index`](https://pkg.go.dev/text/template#hdr-Functions): + +`values.yaml`: + +```yaml +regions: + primary: eu-west +``` + +`.templateignore`: + +```go +configs/{{ index .regions "primary" }}/bootstrap.yaml +``` + +Удаление пробелов в сегменте имени — функция `trim` из набора Sprig: + +`values.yaml`: + +```yaml +serviceName: " billing-api " +``` + +`.templateignore`: + +```go +{{ trim .serviceName " " }}/logs/** +``` + +Несколько фрагментов в одной маске: + +`values.yaml`: + +```yaml +base: services +variant: canary +``` + +`.templateignore`: + +```go +{{ .base }}/{{ .variant }}/**/*.tmp +``` + +#### Примеры для `additionalIgnoreFiles` + +В спецификации действия перечисляются имена файлов в корне репозитория (например, `.ship-ignore`, `.ci-remove`). Формат строк внутри таких файлов тот же: комментарии `#`, пустые строки, маски пути, при необходимости — шаблоны Go в строках. + +Файл `.ship-ignore` в шаблоне: + +```sh +# не попадает в целевой репозиторий +local/fixtures/** +scratchpad.md +``` + +Фрагмент запроса действия: + +```yaml +additionalIgnoreFiles: + - .ship-ignore +``` + +Шаблон в файле для `additionalIgnoreFiles` (удаление каталога, имя из переменных): + +Файл `.env-drop` в корне шаблона: + +```go +{{ .obsoleteDir }}/** +``` + +При `obsoleteDir: legacy-ui` из `values` после раскрытия в списке удаления окажутся и `{{ .obsoleteDir }}/**`, и `legacy-ui/**` — совпавшие пути будут удалены из копии перед финальными шагами. + +{{< alert level="info" >}} +Учитывайте различия: +- `.templateignore` оставляет файлы на диске, но отключает для них переименование пути и рендер содержимого; +- списки из `additionalIgnoreFiles` удаляют совпавшие пути из рабочей копии. +{{< /alert >}} + +### Пример структуры директорий шаблонного репозитория + +```sh +├── example-folder-01 +│ ├── example-file-01 +│ └── {{ .example }}-file-02 +├── {{ .example }}-folder-02 +│ └── ... +├── values.yaml +└── .templateignore +``` + +Если переменная `example` при рендере репозитория примет значение `new`, то итоговая структура после рендера будет выглядеть следующим образом: + +```sh +├── example-folder-01 +│ ├── example-file-01 +│ └── new-file-02 +├── new-folder-02 +│ └── ... +├── values.yaml +└── .templateignore +``` + + + +### Локальная отладка + +Для локальной отладки шаблонов доступна утилита `ddp-render-dir`. + +Утилита: + +1. Создаёт копию исходной директории. +1. Выполняет рендеринг файлов в этой директории по тем же правилам, что и действие создания репозиториев из шаблонов. + +Ключи командной строки для запуска: + +* `--source-dir` — исходная директория, которую необходимо отрендерить. +* `--target-dir` — директория, в которую будет помещен результат рендеринга. +* `--values` (опционально) — путь к файлу `values.yaml` с переменными, которые будут использоваться при рендеринге. +* `--ignore-files` (опционально) — список файлов, содержащих пути для исключения из целевого репозитория. diff --git a/content/documentation/admin/actions/gitlab/deletegitlabproject.ru.md b/content/documentation/admin/actions/gitlab/deletegitlabproject.ru.md new file mode 100644 index 00000000..2d3059d4 --- /dev/null +++ b/content/documentation/admin/actions/gitlab/deletegitlabproject.ru.md @@ -0,0 +1,26 @@ +--- +title: StartGitlabPipeline +weight: 110 +--- + +{{< alert level="info" >}} +Для выполнения действия требуется токен пользователя, от имени которого оно будет выполнено. +{{< /alert >}} + +DeleteGitlabProject — удаляет существующий проект в GitLab. Действие осуществляет вызов GitLab API для удаления проекта. Для аутентификации используется GitLab token, который должен быть предоставлен в учётных данных. + +### Пример запроса + +```yaml +project_id: 0 +``` + +### Спецификация запроса + +| Название | Обязательность | Описание | +| --------------------------- | ---------------- | ---------------------------------------------------- | +| project_id | Да | Идентификатор проекта, который необходимо удалить | + +### Примечание + +Действие осуществляет DELETE-запрос по URL: `/api/v4/projects/:id`. diff --git a/content/documentation/admin/actions/gitlab/startgitlabpipeline.ru.md b/content/documentation/admin/actions/gitlab/startgitlabpipeline.ru.md new file mode 100644 index 00000000..bb3e7869 --- /dev/null +++ b/content/documentation/admin/actions/gitlab/startgitlabpipeline.ru.md @@ -0,0 +1,34 @@ +--- +title: StartGitlabPipeline +weight: 100 +--- + +{{< alert level="info" >}} +Для выполнения действия требуется токен пользователя, от имени которого оно будет выполнено. +{{< /alert >}} + +StartGitlabPipeline — запускает выполнение пайплайна в GitLab. + +### Пример запроса + +```yaml +project_id: 0 +ref: main +variables: + - key: example-key + value: example-value +``` + +### Спецификация запроса + +| Название | Обязательность | Описание | +| --------------------------- | ---------------- | ---------------------------------------------------------------------------- | +| project_id | Да | Идентификатор проекта, в котором необходимо запустить пайплайн | +| ref | Да | Название ветки, тег или SHA-хеш коммита, на котором будет запущен пайплайн | +| variables | Нет | Список переменных, которые необходимо передать в запускаемый пайплайн | +| variables.key | Да | Название переменной | +| variables.value | Да | Значение переменной | + +### Примечание + +Действие осуществляет POST-запрос по URL: `/api/v4/projects/:id/pipeline`. diff --git a/content/documentation/admin/actions/kafka/_index.ru.md b/content/documentation/admin/actions/kafka/_index.ru.md new file mode 100644 index 00000000..58066175 --- /dev/null +++ b/content/documentation/admin/actions/kafka/_index.ru.md @@ -0,0 +1,6 @@ +--- +title: Apache Kafka +weight: 40 +params: + no_list: true +--- diff --git a/content/documentation/admin/actions/kafka/createkafkaacls.ru.md b/content/documentation/admin/actions/kafka/createkafkaacls.ru.md new file mode 100644 index 00000000..6e0ecb5b --- /dev/null +++ b/content/documentation/admin/actions/kafka/createkafkaacls.ru.md @@ -0,0 +1,109 @@ +--- +title: CreateKafkaACLs +weight: 50 +--- + + +{{< alert level="info" >}} +Для выполнения действий необходимы учётные данные: +* `user` — имя пользователя, от которого будет запускаться выполнение действия. +* `password` — пароль пользователя, от имени которого будет запускаться выполнение действия. +{{< /alert >}} + +CreateKafkaACLs — создаёт набор ACL в Kafka. + +### Пример запроса + +```yaml +securityProtocol: SASL_PLAINTEXT +saslMechanism: PLAIN +acls: + - topics: + - example_1 + allow: + - User:principal_2 + - Group:principal_3 + deny: + - User:principal_4 + - Group:principal_5 + ops: + - CREATE + - READ + - WRITE + - DELETE + - DESCRIBE + - DESCRIBE_CONFIGS + - ALTER + pattern: LITERAL + - topics: + - example_6 + allow: + - User:principal_7 + allow_hosts: + - 127.0.0.1 + deny: + - User:principal_8 + deny_hosts: + - 127.0.0.1 + ops: + - CREATE + pattern: LITERAL +``` + +### Спецификация запроса + +| Название | Обязательность | Описание | Возможные значения | Значение по умолчанию | +| ------------------------ | ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------- | ------------------------ | +| securityProtocol | Да | Протокол для подключения к Kafka. Подробнее — [в документации Kafka](https://kafka.apache.org/documentation/#adminclientconfigs_security.protocol) | PLAINTEXT, SASL_PLAINTEXT, SASL_SSL | - | +| saslMechanism | Нет | Механизм аутентификации, который будет использовать SASL. Обязателен при использовании протокола SASL_PLAINTEXT или SASL_SSL. Подробнее — [в документации Kafka](https://kafka.apache.org/documentation/#security_sasl_mechanism) | PLAIN, SCRAM-SHA-256, SCRAM-SHA-512 | - | +| acls | Да | Набор ACL, которые необходимо создать | - | - | +| acls.ops | Да | Список операций, для которых будет создано правило | [Список возможных операций](#список-возможных-операций) | - | +| acls.pattern | Да | Тип шаблона | [Список возможных шаблонов](#список-возможных-шаблонов) | - | +| acls.topics | Нет | Список из названий топиков, для которых применяется правило | - | - | +| acls.groups | Нет | Список из названий групп, для которых применяется правило | - | - | +| acls.transactional_ids | Нет | Список из ID транзакций, для которых применяется правило | - | - | +| acls.tokens | Нет | Список токенов, для которых применяется правило | - | - | +| acls.allow | Нет | Список принципалов (user, group), для которых разрешается правило | - | - | +| acls.deny | Нет | Список принципалов (user, group), для которых запрещается правило | - | - | +| acls.hosts | Нет | Список хостов, для которых разрешается операция | - | - | +| acls.deny_hosts | Нет | Список хостов, для которых запрещается операция | - | - | + +### Список возможных шаблонов + +* ANY. +* MATCH. +* LITERAL. +* PREFIXED. + +### Список возможных операций + +Подробнее — [в документации Kafka](https://kafka.apache.org). + +Topics: + +* ALL. +* ALTER. +* ALTER_CONFIGS. +* CREATE. +* DELETE. +* DESCRIBE. +* DESCRIBE_CONFIGS. +* READ. +* WRITE. + +Group: + +* ALL. +* DELETE. +* DESCRIBE. +* READ. + +TransactionalID: + +* ALL. +* DESCRIBE. +* WRITE. + +Tokens: + +* DESCRIBE. diff --git a/content/documentation/admin/actions/kafka/createkafkatopics.ru.md b/content/documentation/admin/actions/kafka/createkafkatopics.ru.md new file mode 100644 index 00000000..38af9321 --- /dev/null +++ b/content/documentation/admin/actions/kafka/createkafkatopics.ru.md @@ -0,0 +1,37 @@ +--- +title: CreateKafkaTopics +weight: 10 +--- + + +{{< alert level="info" >}} +Для выполнения действий необходимы учётные данные: +* `user` — имя пользователя, от которого будет запускаться выполнение действия. +* `password` — пароль пользователя, от имени которого будет запускаться выполнение действия. +{{< /alert >}} + +CreateKafkaTopics — создаёт новые топики в Kafka. + +### Пример запроса + +```yaml +securityProtocol: SASL_PLAINTEXT +saslMechanism: PLAIN +partitions: 1 +replication_factor: 1 +configs: {} +topics: + - example_1 + - example_2 +``` + +### Спецификация запроса + +| Название | Обязательность | Описание | Возможные значения | +| ------------------------- | ---------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | +| securityProtocol | Да | Протокол для подключения к Kafka. Подробнее — [в документации Kafka](https://kafka.apache.org/documentation/#adminclientconfigs_security.protocol) | PLAINTEXT, SASL_PLAINTEXT, SASL_SSL | +| saslMechanism | Нет | Механизм аутентификации, который будет использовать SASL. Обязателен при использовании протокола SASL_PLAINTEXT или SASL_SSL. Подробнее — [в документации Kafka](https://kafka.apache.org/documentation/#security_sasl_mechanism) | PLAIN, SCRAM-SHA-256, SCRAM-SHA-512 | +| partitions | Да | Количество разделов (партиций), на которые будет разделён топик | - | +| replication_factor | Да | Количество копий (реплик) каждой партиции топика, которые необходимо разместить на разных брокерах | - | +| configs | Да | Конфигурация в формате ключ-значение для создаваемых топиков | Значения приведены [в документации Kafka](https://kafka.apache.org/documentation/#topicconfigs) | +| topics | Да | Список названий топиков, которые необходимо создать | - | diff --git a/content/documentation/admin/actions/kafka/createkafkausers.ru.md b/content/documentation/admin/actions/kafka/createkafkausers.ru.md new file mode 100644 index 00000000..4fe85059 --- /dev/null +++ b/content/documentation/admin/actions/kafka/createkafkausers.ru.md @@ -0,0 +1,41 @@ +--- +title: CreateKafkaUsers +weight: 30 +--- + + +{{< alert level="info" >}} +Для выполнения действий необходимы учётные данные: +* `user` — имя пользователя, от которого будет запускаться выполнение действия. +* `password` — пароль пользователя, от имени которого будет запускаться выполнение действия. +{{< /alert >}} + +CreateKafkaUsers — создаёт новых пользователей SASL/SCRAM в Kafka. + +### Пример запроса + +```yaml +securityProtocol: SASL_PLAINTEXT +saslMechanism: PLAIN +users: + - user: example_user_1 + password: example_password_user_1 + mechanism: SCRAM-SHA-256 + iterations: 4096 + - user: example_user_2 + password: example_password_user_2 + mechanism: SCRAM-SHA-256 + iterations: 4096 +``` + +### Спецификация запроса + +| Название | Обязательность | Описание | Возможные значения | +| ------------------- | ---------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | +| securityProtocol | Да | Протокол для подключения к Kafka. Подробнее — [в документации Kafka](https://kafka.apache.org/documentation/#adminclientconfigs_security.protocol) | PLAINTEXT, SASL_PLAINTEXT, SASL_SSL | +| saslMechanism | Нет | Механизм аутентификации, который будет использовать SASL. Обязателен при использовании протокола SASL_PLAINTEXT или SASL_SSL. Подробнее — [в документации Kafka](https://kafka.apache.org/documentation/#security_sasl_mechanism) | PLAIN, SCRAM-SHA-256, SCRAM-SHA-512 | +| users | Да | Набор пользователей, которых необходимо создать | - | +| users.user | Да | Имя создаваемого пользователя | - | +| users.password | Да | Пароль создаваемого пользователя | - | +| users.mechanism | Да | Механизм аутентификации создаваемого пользователя | SCRAM-SHA-256, SCRAM-SHA-512 | +| users.iterations | Да | Количество итераций, которые будут применяться для хеширования пароля | От 4096 до 16384 | diff --git a/content/documentation/admin/actions/kafka/deletekafkaacls.ru.md b/content/documentation/admin/actions/kafka/deletekafkaacls.ru.md new file mode 100644 index 00000000..23ef47b7 --- /dev/null +++ b/content/documentation/admin/actions/kafka/deletekafkaacls.ru.md @@ -0,0 +1,127 @@ +--- +title: DeleteKafkaACLs +weight: 60 +--- + + +{{< alert level="info" >}} +Для выполнения действий необходимы учётные данные: +* `user` — имя пользователя, от которого будет запускаться выполнение действия. +* `password` — пароль пользователя, от имени которого будет запускаться выполнение действия. +{{< /alert >}} + +DeleteKafkaACLs — удаляет набор ACL в Kafka. + +### Пример запроса + +```yaml +securityProtocol: SASL_PLAINTEXT +saslMechanism: PLAIN +acls: + - topics: + - example_1 + allow: + - User:principal_2 + - Group:principal_3 + allow_hosts: + - 127.0.0.1 + deny: + - User:principal_4 + - Group:principal_5 + deny_hosts: + - 127.0.0.1 + ops: + - CREATE + - READ + - WRITE + - DELETE + - DESCRIBE + - DESCRIBE_CONFIGS + - ALTER + pattern: LITERAL + - any_topic: true + any_group: true + any_transactional_id: true + any_allow: true + any_allow_hosts: true + any_deny: true + any_deny_hosts: true + ops: + - ANY + pattern: ANY + - any_resource: true + any_allow: true + any_allow_hosts: true + any_deny: true + any_deny_hosts: true + ops: + - ANY + pattern: ANY +``` + +### Спецификация запроса + +| Название | Обязательность | Описание | Возможные значения | Значение по умолчанию | +| --------------------------- | ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------- | ------------------------ | +| securityProtocol | Да | Протокол для подключения к Kafka. Подробнее — [в документации Kafka](https://kafka.apache.org/documentation/#adminclientconfigs_security.protocol) | PLAINTEXT, SASL_PLAINTEXT, SASL_SSL | - | +| saslMechanism | Нет | Механизм аутентификации, который будет использовать SASL. Обязателен при использовании протокола SASL_PLAINTEXT или SASL_SSL. Подробнее — [в документации Kafka](https://kafka.apache.org/documentation/#security_sasl_mechanism) | PLAIN, SCRAM-SHA-256, SCRAM-SHA-512 | - | +| acls | Да | Набор ACL, которые необходимо удалить | - | - | +| acls.ops | Да | Список операций, для которых будет удалено правило | [Список возможных операций](#список-возможных-операций) | - | +| acls.pattern | Да | Тип шаблона | [Список возможных шаблонов](#список-возможных-шаблонов) | - | +| acls.any_resource | Нет | Все ресурсы | - | false | +| acls.topics | Нет | Список из названий топиков, для которых будет применяться правило | - | - | +| acls.any_topic | Нет | Все топики | - | false | +| acls.groups | Нет | Список из названий групп, для которых будет применяться правило | - | - | +| acls.any_group | Нет | Все топики | - | false | +| acls.transactional_ids | Нет | Список из ID транзакций, для которых будет применяться правило | - | - | +| acls.any_transactional_id | Нет | Любая транзакция | - | false | +| acls.tokens | Нет | Список токенов, для которых будет применяться правило | - | - | +| acls.any_token | Нет | Все токены | - | false | +| acls.allow | Нет | Список принципалов (user, group), для которых разрешить правило | - | - | +| acls.any_allow | Нет | Любой принципал (user, group) | - | false | +| acls.allow_hosts | Нет | Список хостов, для которых разрешить операцию | - | - | +| acls.any_allow_hosts | Нет | Любой хост, с которого разрешено проводить операцию | - | false | +| acls.deny | Нет | Список принципалов (user, group), для которых будет запрещено правило | - | - | +| acls.any_deny | Нет | Любой принципал (user, group) | - | false | +| acls.deny_hosts | Нет | Список хостов, для которых будет запрещено операцию | - | - | +| acls.any_deny_hosts | Нет | Любой хост, с которого запрещено проводить операцию | - | false | + +### Список возможных шаблонов + +* ANY. +* MATCH. +* LITERAL. +* PREFIXED. + +### Список возможных операций + +Подробное описание — [в документации Kafka](https://kafka.apache.org/39/documentation/#operations_resources_and_protocols). + +Topics: + +* ALL. +* ALTER. +* ALTER_CONFIGS. +* CREATE. +* DELETE. +* DESCRIBE. +* DESCRIBE_CONFIGS. +* READ. +* WRITE. + +Group: + +* ALL. +* DELETE. +* DESCRIBE. +* READ. + +TransactionalID: + +* ALL. +* DESCRIBE. +* WRITE. + +Token: + +* DESCRIBE. diff --git a/content/documentation/admin/actions/kafka/deletekafkatopics.ru.md b/content/documentation/admin/actions/kafka/deletekafkatopics.ru.md new file mode 100644 index 00000000..f0980746 --- /dev/null +++ b/content/documentation/admin/actions/kafka/deletekafkatopics.ru.md @@ -0,0 +1,31 @@ +--- +title: DeleteKafkaTopics +weight: 20 +--- + + +{{< alert level="info" >}} +Для выполнения действий необходимы учётные данные: +* `user` — имя пользователя, от которого будет запускаться выполнение действия. +* `password` — пароль пользователя, от имени которого будет запускаться выполнение действия. +{{< /alert >}} + +DeleteKafkaTopics — удаляет существующие топики в Kafka. + +### Пример запроса + +```yaml +securityProtocol: SASL_PLAINTEXT +saslMechanism: PLAIN +topics: + - example_1 + - example_2 +``` + +### Спецификация запроса + +| Название | Обязательность | Описание | Возможные значения | +| -------------------- | ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | +| securityProtocol | Да | Протокол для подключения к Kafka. Подробнее — [в документации Kafka](https://kafka.apache.org/documentation/#adminclientconfigs_security.protocol) | PLAINTEXT, SASL_PLAINTEXT, SASL_SSL | +| saslMechanism | Нет | Механизм аутентификации, который будет использовать SASL. Обязателен при использовании протокола SASL_PLAINTEXT или SASL_SSL. Подробнее — [в документации Kafka](https://kafka.apache.org/documentation/#security_sasl_mechanism) | PLAIN, SCRAM-SHA-256, SCRAM-SHA-512 | +| topics | Да | Список названий топиков, которые необходимо удалить | - | diff --git a/content/documentation/admin/actions/kafka/deletekafkausers.ru.md b/content/documentation/admin/actions/kafka/deletekafkausers.ru.md new file mode 100644 index 00000000..38893b81 --- /dev/null +++ b/content/documentation/admin/actions/kafka/deletekafkausers.ru.md @@ -0,0 +1,35 @@ +--- +title: DeleteKafkaUsers +weight: 40 +--- + + +{{< alert level="info" >}} +Для выполнения действий необходимы учётные данные: +* `user` — имя пользователя, от которого будет запускаться выполнение действия. +* `password` — пароль пользователя, от имени которого будет запускаться выполнение действия. +{{< /alert >}} + +DeleteKafkaUsers — удаляет существующих пользователей SASL/SCRAM в Kafka. + +### Пример запроса + +```yaml +securityProtocol: SASL_PLAINTEXT +saslMechanism: PLAIN +users: + - user: example_user_1 + mechanism: SCRAM-SHA-256 + - user: example_user_2 + mechanism: SCRAM-SHA-256 +``` + +### Спецификация запроса + +| Название | Обязательность | Описание | Возможные значения | +| ------------------- | ---------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | +| securityProtocol | Да | Протокол для подключения к Kafka. Подробнее — [в документации Kafka](https://kafka.apache.org/documentation/#adminclientconfigs_security.protocol) | PLAINTEXT, SASL_PLAINTEXT, SASL_SSL | +| saslMechanism | Нет | Механизм аутентификации, который будет использовать SASL. Обязателен при использовании протокола SASL_PLAINTEXT или SASL_SSL. Подробнее — [в документации Kafka](https://kafka.apache.org/documentation/#security_sasl_mechanism) | PLAIN, SCRAM-SHA-256, SCRAM-SHA-512 | +| users | Да | Набор пользователей, которых необходимо удалить | - | +| users.user | Да | Имя удаляемого пользователя | - | +| users.mechanism | Да | Механизм аутентификации удаляемого пользователя | SCRAM-SHA-256, SCRAM-SHA-512 | diff --git a/content/documentation/admin/actions/keycloak/_index.ru.md b/content/documentation/admin/actions/keycloak/_index.ru.md new file mode 100644 index 00000000..80432168 --- /dev/null +++ b/content/documentation/admin/actions/keycloak/_index.ru.md @@ -0,0 +1,6 @@ +--- +title: Keycloak +weight: 70 +params: + no_list: true +--- diff --git a/content/documentation/admin/actions/keycloak/createkeycloakclient.ru.md b/content/documentation/admin/actions/keycloak/createkeycloakclient.ru.md new file mode 100644 index 00000000..f6a06ade --- /dev/null +++ b/content/documentation/admin/actions/keycloak/createkeycloakclient.ru.md @@ -0,0 +1,40 @@ +--- +title: CreateKeycloakClient +weight: 10 +--- + + +{{< alert level="info" >}} +Для выполнения действия необходимы учётные данные: +* `username` — имя пользователя, от которого будет запускаться выполнение действия. +* `password` — пароль пользователя, от имени которого будет запускаться выполнение действия. +{{< /alert >}} + +CreateKeycloakClient — создаёт нового клиента в Keycloak. + +### Пример запроса + +```yaml +realm: master +config: + clientId: example + name: example + enabled: true + clientAuthenticatorType: client-secret + secret: secret + defaultClientScopes: + - roles + - profile + - email + optionalClientScopes: + - address + - phone + - offline_access +``` + +### Спецификация запроса + +| Название | Обязательность | Описание | Возможные значения | +| ---------- | ---------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | +| realm | Да | Realm в Keycloak, где требуется создать клиента | - | +| config | Да | Параметры создаваемого клиента в соответствии со [спецификацией ClientRepresentation Keycloak](https://www.keycloak.org/docs-api/latest/rest-api/index.html#ClientRepresentation) | - | diff --git a/content/documentation/admin/actions/kubernetes/_index.ru.md b/content/documentation/admin/actions/kubernetes/_index.ru.md new file mode 100644 index 00000000..27a04a1f --- /dev/null +++ b/content/documentation/admin/actions/kubernetes/_index.ru.md @@ -0,0 +1,6 @@ +--- +title: Kubernetes +weight: 60 +params: + no_list: true +--- diff --git a/content/documentation/admin/actions/kubernetes/createkubernetesresource.ru.md b/content/documentation/admin/actions/kubernetes/createkubernetesresource.ru.md new file mode 100644 index 00000000..fb9a0d6f --- /dev/null +++ b/content/documentation/admin/actions/kubernetes/createkubernetesresource.ru.md @@ -0,0 +1,31 @@ +--- +title: CreateKubernetesResource +weight: 10 +--- + + +{{< alert level="info" >}} +Для выполнения действий необходимо наличие токена сервисного аккаунта Kubernetes. +{{< /alert >}} + +CreateKubernetesResource — создаёт новый ресурс или ресурсы в кластере Kubernetes или обновляет существующие. + +### Пример запроса + +```yaml +manifests: + - apiVersion: v1 + kind: Namespace + metadata: + name: example1 + - apiVersion: v1 + kind: Namespace + metadata: + name: example2 +``` + +### Спецификация запроса + +| Название | Обязательность | Описание | +| ---------------------------- | ---------------- | ---------------------------------------------------------------------------------------------------- | +| manifests | Да | Манифесты Kubernetes, которые будут применены | diff --git a/content/documentation/admin/actions/kubernetes/deletekubernetesresource.ru.md b/content/documentation/admin/actions/kubernetes/deletekubernetesresource.ru.md new file mode 100644 index 00000000..6ba79c94 --- /dev/null +++ b/content/documentation/admin/actions/kubernetes/deletekubernetesresource.ru.md @@ -0,0 +1,30 @@ +--- +title: DeleteKubernetesResource +weight: 30 +--- + +{{< alert level="info" >}} +Для выполнения действий необходимо наличие токена сервисного аккаунта Kubernetes. +{{< /alert >}} + +DeleteKubernetesResource — удаляет существующий ресурс в кластере Kubernetes. + +### Пример запроса + +```yaml +group: apps +version: v1 +resource_type: deployments +resource_name: nginx-deployment +namespace: example +``` + +### Спецификация запроса + +| Название | Обязательность | Описание | Возможные значения | +| --------------------------- | ----------------- | ------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| group | Да | API-группа ресурса. Указывает, к какой группе API относится удаляемый объект | [Определение требуемых Group и Version](getkubernetesresource/#определение-требуемых-group-и-version) | +| version | Да | Версия API ресурса | [Определение требуемых Group и Version](getkubernetesresource/#определение-требуемых-group-и-version) | +| resource_type | Да | Тип удаляемого ресурса | pods, services, deployments, statefulsets, daemonsets, replicasets, jobs, cronjobs, nodes, namespaces, configmaps, secrets, persistentvolumes, persistentvolumeclaims, limitranges, resourcequotas, horizontalpodautoscalers, ingresses, networkpolicies, serviceaccounts, roles, clusterroles, rolebindings, clusterrolebindings, podsecuritypolicies, storageclasses, volumeattachments, events, endpoints, customresourcedefinitions | +| resource_name | Да | Название конкретного ресурса, который необходимо удалить | - | +| namespace | Да | Неймспейс, в котором находится ресурс | - | diff --git a/content/documentation/admin/actions/kubernetes/getkubernetesresource.ru.md b/content/documentation/admin/actions/kubernetes/getkubernetesresource.ru.md new file mode 100644 index 00000000..004ef269 --- /dev/null +++ b/content/documentation/admin/actions/kubernetes/getkubernetesresource.ru.md @@ -0,0 +1,84 @@ +--- +title: GetKubernetesResource +weight: 20 +--- + + +{{< alert level="info" >}} +Для выполнения действий необходимо наличие токена сервисного аккаунта Kubernetes. +{{< /alert >}} + +GetKubernetesResource — получает ресурс из кластера Kubernetes. + +### Пример запроса + +```yaml +group: managed-services.deckhouse.io +version: v1alpha1 +resource_type: postgres +resource_name: example-postgres +namespace: default +``` + +### Спецификация запроса + +| Название | Обязательность | Описание | Возможные значения | +| --------------------------- | ---------------- | ---------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | +| group | Да | API-группа ресурса. Указывает, к какой группе API относится запрашиваемый объект | [Определение требуемых Group и Version](#определение-требуемых-group-и-version) | +| version | Да | Версия API ресурса | [Определение требуемых Group и Version](#определение-требуемых-group-и-version) | +| resource_type | Да | Тип получаемого ресурса | - | +| resource_name | Да | Название конкретного ресурса, который необходимо получить | - | +| namespace | Да | Неймспейс, в котором находится ресурс | - | + +### Ответ + +При успешном выполнении действие возвращает объект ресурса в поле `resource`. Если ресурс не найден, действие завершается с ошибкой. + +| Название | Описание | +| ------------ | ----------------------------------------------- | +| `resource` | Объект ресурса в формате Kubernetes | + +### Определение требуемых Group и Version + +Каждому типу ресурса соответствует своя группа API (Group) и версия (Version). +Полный список API-ресурсов с их группами и версиями приведён [в документации Kubernetes](https://kubernetes.io/docs/reference/kubernetes-api/). + +Если неизвестно, какие требуются группы API и версии, можно использовать актуальные значения. +Существует несколько способов их определить: + +#### С помощью утилиты `d8 k` + +Команда `d8 k explain` показывает `apiVersion` для ресурса. + +Пример: + +```bash +d8 k explain deployment +``` + +Пример вывода: + +```yaml +GROUP: apps +KIND: Deployment +VERSION: v1 + +DESCRIPTION: + Deployment enables declarative updates for Pods and ReplicaSets. + +FIELDS: +... +``` + +#### С помощью документации + +1. Найдите нужный ресурс (например, Deployment). +1. В заголовке указана API Group и версия. Пример для Deployment: + + ```yaml + apiVersion: apps/v1 + ``` + + Здесь: + * «API Group» — apps; + * «Version» — v1. diff --git a/content/documentation/admin/actions/nexus/_index.ru.md b/content/documentation/admin/actions/nexus/_index.ru.md new file mode 100644 index 00000000..b40d845b --- /dev/null +++ b/content/documentation/admin/actions/nexus/_index.ru.md @@ -0,0 +1,6 @@ +--- +title: Nexus Repository +weight: 80 +params: + no_list: true +--- diff --git a/content/documentation/admin/actions/nexus/assignnexusprivilege.ru.md b/content/documentation/admin/actions/nexus/assignnexusprivilege.ru.md new file mode 100644 index 00000000..dbda45f4 --- /dev/null +++ b/content/documentation/admin/actions/nexus/assignnexusprivilege.ru.md @@ -0,0 +1,37 @@ +--- +title: AssignNexusPrivilege +weight: 40 +--- + + +{{< alert level="info" >}} +Для выполнения действия необходимо наличие токена — строки base64(`admin:password`), используемой как Basic Auth при запросах к Nexus. +{{< /alert >}} + +AssignNexusPrivilege — назначает привилегии существующей роли в Nexus Repository Manager 3. Действие получает текущую конфигурацию роли и объединяет существующие привилегии с новыми. + +### Пример запроса + +```yaml +roleId: example-role +privileges: + - example-privilege + - another-privilege +``` + +### Спецификация запроса + +| Поле | Обязательность | Описание | +| ------------ | ----------------- | ------------------------------------------------------------------------------ | +| roleId | Да | Идентификатор роли, которой назначаются привилегии | +| privileges | Да | Список названий привилегий, которые необходимо назначить роли | + +### Алгоритм работы + +1. Получает текущую конфигурацию роли из Nexus. +1. Объединяет существующие привилегии роли с новыми привилегиями из запроса. +1. Обновляет роль с объединённым списком привилегий. + +### Примечание + +Роль должна существовать в Nexus до назначения привилегий. Если роль не найдена, действие завершится с ошибкой. Все указанные привилегии также должны существовать в Nexus. diff --git a/content/documentation/admin/actions/nexus/assignnexusrole.ru.md b/content/documentation/admin/actions/nexus/assignnexusrole.ru.md new file mode 100644 index 00000000..295777e1 --- /dev/null +++ b/content/documentation/admin/actions/nexus/assignnexusrole.ru.md @@ -0,0 +1,37 @@ +--- +title: AssignNexusRole +weight: 70 +--- + + +{{< alert level="info" >}} +Для выполнения действия необходимо наличие токена — строки base64(`admin:password`), используемой как Basic Auth при запросах к Nexus. +{{< /alert >}} + +AssignNexusRole — назначает роли существующему пользователю в Nexus Repository Manager 3. Действие получает текущую конфигурацию пользователя и объединяет существующие роли с новыми. + +### Пример запроса + +```yaml +userId: example-user +roles: + - example-role + - another-role +``` + +### Спецификация запроса + +| Поле | Обязательность | Описание | +| -------- | ----------------- | ----------------------------------------------------------------------- | +| userId | Да | Идентификатор пользователя, которому назначаются роли | +| roles | Да | Список идентификаторов ролей, которые необходимо назначить пользователю | + +### Алгоритм работы + +1. Получает текущую конфигурацию пользователя из Nexus. +1. Объединяет существующие роли пользователя с новыми ролями из запроса. +1. Обновляет пользователя с объединённым списком ролей. + +### Примечание + +Пользователь должен существовать в Nexus до назначения ролей. Если пользователь не найден, действие завершится с ошибкой. Все указанные роли также должны существовать в Nexus. diff --git a/content/documentation/admin/actions/nexus/createnexusprivilege.ru.md b/content/documentation/admin/actions/nexus/createnexusprivilege.ru.md new file mode 100644 index 00000000..ddb84715 --- /dev/null +++ b/content/documentation/admin/actions/nexus/createnexusprivilege.ru.md @@ -0,0 +1,67 @@ +--- +title: CreateNexusPrivilege +weight: 30 +--- + + +{{< alert level="info" >}} +Для выполнения действия необходимо наличие токена — строки base64(`admin:password`), используемой как Basic Auth при запросах к Nexus. +{{< /alert >}} + +CreateNexusPrivilege — создаёт новую привилегию в Nexus Repository Manager 3. Привилегии определяют права доступа к репозиториям и другим ресурсам Nexus. + +### Пример запроса (repository-view) + +```yaml +name: example-privilege +description: Example privilege description +type: repository-view +actions: + - READ + - BROWSE +format: maven2 +repository: maven-releases +``` + +### Пример запроса (repository-content-selector) + +```yaml +name: content-selector-privilege +description: Privilege with content selector +type: repository-content-selector +actions: + - READ +format: maven2 +repository: maven-releases +contentSelector: my-content-selector +``` + +### Пример запроса (wildcard) + +```yaml +name: wildcard-privilege +description: Wildcard privilege +type: wildcard +pattern: nx-* +actions: + - READ +``` + +### Спецификация запроса + +| Поле | Обязательность | Описание | +| ----------------- | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| name | Да | Название создаваемой привилегии. Должно быть уникальным в рамках Nexus | +| description | Нет | Описание привилегии | +| type | Да | Тип привилегии: `repository-view`, `repository-content-selector`, `repository-admin`, `application`, `wildcard` | +| actions | Нет | Список действий, разрешённых привилегией (например, `READ`, `BROWSE`, `CREATE`, `UPDATE`, `DELETE`) | +| format | Нет | Формат репозитория (например, `maven2`, `docker`, `npm`). Используется для типов `repository-view`, `repository-content-selector`, `repository-admin` | +| repository | Нет | Название репозитория. Используется для типов `repository-view`, `repository-content-selector`, `repository-admin` | +| contentSelector | Нет | Название селектора контента. Обязателен для типа `repository-content-selector`. Если не указан или невалиден, тип автоматически преобразуется в `repository-view` | +| pattern | Нет | Шаблон для типа `wildcard` | +| domain | Нет | Домен для типа `application` | +| attributes | Нет | Дополнительные параметры в формате ключ-значение | + +### Примечание + +Для типа `repository-content-selector` селектор контента должен существовать в Nexus до создания привилегии. Если селектор контента не указан или невалиден, действие автоматически преобразует тип привилегии в `repository-view`. diff --git a/content/documentation/admin/actions/nexus/createnexusrepository.ru.md b/content/documentation/admin/actions/nexus/createnexusrepository.ru.md new file mode 100644 index 00000000..32cef84e --- /dev/null +++ b/content/documentation/admin/actions/nexus/createnexusrepository.ru.md @@ -0,0 +1,81 @@ +--- +title: CreateNexusRepository +weight: 10 +--- + + +{{< alert level="info" >}} +Для выполнения действия необходимо наличие токена — строки base64(`admin:password`), используемой как Basic Auth при запросах к Nexus. +{{< /alert >}} + +`CreateNexusRepository` — создаёт новый репозиторий любого поддерживаемого типа (maven, docker, npm и др.) в Nexus Repository Manager 3 с помощью REST API. +Параметры формата, типа и другие ключевые настройки полностью настраиваются и соответствуют Nexus API. + +### Пример запроса (Maven hosted) + +```yaml +description: | + Maven hosted repo for internal Java build artifacts. +name: my-maven-repo +format: maven +type: hosted +online: true +storage: + blobStoreName: default + strictContentTypeValidation: true + writePolicy: ALLOW +cleanup: + policyNames: + - maven-cleanup +maven: + versionPolicy: RELEASE + layoutPolicy: PERMISSIVE +``` + +### Пример запроса (Docker group) + +```yaml +description: | + Docker group repo aggregating hosted+proxy. +name: my-docker-group +format: docker +type: group +online: true +storage: + blobStoreName: default + strictContentTypeValidation: true +group: + memberNames: + - docker-hosted + - docker-proxy +docker: + v1Enabled: false + forceBasicAuth: true + httpPort: 5001 +``` + +### Спецификация запроса + +| Поле | Обязательность | Описание | Пример | +| ------------- | ---------------- | --------------------------------------------------------------------------------------------------- | -------------------------------------- | +| description | Нет | Документация по назначению этого действия/репозитория. Не используется самим Nexus, только для UI | - | +| name | Да | Название создаваемого репозитория. Должно быть уникальным в рамках Nexus | my-maven-repo | +| format | Да | Формат (`maven`, `docker`, `npm`, `raw` и т. д.) | maven | +| type | Да | Тип: `hosted`, `proxy` или `group` | hosted | +| online | Да | Доступен ли репозиторий (`true`/`false`) | true | +| storage | Да | Объект storage: `blobStoreName`, `strictContentTypeValidation`, `writePolicy` | [Пример](#пример-запроса-maven-hosted) | +| cleanup | Нет | Привязанные политики очистки (`policyNames`) | policyNames: [maven-cleanup] | +| maven | Для maven | Только для maven: `versionPolicy`, `layoutPolicy` | [Пример](#пример-запроса-maven-hosted) | +| proxy | Для proxy | Прокси-репозиторий: `remoteUrl`, `contentMaxAge`, `metadataMaxAge` | - | +| group | Для group | Список значений `memberNames` | [Пример](#пример-запроса-docker-group) | +| docker | Для docker | Специфичные для Docker параметры: `httpPort`, `v1Enabled`, `forceBasicAuth` | [Пример](#пример-запроса-docker-group) | +| component | Очень редко | Только для некоторых нестандартных сценариев | - | +| attributes | Нет | Любые кастомные поля | - | + +### Требования + +- Используйте только те блоки (`maven`, `group`, `proxy`, `docker` и пр.), которые поддерживаются для вашего типа/формата. +- Для maven hosted обязательно `maven: {versionPolicy, layoutPolicy}`. +- Для group — обязательно `group.memberNames`. +- Для proxy — обязательно `proxy.remoteUrl`. +- Для docker — специфичные поля в `docker`. diff --git a/content/documentation/admin/actions/nexus/createnexusrole.ru.md b/content/documentation/admin/actions/nexus/createnexusrole.ru.md new file mode 100644 index 00000000..cea4cdd0 --- /dev/null +++ b/content/documentation/admin/actions/nexus/createnexusrole.ru.md @@ -0,0 +1,33 @@ +--- +title: CreateNexusRole +weight: 60 +--- + + +{{< alert level="info" >}} +Для выполнения действия необходимо наличие токена — строки base64(`admin:password`), используемой как Basic Auth при запросах к Nexus. +{{< /alert >}} + +CreateNexusRole — создаёт новую роль в Nexus Repository Manager 3. Роли объединяют привилегии и могут включать другие роли. + +### Пример запроса + +```yaml +id: example-role +name: Example Role +description: Example role description +privileges: + - nx-repository-view-*-*-read + - nx-repository-view-maven2-*-browse +roles: [] +``` + +### Спецификация запроса + +| Поле | Обязательность | Описание | +| ------------- | ----------------- | ------------------------------------------------------------------------------ | +| id | Да | Уникальный идентификатор роли | +| name | Да | Название роли | +| description | Нет | Описание роли | +| privileges | Нет | Список названий привилегий, которые назначаются роли | +| roles | Нет | Список идентификаторов других ролей, которые включаются в данную роль | diff --git a/content/documentation/admin/actions/nexus/createnexususer.ru.md b/content/documentation/admin/actions/nexus/createnexususer.ru.md new file mode 100644 index 00000000..8127d804 --- /dev/null +++ b/content/documentation/admin/actions/nexus/createnexususer.ru.md @@ -0,0 +1,36 @@ +--- +title: CreateNexusUser +weight: 90 +--- + + +{{< alert level="info" >}} +Для выполнения действия необходимо наличие токена — строки base64(`admin:password`), используемой как Basic Auth при запросах к Nexus. +{{< /alert >}} + +CreateNexusUser — создаёт нового пользователя в Nexus Repository Manager 3. + +### Пример запроса + +```yaml +userId: example-user +firstName: First +lastName: Last +emailAddress: user@example.com +password: password +status: active +roles: + - nx-admin +``` + +### Спецификация запроса + +| Поле | Обязательность | Описание | +| ------------- | ----------------- | ------------------------------------------------------------------------------ | +| userId | Да | Уникальный идентификатор пользователя | +| firstName | Да | Имя пользователя | +| lastName | Да | Фамилия пользователя | +| emailAddress | Да | Email-адрес пользователя | +| password | Да | Пароль пользователя | +| status | Да | Статус пользователя: `active` или `disabled` | +| roles | Нет | Список идентификаторов ролей, которые назначаются пользователю при создании | diff --git a/content/documentation/admin/actions/nexus/deletenexusprivilege.ru.md b/content/documentation/admin/actions/nexus/deletenexusprivilege.ru.md new file mode 100644 index 00000000..4954a3da --- /dev/null +++ b/content/documentation/admin/actions/nexus/deletenexusprivilege.ru.md @@ -0,0 +1,23 @@ +--- +title: DeleteNexusPrivilege +weight: 50 +--- + + +{{< alert level="info" >}} +Для выполнения действия необходимо наличие токена — строки base64(`admin:password`), используемой как Basic Auth при запросах к Nexus. +{{< /alert >}} + +DeleteNexusPrivilege — удаляет привилегию из Nexus Repository Manager 3. + +### Пример запроса + +```yaml +name: example-privilege +``` + +### Спецификация запроса + +| Поле | Обязательность | Описание | +| ------ | ----------------- | ---------------------------------------------- | +| name | Да | Название привилегии, которую требуется удалить | diff --git a/content/documentation/admin/actions/nexus/deletenexusrepository.ru.md b/content/documentation/admin/actions/nexus/deletenexusrepository.ru.md new file mode 100644 index 00000000..00aa6ee2 --- /dev/null +++ b/content/documentation/admin/actions/nexus/deletenexusrepository.ru.md @@ -0,0 +1,29 @@ +--- +title: DeleteNexusRepository +weight: 20 +--- + + +{{< alert level="info" >}} +Для выполнения действия необходимо наличие токена — строки base64(`admin:password`), используемой как Basic Auth при запросах к Nexus. +{{< /alert >}} + +`DeleteNexusRepository` — удаляет существующий репозиторий из Nexus Repository Manager 3. + +### Пример запроса + +```yaml +name: my-repo-to-delete +``` + +### Спецификация запроса + +| Поле | Обязательность | Описание | +| ------ | ----------------- | ----------------------------------------------- | +| `name` | Да | Название репозитория, который требуется удалить | + +### Алгоритм + +- Выполняется `DELETE` по адресу `/service/rest/v1/repositories/{name}`, где `{name}` — это значение поля `name`. +- Если репозиторий найден и удалён — возвращается 204. +- Если не найден — возвращается ошибка 404. diff --git a/content/documentation/admin/actions/nexus/deletenexusrole.ru.md b/content/documentation/admin/actions/nexus/deletenexusrole.ru.md new file mode 100644 index 00000000..a523c290 --- /dev/null +++ b/content/documentation/admin/actions/nexus/deletenexusrole.ru.md @@ -0,0 +1,23 @@ +--- +title: DeleteNexusRole +weight: 80 +--- + + +{{< alert level="info" >}} +Для выполнения действия необходимо наличие токена — строки base64(`admin:password`), используемой как Basic Auth при запросах к Nexus. +{{< /alert >}} + +DeleteNexusRole — удаляет роль из Nexus Repository Manager 3. + +### Пример запроса + +```yaml +id: example-role +``` + +### Спецификация запроса + +| Поле | Обязательность | Описание | +| ------ | ----------------- | --------------------------------------------- | +| id | Да | Идентификатор роли, которую требуется удалить | diff --git a/content/documentation/admin/actions/nexus/deletenexususer.ru.md b/content/documentation/admin/actions/nexus/deletenexususer.ru.md new file mode 100644 index 00000000..59813f84 --- /dev/null +++ b/content/documentation/admin/actions/nexus/deletenexususer.ru.md @@ -0,0 +1,23 @@ +--- +title: DeleteNexusUser +weight: 100 +--- + + +{{< alert level="info" >}} +Для выполнения действия необходимо наличие токена — строки base64(`admin:password`), используемой как Basic Auth при запросах к Nexus. +{{< /alert >}} + +DeleteNexusUser — удаляет пользователя из Nexus Repository Manager 3. + +### Пример запроса + +```yaml +userId: example-user +``` + +### Спецификация запроса + +| Поле | Обязательность | Описание | +| -------- | ----------------- | ------------------------------------------------------ | +| userId | Да | Идентификатор пользователя, которого требуется удалить | diff --git a/content/documentation/admin/actions/overview.ru.md b/content/documentation/admin/actions/overview.ru.md index 27345328..f5f7a81f 100644 --- a/content/documentation/admin/actions/overview.ru.md +++ b/content/documentation/admin/actions/overview.ru.md @@ -4,14 +4,14 @@ description: Конфигурация действий в Deckhouse Development weight: 10 --- -Действия — это механизм платформы Deckhouse Development Platform (DDP) для запуска операций во внешних инфраструктурных системах и сервисах. С их помощью можно, например: +Действия — это механизм платформы для запуска операций во внешних инфраструктурных системах и сервисах. С их помощью можно, например, создавать: -- создавать проекты, переменные, ветки или теги в GitLab; -- создавать ресурсы в Kubernetes; -- получать ресурсы из Kubernetes; -- создавать секреты в Deckhouse Stronghold или HashiCorp Vault; -- создавать проекты в SonarQube, DefectDojo и других системах; -- создавать топики и access control list (ACL) в Kafka. +- создавать проекты, переменные, ветки, теги, релизы и merge request'ы в [GitLab](../gitlab/); +- создавать ресурсы в [Kubernetes](../kubernetes/) и получать их; +- создавать секреты в [Deckhouse Stronghold и HashiCorp Vault](../vault/), а также клиентов в [Keycloak](../keycloak/); +- создавать проекты в [SonarQube](../sonarqube/), продукты и engagements в [DefectDojo](../defectdojo/), проекты в [CodeScoring](../codescoring/) и репозитории, роли, пользователей и привилегии в [Nexus Repository](../nexus/); +- создавать топики и ACL в [Apache Kafka](../kafka/); +- выполнять вспомогательные действия для отладки и управления выполнением процессов (например, [Debug](../debug/) и [Wait](../wait/)). Действие можно привязать к одному или нескольким ресурсам. После этого его можно запускать для любой сущности этих ресурсов. @@ -21,16 +21,16 @@ weight: 10 При создании или редактировании действия укажите основную информацию: -| Поле | Обязательность | Описание | -| ------------------- | -------------- | -------------------------------------------------------------------------------------------| -| Название | Да | Произвольное название действия | -| Идентификатор | Да | Идентификатор действия. Генерируется автоматически из названия | -| Ресурс | Нет | Один или несколько ресурсов, для которых будет доступен запуск действия | -| Иконка | Нет | Иконка, которая отображается в карточке действия | -| Владелец | Нет | Учётная запись пользователя, отвечающего за конфигурацию и работоспособность действия | -| Команда-владелец | Нет | Команда, отвечающая за конфигурацию и работоспособность действия | -| Теги | Нет | Теги для классификации и поиска действий | -| Описание | Нет | Описание в Markdown. Отображается при запуске действия или процесса, содержащего действие | +| Поле | Обязательность | Описание | +| ------------------- | -------------- | ------------------------------------------------------------------------------------------- | +| Название | Да | Произвольное название действия | +| Идентификатор | Да | Идентификатор действия. Генерируется автоматически из названия | +| Ресурс | Нет | Один или несколько ресурсов, для которых будет доступен запуск действия | +| Иконка | Нет | Иконка, которая отображается в карточке действия | +| Владелец | Нет | Учётная запись пользователя, отвечающего за конфигурацию и работоспособность действия | +| Команда-владелец | Нет | Команда, отвечающая за конфигурацию и работоспособность действия | +| Теги | Нет | Теги для классификации и поиска действий | +| Описание | Нет | Описание в Markdown. Отображается при запуске действия или процесса, содержащего действие | ### Конфигурация запроса @@ -174,14 +174,14 @@ project_id: {{ .property.project_id }} Если включена опция «Создание сущностей», платформа автоматически создаст новые сущности в выбранных ресурсах по заданным правилам. Правила задаются отдельно для каждого ресурса. -| Поле | Описание | -| ------------------------------- | --------------------------------------------------------------------------------------------- | -| Владелец создаваемых сущностей | Назначается владельцем всем сущностям, которые действие создаёт в каталоге | -| Команда-владелец создаваемых сущностей | Назначается командой-владельцем всем сущностям, которые действие создаёт в каталоге | -| Ресурс | Ресурс каталога, в котором будет создана сущность | -| Источник (идентификатор) | Go-шаблон для идентификатора создаваемой сущности | -| Источник (название) | Go-шаблон для названия создаваемой сущности | -| Дополнительные правила | Сопоставление Go-шаблона значения с параметром сущности | +| Поле | Описание | +| -------------------------------------- | --------------------------------------------------------------------------------------------- | +| Владелец создаваемых сущностей | Назначается владельцем всем сущностям, которые действие создаёт в каталоге | +| Команда-владелец создаваемых сущностей | Назначается командой-владельцем всем сущностям, которые действие создаёт в каталоге | +| Ресурс | Ресурс каталога, в котором будет создана сущность | +| Источник (идентификатор) | Go-шаблон для идентификатора создаваемой сущности | +| Источник (название) | Go-шаблон для названия создаваемой сущности | +| Дополнительные правила | Сопоставление Go-шаблона значения с параметром сущности | Идентификатор и название обязательны для каждой группы правил. Если в ресурсе уже есть сущность с таким идентификатором, создание пропускается. @@ -209,7 +209,7 @@ project_id: {{ .property.project_id }} | Поле | Описание | | ----------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Ресурс | Любой из двух ресурсов, участвующих в нужной связи ресурсов: по выбранному ресурсу загружается список связей, в которых он указан как родительский или как дочерний. Можно выбрать ресурс сущности, для которой запускается действие, или ресурс другой стороны связи — в списке будет одна и та же связь, если оба ресурса входят в неё | +| Ресурс | Любой из двух ресурсов, участвующих в нужной связи ресурсов: по выбранному ресурсу загружается список связей, в которых он указан как родительский или как дочерний. Можно выбрать ресурс сущности, для которой запускается действие, или ресурс другой стороны связи — в списке будет одна и та же связь, если оба ресурса входят в неё | | Связь | Связь ресурсов в каталоге: в ней заданы родительский и дочерний ресурсы и роли сущностей при создании связи. По выбранной связи определяется, на какой стороне находится сущность запуска и какое из полей ниже задаёт идентификатор второй сущности из ответа действия | | Идентификатор родительской сущности | Go-шаблон для идентификатора родительской сущности в каталоге | | Идентификатор дочерней сущности | Go-шаблон для идентификатора дочерней сущности в каталоге | @@ -247,12 +247,12 @@ project_id: {{ .property.project_id }} Правила из раздела «Обновление хранилища процесса» применяются только при выполнении действия в рамках процесса: после успешного завершения действия значения записываются в хранилище запуска по заданным правилам, в порядке списка. -| Поле | Описание | -| ---- | -------- | -| Условие | Необязательный Go-шаблон; пустое — правило всегда выполняется. Результат рендеринга: `true`, `false`, `1` или `0` | -| Операция | Записать строку, Записать JSON, Добавить строку, Добавить JSON, Слить JSON (поверхностно), Удалить | -| Цель | Dot-path в хранилище без ведущей точки, например `deploy.job_id` или `notification.items` | -| Источник | Go-шаблон значения | +| Поле | Описание | +| -------- | ----------------------------------------------------------------------------------------------------------------- | +| Условие | Необязательный Go-шаблон; пустое — правило всегда выполняется. Результат рендеринга: `true`, `false`, `1` или `0` | +| Операция | Записать строку, Записать JSON, Добавить строку, Добавить JSON, Слить JSON (поверхностно), Удалить | +| Цель | Dot-path в хранилище без ведущей точки, например `deploy.job_id` или `notification.items` | +| Источник | Go-шаблон значения | Другие действия и элементы процесса читают данные через `{{ .store.<путь> }}`. Внутри цикла в шаблонах доступен контекст `{{ .store._loop.* }}`. diff --git a/content/documentation/admin/actions/sonarqube/_index.ru.md b/content/documentation/admin/actions/sonarqube/_index.ru.md new file mode 100644 index 00000000..048e6dcf --- /dev/null +++ b/content/documentation/admin/actions/sonarqube/_index.ru.md @@ -0,0 +1,6 @@ +--- +title: SonarQube +weight: 30 +params: + no_list: true +--- diff --git a/content/documentation/admin/actions/sonarqube/createsonarqubeproject.ru.md b/content/documentation/admin/actions/sonarqube/createsonarqubeproject.ru.md new file mode 100644 index 00000000..f7c2b928 --- /dev/null +++ b/content/documentation/admin/actions/sonarqube/createsonarqubeproject.ru.md @@ -0,0 +1,33 @@ +--- +title: CreateSonarqubeProject +weight: 10 +--- + +{{< alert level="info" >}} +Для выполнения действий необходимо наличие токена SonarQube с типом User Token, сгенерированного пользователем, от имени которого будет запускаться выполнение действия. +{{< /alert >}} + +CreateSonarqubeProject — создаёт новый проект в SonarQube. +Действие использует SonarQube Web API для создания проекта с указанными параметрами, такими как ключ (project key), название проекта, главная ветка, параметры определения нового кода (new code definition) и видимость проекта. Аутентификация осуществляется с использованием токена SonarQube, который должен быть передан в учётных данных. + +### Пример запроса + +```yaml +project: example-project +name: example-project +mainBranch: develop +newCodeDefinitionType: NUMBER_OF_DAYS +newCodeDefinitionValue: '30' +visibility: public +``` + +### Спецификация запроса + +| Название | Обязательность | Описание | Возможные значения | Значение по умолчанию | +| ------------------------- | ---------------- | ----------------------------------------------------------------------------------------------- | ---------------------------------------------------- | ------------------------- | +| project | Да | Уникальный идентификатор проекта (Project Key) в SonarQube | - | - | +| name | Да | Название проекта, отображаемое в интерфейсе SonarQube | - | - | +| mainBranch | Нет | Название главной ветки проекта | - | master | +| newCodeDefinitionType | Нет | Метод определения «нового кода» | PREVIOUS_VERSION, NUMBER_OF_DAYS, REFERENCE_BRANCH | - | +| newCodeDefinitionValue | Нет | Значение для определения «нового кода» (например, количество дней, если тип - NUMBER_OF_DAYS) | - | - | +| visibility | Нет | Видимость проекта | private, public | private | diff --git a/content/documentation/admin/actions/sonarqube/deletesonarqubeproject.ru.md b/content/documentation/admin/actions/sonarqube/deletesonarqubeproject.ru.md new file mode 100644 index 00000000..7818aa03 --- /dev/null +++ b/content/documentation/admin/actions/sonarqube/deletesonarqubeproject.ru.md @@ -0,0 +1,22 @@ +--- +title: DeleteSonarqubeProject +weight: 20 +--- + +{{< alert level="info" >}} +Для выполнения действий необходимо наличие токена SonarQube с типом User Token, сгенерированного пользователем, от имени которого будет запускаться выполнение действия. +{{< /alert >}} + +DeleteSonarqubeProject — удаляет проект из SonarQube. + +### Пример запроса + +```yaml +project: example-project +``` + +### Спецификация запроса + +| Название | Обязательность | Описание | Значение по умолчанию | +| ------------------ | ---------------- | ---------------------------------------------------------------------------- | ------------------------ | +| project | Да | Уникальный идентификатор (Project Key) проекта, который необходимо удалить | - | diff --git a/content/documentation/admin/actions/sonarqube/deletesonarqubeprojects.ru.md b/content/documentation/admin/actions/sonarqube/deletesonarqubeprojects.ru.md new file mode 100644 index 00000000..10da2ebd --- /dev/null +++ b/content/documentation/admin/actions/sonarqube/deletesonarqubeprojects.ru.md @@ -0,0 +1,30 @@ +--- +title: DeleteSonarqubeProjects +weight: 30 +--- + +{{< alert level="info" >}} +Для выполнения действий необходимо наличие токена SonarQube с типом User Token, сгенерированного пользователем, от имени которого будет запускаться выполнение действия. +{{< /alert >}} + +DeleteSonarqubeProjects — удаляет один или несколько проектов из SonarQube. + +### Пример запроса + +```yaml +analyzedBefore: 2017-10-19T13:00:00+0200 +onProvisionedOnly: 'false' +projects: example_project,another_project +q: example +qualifiers: TRK +``` + +### Спецификация запроса + +| Название | Обязательность | Описание | Возможные значения | Примеры значений | +| -------------------- | ---------------- | --------------------------------------------------------------------------------- | ------------------------------- | --------------------------------------- | +| analyzedBefore | Нет | Удалить все проекты, в которых последний анализ старше определённой даты | - | 2017-10-19, 2017-10-19T13:00:00+0200 | +| onProvisionedOnly | Нет | Фильтровать проекты по значению `onProvisionedOnly` | true, false, yes, no | - | +| projects | Нет | Список ключей проектов, которые необходимо удалить | - | my_project, another_project | +| q | Нет | Удалить все проекты, в названии или ключе которых содержится заданная подстрока | - | example | +| qualifiers | Нет | Фильтровать проекты по указанным квалификаторам | TRK, VW, APP | | diff --git a/content/documentation/admin/actions/types.ru.md b/content/documentation/admin/actions/types.ru.md deleted file mode 100644 index 4bbaa7dc..00000000 --- a/content/documentation/admin/actions/types.ru.md +++ /dev/null @@ -1,1974 +0,0 @@ ---- -title: Типы действий ---- - -## CreateDefectdojoEngagement - -CreateDefectdojoEngagement — создаёт новый engagement в системе DefectDojo. Действие использует DefectDojo API v2. - -### Пример запроса - -```yaml -name: example engagement -product: '1' -target_start: '2024-06-01' -target_end: '2024-06-30' -lead: '1' -``` - -### Спецификация запроса - -Список полей соответствует официальному API DefectDojo, `/api/v2/engagements`, подробнее — [в документации Defectdojo](https://demo.defectdojo.org/api/v2/oa3/swagger-ui/). - -### Учётные данные - -* `token` — API v2 Key пользователя, от имени которого будет запускаться выполнение действия. - -## CreateDefectdojoProduct - -CreateDefectdojoProduct — создаёт новый продукт в системе DefectDojo. Действие использует DefectDojo API v2. - -### Пример запроса - -```yaml -name: example -description: example description -prod_type: 1 -``` - -### Спецификация запроса - -Список полей соответствует официальному API DefectDojo, `/api/v2/products`, подробнее — [в документации Defectdojo](https://demo.defectdojo.org/api/v2/oa3/swagger-ui/). - -### Учётные данные - -* `token` — API v2 Key пользователя, от имени которого будет запускаться выполнение действия. - -## CreateGitlabBranches - -CreateGitlabBranches — создаёт новые ветки в целевом репозитории. - -### Пример запроса - -```yaml -project_id: '0' -branches: - - branch: new-branch - ref: main -``` - -### Спецификация запроса - -| Название | Обязательность | Описание | -|-----------------|----------------|------------------------------------------------------------------------------| -| project_id | Да | Идентификатор проекта, в котором необходимо создать ветки | -| branches | Да | Список создаваемых веток | -| branches.branch | Да | Название новой ветки | -| branches.ref | Да | Название существующей ветки или SHA-хеш коммита | - -### Учётные данные - -* `token` — токен пользователя, от имени которого будет запускаться выполнение действия. - -### Примечание - -Для выполнения действия необходимо наличие корректных реквизитов токена GitLab. Этот токен передаётся через механизм учётных данных и используется для аутентификации при вызове GitLab API (HTTP-заголовок `Private-Token`). - -Действие осуществляет POST-запрос по URL: `/api/v4/projects/:id/repository/branches`. В случае успешного создания проекта GitLab возвращает информацию о созданных ветках. - -## CreateGitlabGroupVariables - -CreateGitlabGroupVariables — создаёт переменные (variables) на уровне группы в GitLab. - -### Пример запроса - -```yaml -group_id: '0' -variables: - - key: EXAMPLE_VARIABLE - value: value -``` - -### Спецификация запроса - -| Название | Обязательность | Описание | -|-----------------|----------------|------------------------------------------------------------------------------| -| group_id | Да | Идентификатор группы, в котором необходимо создать переменные | -| variables | Да | Список создаваемых переменных | - -Список полей для переменных соответствует официальному GitLab Group-level Variables API, `/groups/:id/variables`, подробнее — [в документации Gitlab](https://docs.gitlab.com/api/group_level_variables/#create-variable). - -### Учётные данные - -* `token` — токен пользователя, от имени которого будет запускаться выполнение действия. - -### Примечание - -Для выполнения действия необходимо наличие токена GitLab. Токен передаётся через механизм учётных данных и используется для аутентификации при вызове GitLab API (HTTP-заголовок `Private-Token`). - -Действие осуществляет POST-запрос по URL: `/api/v4/groups/:id/variables`. - -## CreateGitlabMergeRequest - -CreateGitlabMergeRequest — создаёт новый Merge Request (MR) в целевом репозитории. В Merge Request добавляются файлы, хранящиеся в репозитории-источнике. Файлы могут содержать переменные, значение которых будет подставлено в момент создания MR. - -### Пример запроса - -```yaml -source_project_id: '0' -source_project_branch: example -source_project_tag: v1.0.0 -target_project_id: '0' -merge_request_spec: - source_branch: example - target_branch: '1' - title: example -additionalIgnoreFiles: - - .ignore - - .example -values: - key1: value1 - nested: - enabled: true - subkey: 123 -``` - -### Спецификация запроса - -| Название | Обязательность | Описание | Значение по умолчанию | -|-------------------------|----------------|-------------------------------------------------------------------------------------------------------------------------------|-----------------------| -| source_project_id | Да | Идентификатор проекта, который служит источником для Merge Request | - | -| target_project_id | Да | Идентификатор целевого проекта, в котором будет сформирован Merge Request | - | -| merge_request_spec | Да | Спецификация, соответствующая [GitLab Merge Requests API](https://docs.gitlab.com/ee/api/merge_requests.html#create-mr) | - | -| source_project_tag | Нет | Тег в проекте-источнике, из которого будет сформирован Merge Request. Если не указан, используется ветка в проекте-источнике | - | -| source_project_branch | Нет | Ветка в проекте-источнике, из которой будет сформирован Merge Request | main | -| additionalIgnoreFiles | Нет | Список файлов, содержащих пути для исключения из MR. Заполняется по аналогии с [.templateignore](#templateignore) | - | -| values | Нет | Переменные, используемые при шаблонизации, в формате `ключ: значение` | - | - -### Учётные данные - -* `password` — пароль (токен) пользователя, от имени которого будет запускаться выполнение действия. -* `username` — имя пользователя, от которого будет запускаться выполнение действия. - -### Алгоритм работы - -Платформа: - -1. Клонирует репозиторий-шаблон для генерации MR по его идентификатору (`source_project_id`). Подробнее [о шаблонизации](#детали-работы). -1. Считывает файл `values.yaml`, хранящийся в корне репозитория, и определяет переменные по умолчанию для шаблонизации. -1. Считывает переменные, передаваемые при запуске действия, и объединяет (merge) их с переменными из `values.yaml`. Приоритет отдаётся переменным, передаваемым при запуске действия. -1. Считывает файл `.templateignore` и определяет директории и файлы, исключаемые из шаблонизации. -1. Рендерит файлы из шаблонов, учитывая `values.yaml` и переданных в действие переменных. -1. Изменяет удалённый (remote) репозиторий на целевой, согласно его ID (`target_project_id`), и выполняет git push в целевую ветку (`source_project_branch`), либо в основную ветку `main`. -1. Создаёт MR согласно заданным настройкам путём отправки POST-запроса в GitLab API. - -### Примечание - -Для выполнения действия необходимо наличие токена GitLab. Токен передаётся через механизм учётных данных и используется для аутентификации при вызове GitLab API (HTTP-заголовок `Private-Token`). - -Действие осуществляет POST-запрос по URL: `/api/v4/projects/:id/merge_requests`. - -## CreateGitlabProject - -CreateGitlabProject — создаёт новый проект в GitLab. Действие осуществляет вызов GitLab API для создания проекта с указанными параметрами, такими как название, путь проекта, описание и другие настройки. Для аутентификации используется GitLab token, который должен быть предоставлен в учётных данных. - -### Пример запроса - -```yaml -name: example -path: example -description: example -default_branch: main -initialize_with_readme: false -namespace_id: '0' -``` - -### Спецификация запроса - -| Название | Обязательность | Описание | Значение по умолчанию | -|------------------------|----------------|--------------------------------------------------------------------------------------------|-----------------------| -| name | Да | Название проекта, который будет создан в GitLab | - | -| path | Да | URL-совместимый путь проекта. Обычно совпадает с названием, но может отличаться | - | -| default_branch | Да | Название ветки, которая будет использоваться по умолчанию, например, «main» | - | -| namespace_id | Да | Идентификатор неймспейса (namespace) в GitLab, в котором будет создан проект | - | -| initialize_with_readme | Нет | Флаг, определяющий, нужно ли инициализировать проект с файлом README | false | -| description | Нет | Описание проекта, которое будет видно пользователям | - | - -### Учётные данные - -* `token` — токен пользователя, от имени которого будет запускаться выполнение действия. - -### Примечание - -Для выполнения действия необходимо наличие токена GitLab. Токен передаётся через механизм учётных данных и используется для аутентификации при вызове GitLab API (HTTP-заголовок `Private-Token`). - -Действие осуществляет POST-запрос по URL: `/api/v4/projects`, передавая параметры запроса в формате JSON. В случае успешного создания проекта GitLab возвращает данные о вновь созданном проекте. - -## CreateGitlabProjectVariables - -CreateGitlabProjectVariables — создаёт переменные на уровне проекта в GitLab. - -### Пример запроса - -```yaml -project_id: '0' -variables: - - key: EXAMPLE_VARIABLE - value: value -``` - -### Спецификация запроса - -| Название | Обязательность | Описание | -|-----------------|----------------|------------------------------------------------------------------------------| -| project_id | Да | Идентификатор проекта, в котором необходимо создать переменные | -| variables | Да | Список создаваемых переменных | - -Список полей для переменных соответствует официальному GitLab Project-level CI/CD variables API, `/projects/:id/variables`, подробнее — [в документации Gitlab](https://docs.gitlab.com/api/project_level_variables/#create-a-variable). - -### Учётные данные - -* `token` — токен пользователя, от имени которого будет запускаться выполнение действия. - -### Примечание - -Для выполнения действия необходимо наличие токена GitLab. Токен передаётся через механизм учётных данных и используется для аутентификации при вызове GitLab API (HTTP-заголовок `Private-Token`). - -Действие осуществляет POST-запрос по URL: `/api/v4/projects/:id/variables`. - -## CreateGitlabProjectWebhook - -CreateGitlabProjectWebhook — создаёт вебхук в проекте GitLab. - -### Пример запроса - -```yaml -project_id: '0' -url: https://example.com -push_events: true -issues_events: true -merge_requests_events: true -pipeline_events: true -``` - -### Спецификация запроса - -| Название | Обязательность | Описание | -|----------------------|------------------|------------------------------------------------------------| -| project_id | Да | Идентификатор проекта, в котором необходимо создать вебхук | -| url | Да | URL-адрес вебхука | -| push_events | Да | Запускать вебхук при push в репозиторий | -| issues_events | Да | Запускать вебхук при создании Issue | -| merge_request_events | Да | Запускать вебхук при создании Merge Request | -| pipeline_events | Да | Запускать вебхук при запуске Pipeline | - -### Учётные данные - -* `token` — токен пользователя, от имени которого будет запускаться выполнение действия. - -### Примечание - -Для выполнения действия необходимо наличие токена GitLab. Токен передаётся через механизм учётных данных и используется для аутентификации при вызове GitLab API (HTTP-заголовок `Private-Token`). - -Действие осуществляет POST-запрос по URL: `/api/v4/projects/:id/hooks`. - -## CreateGitlabTag - -CreateGitlabTag — создаёт новый тег в проекте GitLab. - -### Пример запроса - -```yaml -project_id: '0' -tag_name: v1.0.0 -ref: main -message: Tag description -``` - -### Спецификация запроса - -| Название | Обязательность | Описание | -|----------------------|----------------|-------------------------------------------------------------------------------| -| project_id | Да | Идентификатор проекта, в котором необходимо создать тег | -| tag_name | Да | Название тега | -| ref | Да | Название ветки, тег или SHA-хеш коммита, на который будет ссылаться новый тег | -| message | Да | Описание тега | - -### Учётные данные - -* `token` — токен пользователя, от имени которого будет запускаться выполнение действия. - -### Примечание - -Для выполнения действия необходимо наличие токена GitLab. Токен передаётся через механизм учётных данных и используется для аутентификации при вызове GitLab API (HTTP-заголовок `Private-Token`). - -Действие осуществляет POST-запрос по URL: `/api/v4/projects/:id/repository/tags`. - -## CreateGitlabRelease - -CreateGitlabRelease — создаёт релиз GitLab на основе уже существующего тега. - -### Пример запроса - -```yaml -project_id: '0' -tag_name: v1.0.0 -name: Release v1.0.0 -description: | - ## Изменения: - - Новая функция. - - Исправления ошибок. -``` - -### Спецификация запроса - -| Название | Обязательность | Описание | -|--------------|----------------|--------------------------------------------------------------------------------------------| -| project_id | Да | Идентификатор проекта, в котором необходимо создать релиз | -| tag_name | Да | Название существующего тега, на основе которого формируется релиз | -| name | Да | Название релиза, отображаемое в GitLab | -| description | Нет | Описание релиза в формате Markdown | - -### Учётные данные - -* `token` — токен пользователя, от имени которого будет запускаться выполнение действия. - -### Примечание - -Для выполнения действия необходимо наличие токена GitLab. Токен передаётся через механизм учётных данных и используется для аутентификации при вызове GitLab API (HTTP-заголовок `Private-Token`). - -Действие осуществляет POST-запрос по URL: `/api/v4/projects/:id/releases`. - -## CreateKafkaACLs - -CreateKafkaACLs — создаёт новый набор ACL в Kafka. - -### Пример запроса - -```yaml -securityProtocol: SASL_PLAINTEXT -saslMechanism: PLAIN -acls: - - topics: - - example_1 - allow: - - User:principal_2 - - Group:principal_3 - deny: - - User:principal_4 - - Group:principal_5 - ops: - - CREATE - - READ - - WRITE - - DELETE - - DESCRIBE - - DESCRIBE_CONFIGS - - ALTER - pattern: LITERAL - - topics: - - example_6 - allow: - - User:principal_7 - allow_hosts: - - 127.0.0.1 - deny: - - User:principal_8 - deny_hosts: - - 127.0.0.1 - ops: - - CREATE - pattern: LITERAL -``` - -### Спецификация запроса - -| Название | Обязательность | Описание | Возможные значения | Значение по умолчанию | -|-------------------------|----------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------|------------------------| -| securityProtocol | Да | Протокол для подключения к Kafka. Подробнее — [в документации Kafka](https://kafka.apache.org/documentation/#adminclientconfigs_security.protocol) | PLAINTEXT, SASL_PLAINTEXT, SASL_SSL | - | -| saslMechanism | Нет | Механизм аутентификации, который будет использовать SASL. Обязателен при использовании протокола SASL_PLAINTEXT или SASL_SSL. Подробнее — [в документации Kafka](https://kafka.apache.org/documentation/#security_sasl_mechanism) | PLAIN, SCRAM-SHA-256, SCRAM-SHA-512 | - | -| acls | Да | Набор ACL, которые необходимо создать | - | - | -| acls.ops | Да | Список операций, для которых будет создано правило | [Список возможных операций](#список-возможных-операций) | - | -| acls.pattern | Да | Тип шаблона | [Список возможных шаблонов](#список-возможных-шаблонов) | - | -| acls.topics | Нет | Список из названий топиков, для которых применяется правило | - | - | -| acls.groups | Нет | Список из названий групп, для которых применяется правило | - | - | -| acls.transactional_ids | Нет | Список из ID транзакций, для которых применяется правило | - | - | -| acls.tokens | Нет | Список токенов, для которых применяется правило | - | - | -| acls.allow | Нет | Список хостов, для которых разрешается операция | - | - | -| acls.deny | Нет | Список принципалов (user, group), для которых запрещается правило | - | - | -| acls.deny_hosts | Нет | Список хостов, для которых запрещается операция | - | - | - -### Учётные данные - -* `user` — имя пользователя, от которого будет запускаться выполнение действия. -* `password` — пароль пользователя, от имени которого будет запускаться выполнение действия. - -### Список возможных шаблонов - -* ANY. -* MATCH. -* LITERAL. -* PREFIXED. - -### Список возможных операций - -Подробнее — [в документации Kafka](https://kafka.apache.org). - -Topic: - -* ALL. -* ALTER. -* ALTER_CONFIGS. -* CREATE. -* DELETE. -* DESCRIBE. -* DESCRIBE_CONFIGS. -* READ. -* WRITE. - -Group: - -* ALL. -* DELETE. -* DESCRIBE. -* READ. - -TransactionalID: - -* ALL. -* DESCRIBE. -* WRITE. - -Tokens: - -* DESCRIBE. - -## CreateKafkaTopics - -CreateKafkaTopics — создаёт новые топики в Kafka. - -### Пример запроса - -```yaml -securityProtocol: SASL_PLAINTEXT -saslMechanism: PLAIN -partitions: 1 -replication_factor: 1 -configs: {} -topics: - - example_1 - - example_2 -``` - -### Спецификация запроса - -| Название | Обязательность | Описание | Возможные значения | -|-------------------------|----------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------| -| securityProtocol | Да | Протокол для подключения к Kafka. Подробнее — [в документации Kafka](https://kafka.apache.org/documentation/#adminclientconfigs_security.protocol) | PLAINTEXT, SASL_PLAINTEXT, SASL_SSL | -| saslMechanism | Нет | Механизм аутентификации, который будет использовать SASL. Обязателен при использовании протокола SASL_PLAINTEXT или SASL_SSL. Подробнее — [в документации Kafka](https://kafka.apache.org/documentation/#security_sasl_mechanism) | PLAIN, SCRAM-SHA-256, SCRAM-SHA-512 | -| partitions | Да | Количество разделов (партиций), на которые будет разделён топик | - | -| replication_factor | Да | Количество копий (реплик) каждой партиции топика, которые необходимо разместить на разных брокерах | - | -| configs | Да | Конфигурация в формате ключ-значение для создаваемых топиков | Значения приведены [в документации Kafka](https://kafka.apache.org/documentation/#topicconfigs) | -| topics | Да | Список названий топиков, которые необходимо создать | - | - -### Учётные данные - -* `user` — имя пользователя, от которого будет запускаться выполнение действия. -* `password` — пароль пользователя, от имени которого будет запускаться выполнение действия. - -## CreateKafkaUsers - -CreateKafkaUsers — создаёт новых пользователей SASL/SCRAM в Kafka. - -### Пример запроса - -```yaml -securityProtocol: SASL_PLAINTEXT -saslMechanism: PLAIN -users: - - user: example_user_1 - password: example_password_user_1 - mechanism: SCRAM-SHA-256 - iterations: 4096 - - user: example_user_2 - password: example_password_user_2 - mechanism: SCRAM-SHA-256 - iterations: 4096 -``` - -### Спецификация запроса - -| Название | Обязательность | Описание | Возможные значения | -|-------------------|----------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------| -| securityProtocol | Да | Протокол для подключения к Kafka. Подробнее — [в документации Kafka](https://kafka.apache.org/documentation/#adminclientconfigs_security.protocol) | PLAINTEXT, SASL_PLAINTEXT, SASL_SSL | -| saslMechanism | Нет | Механизм аутентификации, который будет использовать SASL. Обязателен при использовании протокола SASL_PLAINTEXT или SASL_SSL. Подробнее — [в документации Kafka](https://kafka.apache.org/documentation/#security_sasl_mechanism) | PLAIN, SCRAM-SHA-256, SCRAM-SHA-512 | -| users | Да | Набор пользователей, которых необходимо создать | - | -| users.user | Да | Имя создаваемого пользователя | - | -| users.password | Да | Пароль создаваемого пользователя | - | -| users.mechanism | Да | Механизм аутентификации создаваемого пользователя | SCRAM-SHA-256, SCRAM-SHA-512 | -| users.iterations | Да | Количество итераций, которые будут применяться для хеширования пароля | От 4096 до 16384 | - -### Учётные данные - -* `user` — имя пользователя, от которого будет запускаться выполнение действия. -* `password` — пароль пользователя, от имени которого будет запускаться выполнение действия. - -## CreateCodeScoringProject - -CreateCodeScoringProject — создаёт новый проект в системе CodeScoring. -Действие использует CodeScoring API для регистрации проекта с указанными параметрами: название проекта, URL репозитория, ID VCS системы и опция автоматического запуска SCA-анализа после клонирования репозитория. - -### Пример запроса - -```yaml -name: example-project -repository: https://gitlab.example.com/group/project.git -vcs_id: 2 -run_sca_after_clone: true -``` - -### Спецификация запроса - -| Название | Обязательность | Описание | -|--------------------|----------------|-------------------------------------------------------------------------------| -| name | Да | Название проекта в CodeScoring | -| repository | Да | URL репозитория (например, ) | -| vcs_id | Да | ID VCS системы в CodeScoring (должен быть больше 0) | -| run_sca_after_clone| Нет | Автоматический запуск SCA-анализа после клонирования репозитория | - -### Ответ - -В ответе возвращается объект созданного проекта со следующей информацией: идентификатор проекта (pk), название, тип проекта, описание, информация о репозитории, статус проекта, права доступа, лицензия, количество зависимостей и уязвимостей, языки проекта, статус расписания сканирования и даты первого и последнего SCA-сканирования. - -## DeleteCodeScoringProject - -DeleteCodeScoringProject — удаляет проект в системе CodeScoring по его ID. - -### Пример запроса - -```yaml -id: 1 -``` - -### Спецификация запроса - -| Название | Обязательность | Описание | -|----------|----------------|-----------------------------| -| id | Да | ID проекта в CodeScoring | - -## CreateKeycloakClient - -CreateKeycloakClient — создаёт нового клиента в Keycloak. - -### Пример запроса - -```yaml -realm: master -config: - clientId: example - name: example - enabled: true - clientAuthenticatorType: client-secret - secret: secret - defaultClientScopes: - - roles - - profile - - email - optionalClientScopes: - - address - - phone - - offline_access -``` - -### Спецификация запроса - -| Название | Обязательность | Описание | Возможные значения | -|----------|----------------|----------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------| -| realm | Да | Realm в Keycloak, где требуется создать клиента | - | -| config | Да | Параметры создаваемого клиента в соответствии со [спецификацией ClientRepresentation Keycloak](https://www.keycloak.org/docs-api/latest/rest-api/index.html#ClientRepresentation) | - | - -### Учётные данные - -* `username` — имя пользователя, от которого будет запускаться выполнение действия. -* `password` — пароль пользователя, от имени которого будет запускаться выполнение действия. - -## CreateKubernetesResource - -CreateKubernetesResource — создаёт новый ресурс или ресурсы в кластере Kubernetes или обновляет существующие. - -### Пример запроса - -```yaml -manifests: - - apiVersion: v1 - kind: Namespace - metadata: - name: example1 - - apiVersion: v1 - kind: Namespace - metadata: - name: example2 -``` - -### Спецификация запроса - -| Название | Обязательность | Описание | -|----------------------------|----------------|----------------------------------------------------------------------------------------------------| -| manifests | Да | Манифесты Kubernetes, которые будут применены | - -### Учётные данные - -* `token` — токен сервисного аккаунта в Kubernetes. - -## GetKubernetesResource - -GetKubernetesResource — получает ресурс из Kubernetes кластера. - -### Пример запроса - -```yaml -group: managed-services.deckhouse.io -version: v1alpha1 -resource_type: postgres -resource_name: example-postgres -namespace: default -``` - -### Спецификация запроса - -| Название | Обязательность | Описание | Возможные значения | -|---------------------------|----------------|------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| group | Да | API-группа ресурса. Указывает, к какой группе API относится запрашиваемый объект | [Определение требуемых Group и Version](#определение-требуемых-group-и-version) | -| version | Да | Версия API ресурса | [Определение требуемых Group и Version](#определение-требуемых-group-и-version) | -| resource_type | Да | Название ресурса во множественном числе, как в поле NAME вывода команды `kubectl api-resources` | - | -| resource_name | Да | Название конкретного ресурса, который необходимо получить | - | -| namespace | Да | Неймспейс, в котором находится ресурс | - | - -### Ответ - -При успешном выполнении действие возвращает объект ресурса в поле `resource`. Если ресурс не найден, действие завершается с ошибкой. - -| Название | Описание | -|------------|-----------------------------------------------| -| `resource` | Объект ресурса в формате Kubernetes | - -### Учётные данные - -* `token` — токен сервисного аккаунта в Kubernetes. - -## CreateRepositoryFromTemplate - -CreateRepositoryFromTemplate — создаёт новый репозиторий из шаблона в Gitlab. Механизм рендеринга основан на [Go template](https://developer.hashicorp.com/nomad/docs/reference/go-template-syntax) и поддерживает все встроенные методы, а также расширения, добавленные в платформу. - -### Пример запроса - -```yaml -sourceBranch: main -sourceTag: v1.0.0 -templateRepositoryUrl: https://gitlab.example.com/example-1.git -targetRepositoryUrl: https://gitlab.example.com/example-2.git -targetBranch: master -additionalIgnoreFiles: - - .ignore - - .example -values: - key1: value1 - nested: - enabled: true - subkey: 123 -``` - -### Спецификация запроса - -| Название | Обязательность | Описание | Значение по умолчанию | -|--------------------------|----------------|-----------------------------------------------------------------------------------------------------------------------------------------|-----------------------| -| templateRepositoryUrl | Да | URL шаблонного репозитория | - | -| targetRepositoryUrl | Да | URL репозитория, который будет создан в результате выполнения действия | - | -| values | Да | Переменные, используемые при шаблонизации, в формате `ключ: значение` | - | -| additionalIgnoreFiles | Нет | Список файлов, содержащих пути для исключения из целевого репозитория. Заполняется по аналогии с [.templateignore](#templateignore) | - | -| sourceTag | Нет | Тег шаблонного репозитория, который будет использоваться при шаблонизации. Если не указан, используется ветка шаблонного репозитория | - | -| sourceBranch | Нет | Ветка шаблонного репозитория, которая будет использоваться при шаблонизации | main | -| targetBranch | Нет | Ветка целевого репозитория, которая будет создана в результате выполнения действия | main | - -### Учётные данные - -* `password` — пароль (токен) пользователя, от имени которого будет запускаться выполнение действия. -* `username` — имя пользователя, от которого будет запускаться выполнение действия. - -### Алгоритм работы - -Платформа: - -1. Клонирует шаблонный репозиторий по указанному URL (`templateRepositoryUrl`), используя в качестве ref либо `sourceTag`, либо `sourceBranch`, либо ветку `main`. -1. Считывает файл `values.yaml`, хранящийся в корне репозитория, и определяет переменные по умолчанию для шаблонизации. -1. Считывает переменные, передаваемые при запуске действия, и делает их merge с переменными из `values.yaml`. Приоритет при merge отдаётся переменным, передаваемым при запуске действия. -1. Считывает файл `.templateignore` и определяет директории и файлы, исключаемые из шаблонизации. -1. Рендерит из шаблонов файлы, учитывая `values.yaml` и переданные в действие переменные. -1. Изменяет удалённый (remote) репозиторий на целевой (`targetRepositoryUrl`) и делает git push в целевую ветку (`targetBranch`), либо в основную ветку `main`. - -### Детали работы - -Действие поддерживает шаблонизацию имён директорий и файлов. Для этого необходимо в их название добавить выражение в формате [Go template](https://developer.hashicorp.com/nomad/docs/reference/go-template-syntax). -Например, директория `src/{{ .module }}/utils` при наличии value `module` со значением `example` будет отрендерена в директорию `src/example/utils` в целевом репозитории. - -Если после рендеринга из шаблона содержимое файла будет отсутствовать, файл не создаётся. Например, файл с содержимым: - -```go -{{- if .createContent }} -- Это контент, который будет отображаться, если переменная createContent == true -{{- end }} -``` - -не будет создан, если переменная `createContent` имеет значение `false`. Аналогичным образом, не будут созданы файлы, изначально являющиеся пустыми. - -При отсутствии переменных для шаблонизации одновременно в файле `values.yaml` и в переменных, передаваемых при запуске действия, рендеринг завершится с ошибкой и целевой репозиторий создан не будет. - -### Переменные шаблонного репозитория - -Для добавления переменных по умолчанию, используемых при шаблонизации, необходимо создать в корне репозитория файл values.yaml с соответствующим содержимым. - -Пример файла `values.yaml`: - -```yaml -module: example -createContent: false -``` - -Файл `values.yaml` является опциональным. - - - -### Исключение файлов - -Некоторые файлы могут содержать переменные в формате [Go template](https://developer.hashicorp.com/nomad/docs/reference/go-template-syntax), которые необходимо сохранять при рендеринге репозитория из шаблона, например, Helm-чарты в директории `helm`. Директория `.git` игнорируется всегда. - -Для исключения подобных файлов из механизма рендеринга следует добавить в корень репозитория файл `.templateignore` с соответствующим содержимым. - -В каждой строке `.templateignore` задаётся одно правило — путь или маска. Если в строке есть `{{`, вся строка выполняется как один шаблон Go с теми же переменными и функциями, что при подстановке в имена файлов и каталогов (подробнее — [«Как обрабатывается строка правила»](#templateignore-templates)). Если `{{` в строке нет, подстановка переменных из `values.yaml` и из запроса действия не делается: строка читается как есть и сравнивается с относительным путём на диске, допускаются литералы и символы маски `*` и `**`. - -Пример файла `.templateignore` только с масками пути, без шаблонов подстановки, для игнорирования содержимого директорий `helm`, `docs`: - -```sh -helm/** -docs/** -``` - -#### Добавление путей в игнор - -1. В корне шаблонного репозитория создайте или отредактируйте файл `.templateignore` (по одному правилу на строку). - -1. Каждая строка — это одно правило: путь от корня репозитория. В нём допускаются обычные символы пути и маски: звёздочка `*` в имени сегмента, последовательность `**` — для произвольной глубины вложенных каталогов. Платформа сопоставляет относительный путь с маской по встроенным правилам (аналогично распространённым соглашениям для масок в файлах игнорирования в системах контроля версий). - -1. Чтобы подставить фрагмент пути из `values.yaml` или из поля `values` запроса действия, используйте в строке конструкции Go template (`{{ ... }}`). Если в строке есть `{{`, платформа обрабатывает всю строку от начала до конца как один шаблон Go: нельзя оставить часть строки «простым текстом» и шаблонизировать только середину пути. Примеры — в разделе [«Примеры Go template в `.templateignore`»](#templateignore-go-examples). - -1. Пустые строки и строки, начинающиеся с `#`, при разборе файла пропускаются — их можно использовать для комментариев. - -#### Примеры без подстановки (только маски пути) - -Отдельные файлы в корне: - -```sh -package-lock.json -yarn.lock -LICENSE -.env.local -``` - -Каталоги целиком и типичные артефакты сборки: - -```sh -vendor/** -node_modules/** -dist/** -build/tmp/** -``` - -Вложенность по маске: - -```sh -docs/**/*.pdf -charts/*/values.schema.json -.github/workflows/** -``` - -Секреты по расширению во всём дереве: - -```sh -**/*.pem -**/*.key -``` - - - -#### Как обрабатывается строка правила - -Переменные для раскрытия правил те же, что объединены из `values.yaml` в корне шаблонного репозитория и из поля `values` в запросе действия (приоритет у `values` в запросе). - -Для каждой непустой строки из `.templateignore` или из файла из `additionalIgnoreFiles` платформа делает следующее. - -1. В список правил всегда попадает строка как в файле, без изменений. Именно её потом сравнивают с путём к файлу в первую очередь — это нужно, когда в именах на диске ещё есть фрагменты вроде `{{ .module }}` до переименования. - -1. Если в строке есть `{{`, платформа один раз прогоняет всю строку через шаблонизатор [Go template](https://developer.hashicorp.com/nomad/docs/reference/go-template-syntax) с теми же возможностями, что при подстановке в имена файлов и каталогов (встроенные функции платформы и набор Sprig). Если `{{` в строке нет, этот шаг пропускают. - -1. Если шаг подстановки был и полученный текст отличается от строки в файле (включая случай «на выходе пусто»), в список правил добавляют вторую запись — уже с этим полученным текстом. Итого из одной строки файла может получиться две записи в списке. При проверке пути к файлу смотрят обе: достаточно совпадения с любой из них — файл попадает под правило. - -Дальше при обходе дерева для каждого пути к файлу вычисляется путь относительно корня клонированной копии (с прямыми слешами). Путь сравнивается с каждым правилом: сначала по правилам сопоставления с маской (в том числе с использованием `*` и `**`), при необходимости — по точному совпадению строки правила и относительного пути. - -Так одна строка в файле может задать два правила: например, исходное `charts/{{ .name }}/**` (чтобы не трогать путь до переименования каталогов), и раскрытое `charts/billing/**` (чтобы совпадало с путём после подстановки переменных в имена на диске). Поэтому правила работают и «до», и «после» этапа переименования каталогов по шаблону. - -Если шаблон в строке синтаксически неверен или обращается к отсутствующему полю, раскрытие правил завершается ошибкой, и рендер репозитория не продолжается. - -Поле `additionalIgnoreFiles` в действии задаёт имена дополнительных файлов в корне репозитория; в каждом из них — такие же строки-правила, как в `.templateignore`, с тем же раскрытием шаблонов. Но смысл другой: совпавшие пути убирают из рабочей копии (каталог или файл удаляют), и делают это дважды — в начале и в конце цепочки обработки, чтобы эти объекты не участвовали в дальнейших шагах и не попали в итоговый репозиторий. - -Файл `.templateignore`, наоборот, означает «не шаблонизировать»: для совпавших путей платформа не подставляет переменные в содержимое файлов и не применяет к соответствующим каталогам переименование по шаблону в пути. Сами файлы и каталоги при этом не удаляются только из‑за записи в `.templateignore` — они остаются в копии, но обрабатываются как обычный текст и обычные имена, без шага шаблонизации. - - - -#### Примеры Go template в `.templateignore` - -Ниже в каждом примере показаны фрагменты `values.yaml` (или эквивалентные поля в `values` запроса) и строки `.templateignore`. Несколько независимых правил задают несколькими строками файла: результат одной строки-шаблона — одна строка с маской; перевод строк внутри результата шаблона не делит правило на несколько. - -Имя каталога в правиле берётся из `values.yaml` или из `values` действия: - -`values.yaml`: - -```yaml -project: payment-gateway -``` - -`.templateignore`: - -```go -{{ .project }}/legacy/** -``` - -В набор правил попадут строки `{{ .project }}/legacy/**` и `payment-gateway/legacy/**`. - -Сегмент пути из переменной и статический хвост: - -`values.yaml`: - -```yaml -lang: ru -``` - -`.templateignore`: - -```go -apps/{{ .lang }}/messages.yaml -``` - -Условное правило в одной строке работает следующим образом: при `skipGenerated: false` подстановка даёт пустую строку, которая всё равно добавляется вторым правилом. Исходная строка с `{{` используется как маска пути и обычно не совпадает с реальными путями. При `skipGenerated: true` вторым правилом становится `generated/**`): - -`values.yaml`: - -```yaml -skipGenerated: false -``` - -`.templateignore`: - -```go -{{- if .skipGenerated }}generated/**{{- end }} -``` - -Вариант «игнорировать только не production»: - -`values.yaml`: - -```yaml -tier: staging -``` - -`.templateignore`: - -```go -{{- if ne .tier "prod" }}mock/**{{- end }} -``` - -Использование `printf` для сборки строки маски (удобно, если имя чарта в переменной): - -`values.yaml`: - -```yaml -chartName: wordpress -``` - -`.templateignore`: - -```go -{{ printf "charts/%s/**" .chartName }} -``` - -Значение по умолчанию для «пустого» значения — функция `default` из набора Sprig. Поле в данных должно существовать (иначе при раскрытии сработает `missingkey=error`); для «не задано в YAML» заведите ключ с пустой строкой или используйте условие `if` / `index`: - -`values.yaml`: - -```yaml -envName: "" -``` - -`.templateignore`: - -```go -{{ default "dev" .envName }}/secrets/** -``` - -При пустом `envName` в правило попадёт и `{{ default "dev" .envName }}/secrets/**`, и `dev/secrets/**`. - -Опциональный сегмент пути ([`with`](https://pkg.go.dev/text/template#hdr-Actions)): - -`values.yaml`: - -```yaml -analyticsModule: tracking -``` - -`.templateignore`: - -```go -{{ with .analyticsModule }}{{ . }}/vendor/**{{ end }} -``` - -Если `analyticsModule` пусто, шаблон даёт пустую строку (см. правила раскрытия выше). - -Доступ к полю вложенной структуры по строковому ключу [`index`](https://pkg.go.dev/text/template#hdr-Functions): - -`values.yaml`: - -```yaml -regions: - primary: eu-west -``` - -`.templateignore`: - -```go -configs/{{ index .regions "primary" }}/bootstrap.yaml -``` - -Удаление пробелов в сегменте имени — функция `trim` из набора Sprig: - -`values.yaml`: - -```yaml -serviceName: " billing-api " -``` - -`.templateignore`: - -```go -{{ trim .serviceName " " }}/logs/** -``` - -Несколько фрагментов в одной маске: - -`values.yaml`: - -```yaml -base: services -variant: canary -``` - -`.templateignore`: - -```go -{{ .base }}/{{ .variant }}/**/*.tmp -``` - -#### Примеры для `additionalIgnoreFiles` - -В спецификации действия перечисляются имена файлов в корне репозитория (например, `.ship-ignore`, `.ci-remove`). Формат строк внутри таких файлов тот же: комментарии `#`, пустые строки, маски пути, при необходимости — шаблоны Go в строках. - -Файл `.ship-ignore` в шаблоне: - -```sh -# не попадает в целевой репозиторий -local/fixtures/** -scratchpad.md -``` - -Фрагмент запроса действия: - -```yaml -additionalIgnoreFiles: - - .ship-ignore -``` - -Шаблон в файле для `additionalIgnoreFiles` (удаление каталога, имя из переменных): - -Файл `.env-drop` в корне шаблона: - -```go -{{ .obsoleteDir }}/** -``` - -При `obsoleteDir: legacy-ui` из `values` после раскрытия в списке удаления окажутся и `{{ .obsoleteDir }}/**`, и `legacy-ui/**` — совпавшие пути будут удалены из копии перед финальными шагами. - -{{< alert level="info" >}} -Не путайте назначение: `.templateignore` оставляет файлы на диске, но отключает для них переименование пути и рендер содержимого; списки из `additionalIgnoreFiles` удаляют совпавшие пути из рабочей копии. -{{< /alert >}} - -### Пример структуры директорий шаблонного репозитория - -```sh -├── example-folder-01 -│ ├── example-file-01 -│ └── {{ .example }}-file-02 -├── {{ .example }}-folder-02 -│ └── ... -├── values.yaml -└── .templateignore -``` - -Если переменная `example` при рендере репозитория примет значение `new`, то итоговая структура после рендера будет выглядеть следующим образом: - -```sh -├── example-folder-01 -│ ├── example-file-01 -│ └── new-file-02 -├── new-folder-02 -│ └── ... -├── values.yaml -└── .templateignore -``` - - - -### Локальная отладка - -Для локальной отладки шаблонов доступна утилита `ddp-render-dir`. - -Утилита: - -1. Создаёт копию исходной директории. -1. Выполняет рендеринг файлов в этой директории по тем же правилам, что и действие создания репозиториев из шаблонов. - -Ключи командной строки для запуска: - -* `--source-dir` — исходная директория, которую необходимо отрендерить. -* `--target-dir` — директория, в которую будет помещен результат рендеринга. -* `--values` (опционально) — путь к файлу `values.yaml` с переменными, которые будут использоваться при рендеринге. -* `--ignore-files` (опционально) — список файлов, содержащих пути для исключения из целевого репозитория. - -## CreateSonarqubeProject - -CreateSonarqubeProject — создаёт новый проект в SonarQube. -Действие использует SonarQube Web API для создания проекта с указанными параметрами, такими как ключ (project key), название проекта, главная ветка, параметры определения нового кода (new code definition) и видимость проекта. Аутентификация осуществляется с использованием SonarQube token, который должен быть передан в учётных данных. - -### Пример запроса - -```yaml -project: example-project -name: example-project -mainBranch: develop -newCodeDefinitionType: NUMBER_OF_DAYS -newCodeDefinitionValue: '30' -visibility: public -``` - -### Спецификация запроса - -| Название | Обязательность | Описание | Возможные значения | Значение по умолчанию | -|-------------------------|----------------|-------------------------------------------------------------------------------------------------|----------------------------------------------------|------------------------| -| project | Да | Уникальный идентификатор проекта (Project Key) в SonarQube | - | - | -| name | Да | Название проекта, отображаемое в интерфейсе SonarQube | - | - | -| mainBranch | Нет | Название главной ветки проекта | - | master | -| newCodeDefinitionType | Нет | Метод определения «нового кода» | PREVIOUS_VERSION, NUMBER_OF_DAYS, REFERENCE_BRANCH | - | -| newCodeDefinitionValue | Нет | Значение для определения «нового кода» (например, количество дней, если тип - NUMBER_OF_DAYS) | - | - | -| visibility | Нет | Видимость проекта | private, public | private | - -### Учётные данные - -* `token` — токен Sonarqube с типом User Token, сгенерированный пользователем, от имени которого будет запускаться выполнение действия. - -## CreateVaultSecret - -CreateVaultSecret — создаёт секрет с одним или несколькими значениями в HashiCorp Vault. - -### Пример запроса - -```yaml -path: example/data/path -secrets: - - key: key1 - value: value1 - - key: key2 - value: value2 -``` - -### Спецификация запроса - -| Название | Обязательность | Описание | Возможные значения | По умолчанию | -|---------------------------|----------------|-----------------------------------------------------------------|-------------------------------------|--------------| -| path | Да | Путь, по которому будет сохранён секрет в Vault | | - | -| allow_update | Нет | Определяет поведение действия при наличии существующего секрета | true, false, merge, merge_or_create | false | -| secrets | Да | Набор секретов, которые необходимо создать в Vault | | - | -| secrets.key | Да | Название (идентификатор) секрета | | - | -| secrets.value | Да | Значение секрета | | - | - -### Учётные данные - -* `token` — Vault-токен, который имеет необходимые права для создания секретов. - -### Примечание - -`allow_update` — определяет поведение действия при создании или обновлении секрета: - -- `false` (по умолчанию) — действие завершается с ошибкой, если секрет уже существует; -- `true` — создаётся новая версия секрета со значениями, переданными в действии; -- `merge` — обновляются или создаются только те ключи секрета, которые указаны в действии. Существующие ключи, не упомянутые в действии, сохраняются без изменений. Если секрета по пути ещё нет, действие завершается с ошибкой; -- `merge_or_create` — как `merge`, если секрет уже существует; если секрета по пути нет, он создаётся (полная запись значений из действия). - -## DeleteVaultSecret - -DeleteVaultSecret — удаляет секрет из HashiCorp Vault. - -### Пример запроса - -```yaml -path: example/data/path -``` - -### Спецификация запроса - -| Название | Обязательность | Описание | -|---------------------------|----------------|----------------------------------------------------------------------------------------------------| -| path | Да | Путь, по которому находится секрет в Vault, который необходимо удалить | - -### Учётные данные - -* `token` — Vault-токен, который имеет необходимые права для удаления секретов. - -## DeleteDefectdojoProduct - -DeleteDefectdojoProduct — удаляет продукт из DefectDojo. Действие использует DefectDojo API v2. - -### Пример запроса - -```yaml -id: 1 -``` - -### Спецификация запроса - -| Название | Обязательность | Описание | Значение по умолчанию | -|-------------|----------------|----------------------------------------------------|------------------------| -| id | Да | Идентификатор продукта, который необходимо удалить | - | - -### Учётные данные - -* `token` — API v2 Key пользователя, от имени которого будет запускаться выполнение действия. - -## DeleteGitlabProject - -DeleteGitlabProject — удаляет существующий проект в GitLab. Действие осуществляет вызов GitLab API для удаления проекта. Для аутентификации используется GitLab token, который должен быть предоставлен в учётных данных. - -### Пример запроса - -```yaml -project_id: 0 -``` - -### Спецификация запроса - -| Название | Обязательность | Описание | -|---------------------------|----------------|----------------------------------------------------------------------------------------------------| -| project_id | Да | Идентификатор проекта, который необходимо удалить | - -### Учётные данные - -* `token` — токен пользователя, от имени которого будет запускаться выполнение действия. - -### Примечание - -Для выполнения действия необходимо наличие токена GitLab. -Токен передаётся через механизм учётных данных и используется для аутентификации при вызове GitLab API (HTTP-заголовок `Private-Token`). - -Действие осуществляет DELETE-запрос по URL: `/api/v4/projects/:id`. - -## DeleteKafkaACLs - -DeleteKafkaACLs — удаляет набор ACL в Kafka. - -### Пример запроса - -```yaml -securityProtocol: SASL_PLAINTEXT -saslMechanism: PLAIN -acls: - - topics: - - example_1 - allow: - - User:principal_2 - - Group:principal_3 - allow_hosts: - - 127.0.0.1 - deny: - - User:principal_4 - - Group:principal_5 - deny_host: - - 127.0.0.1 - ops: - - CREATE - - READ - - WRITE - - DELETE - - DESCRIBE - - DESCRIBE_CONFIGS - - ALTER - pattern: LITERAL - - any_topic: true - any_group: true - any_transactional_id: true - any_allow: true - any_allow_hosts: true - any_deny: true - any_deny_hosts: true - ops: - - ANY - pattern: ANY - - any_resource: true - any_allow: true - any_allow_hosts: true - any_deny: true - any_deny_hosts: true - ops: - - ANY - pattern: ANY -``` - -### Спецификация запроса - -| Название | Обязательность | Описание | Возможные значения | Значение по умолчанию | -|---------------------------|----------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------|------------------------| -| securityProtocol | Да | Протокол для подключения к Kafka. Подробнее — [в документации Kafka](https://kafka.apache.org/documentation/#adminclientconfigs_security.protocol) | PLAINTEXT, SASL_PLAINTEXT, SASL_SSL | - | -| saslMechanism | Нет | Механизм аутентификации, который будет использовать SASL. Обязателен при использовании протокола SASL_PLAINTEXT или SASL_SSL. Подробнее — [в документации Kafka](https://kafka.apache.org/documentation/#security_sasl_mechanism) | PLAIN, SCRAM-SHA-256, SCRAM-SHA-512 | - | -| acls | Да | Набор ACL, которые необходимо создать | - | - | -| acls.ops | Да | Список операций, для которых будет создано правило | [Список возможных операций](#список-возможных-операций) | - | -| acls.pattern | Да | Тип шаблона | [Список возможных шаблонов](#список-возможных-шаблонов) | - | -| acls.any_resource | Нет | Все ресурсы | - | false | -| acls.topics | Нет | Список из названий топиков, для которых применять правило | - | - | -| acls.any_topic | Нет | Все топики | - | false | -| acls.groups | Нет | Список из названий групп, для которых применять правило | - | - | -| acls.any_group | Нет | Все топики | - | false | -| acls.transactional_ids | Нет | Список из ID транзакций, для которых применять правило | - | - | -| acls.any_transactional_id | Нет | Любая транзакция | - | false | -| acls.tokens | Нет | Список токенов, для которых применять правило | - | - | -| acls.any_token | Нет | Все токены | - | false | -| acls.allow | Нет | Список принципалов (user, group), для которых разрешить правило | - | - | -| acls.any_allow | Нет | Любой принципал (user, group) | - | false | -| acls.allow_hosts | Нет | Список хостов, для которых разрешить операцию | - | - | -| acls.any_allow_hosts | Нет | Любой хост, с которого разрешено проводить операцию | - | false | -| acls.deny | Нет | Список принципалов (user, group), для которых запретить правило | - | - | -| acls.any_deny | Нет | Любой принципал (user, group) | - | false | -| acls.deny_hosts | Нет | Список хостов, для которых запретить операцию | - | - | -| acls.any_deny_hosts | Нет | Любой хост, с которого запрещено проводить операцию | - | false | - -### Учётные данные - -* `user` — имя пользователя, от которого будет запускаться выполнение действия. -* `password` — пароль пользователя, от имени которого будет запускаться выполнение действия. - -### Список возможных pattern - -* ANY. -* MATCH. -* LITERAL. -* PREFIXED. - -### Список возможных операций - -Подробное описание — [в документации Kafka](https://kafka.apache.org/39/documentation/#operations_resources_and_protocols). - -Topic: - -* ALL. -* ALTER. -* ALTER_CONFIGS. -* CREATE. -* DELETE. -* DESCRIBE. -* DESCRIBE_CONFIGS. -* READ. -* WRITE. - -Group: - -* ALL. -* DELETE. -* DESCRIBE. -* READ. - -TransactionalID: - -* ALL. -* DESCRIBE. -* WRITE. - -Token: - -* DESCRIBE. - -## DeleteKafkaTopics - -DeleteKafkaTopics — удаляет существующие топики в Kafka. - -### Пример запроса - -```yaml -securityProtocol: SASL_PLAINTEXT -saslMechanism: PLAIN -topics: - - example_1 - - example_2 -``` - -### Спецификация запроса - -| Название | Обязательность | Описание | Возможные значения | -|---------------------------|----------------|-----------------------------------------------------|-----------------------------------------| -| auth_type | Да | Тип авторизации в Kafka | PLAINTEXT, SCRAM-SHA-256, SCRAM-SHA-512 | -| topics | Да | Список названий топиков, которые необходимо удалить | - | - -### Учётные данные - -* `user` — имя пользователя, от которого будет запускаться выполнение действия. -* `password` — пароль пользователя, от имени которого будет запускаться выполнение действия. - -## DeleteKafkaUsers - -DeleteKafkaUsers — удаляет существующих пользователей SASL/SCRAM в Kafka. - -### Пример запроса - -```yaml -securityProtocol: SASL_PLAINTEXT -saslMechanism: PLAIN -users: - - user: example_user_1 - mechanism: SCRAM-SHA-256 - - user: example_user_2 - mechanism: SCRAM-SHA-256 -``` - -### Спецификация запроса - -| Название | Обязательность | Описание | Возможные значения | -|-------------------|----------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------| -| securityProtocol | Да | Протокол для подключения к Kafka. Подробнее — [в документации Kafka](https://kafka.apache.org/documentation/#adminclientconfigs_security.protocol) | PLAINTEXT, SASL_PLAINTEXT, SASL_SSL | -| saslMechanism | Нет | Механизм аутентификации, который будет использовать SASL. Обязателен при использовании протокола SASL_PLAINTEXT или SASL_SSL. Подробнее — [в документации Kafka](https://kafka.apache.org/documentation/#security_sasl_mechanism) | PLAIN, SCRAM-SHA-256, SCRAM-SHA-512 | -| users | Да | Набор пользователей, которых необходимо удалить | - | -| users.user | Да | Имя удаляемого пользователя | - | -| users.mechanism | Да | Механизм аутентификации удаляемого пользователя | SCRAM-SHA-256, SCRAM-SHA-512 | - -### Учётные данные - -* `user` — имя пользователя, от которого будет запускаться выполнение действия. -* `password` — пароль пользователя, от имени которого будет запускаться выполнение действия. - -## DeleteKubernetesResource - -DeleteKubernetesResource — удаляет существующий ресурс в кластере Kubernetes. - -### Пример запроса - -```yaml -group: apps -version: v1 -resource_type: deployments -resource_name: nginx-deployment -namespace: example -``` - -### Спецификация запроса - -| Название | Обязательность | Описание | Возможные значения | -|---------------------------|-----------------|------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| group | Да | API-группа ресурса. Указывает, к какой группе API относится удаляемый объект | [Определение требуемых Group и Version](#определение-требуемых-group-и-version) | -| version | Да | Версия API ресурса | [Определение требуемых Group и Version](#определение-требуемых-group-и-version) | -| resource_type | Да | Тип удаляемого ресурса | pods, services, deployments, statefulsets, daemonsets, replicasets, jobs, cronjobs, nodes, namespaces, configmaps, secrets, persistentvolumes, persistentvolumeclaims, limitranges, resourcequotas, horizontalpodautoscalers, ingresses, networkpolicies, serviceaccounts, roles, clusterroles, rolebindings, clusterrolebindings, podsecuritypolicies, storageclasses, volumeattachments, events, endpoints, customresourcedefinitions | -| resource_name | Да | Название конкретного ресурса, который необходимо удалить | - | -| namespace | Да | Неймспейс, в котором находится ресурс | - | - -### Учётные данные - -* `token` — токен сервисного аккаунта в Kubernetes. - -### Определение требуемых Group и Version - -Каждому типу ресурса соответствует своя группа API (Group) и версия (Version). -Полный список API-ресурсов с их группами и версиями приведён [в документации Kubernetes](https://kubernetes.io/docs/reference/kubernetes-api/). - -Если неизвестно, какие требуются Group и Version, можно использовать актуальные значения. -Существует несколько способов их определить: - -#### С помощью утилиты `d8 k` - -Команда `d8 k explain` показывает `apiVersion` для ресурса. - -Пример: - -```bash -d8 k explain deployment -``` - -Вывод: - -```yaml -GROUP: apps -KIND: Deployment -VERSION: v1 - -DESCRIPTION: - Deployment enables declarative updates for Pods and ReplicaSets. - -FIELDS: -... -``` - -#### С помощью документации - -Как искать в документации: - -1. Найдите нужный ресурс (например, Deployment). -1. В заголовке будет указана API Group и версия. Пример для Deployment: - - ```yaml - apiVersion: apps/v1 - ``` - - Здесь: - * «API Group» — apps; - * «Version» — v1. - -## DeleteSonarqubeProject - -DeleteSonarqubeProject — удаляет проект из SonarQube. - -### Пример запроса - -```yaml -project: example-project -``` - -### Спецификация запроса - -| Название | Обязательность | Описание | Значение по умолчанию | -|------------------|------------------|-----------------------------------------------------------------|------------------------| -| project | Да | Идентификатор (Project Key) проекта, который необходимо удалить | - | - -### Учётные данные - -* `token` — токен Sonarqube с типом User Token, сгенерированный пользователем, от имени которого будет запускаться выполнение действия. - -## DeleteSonarqubeProjects - -DeleteSonarqubeProjects — удаляет один или несколько проектов из SonarQube. - -### Пример запроса - -```yaml -analyzedBefore: 2017-10-19T13:00:00+0200 -onProvisionedOnly: 'false' -projects: example_project,another_project -q: example -qualifiers: TRK -``` - -### Спецификация запроса - -| Название | Обязательность | Описание | Возможные значения | Примеры значений | -|--------------------|------------------|---------------------------------------------------------------------------------|-------------------------------|---------------------------------------| -| analyzedBefore | Нет | Удалить все проекты, в которых последний анализ старше определённой даты | - | 2017-10-19, 2017-10-19T13:00:00+0200 | -| onProvisionedOnly | Нет | Фильтровать проекты по значению `onProvisionedOnly` | true, false, yes, no | - | -| projects | Нет | Список ключей проектов, который необходимо удалить | - | my_project, another_project | -| q | Нет | Удалить все проекты, в названии или ключе которых содержится заданная подстрока | - | example | -| qualifiers | Нет | Фильтровать проекты по указанным квалификаторам | TRK, VW, APP | | - -### Учётные данные - -* `token` — токен Sonarqube с типом User Token, сгенерированный пользователем, от имени которого будет запускаться выполнение действия. - -## StartGitlabPipeline - -StartGitlabPipeline — запускает выполнение пайплайна в GitLab. - -### Пример запроса - -```yaml -project_id: 0 -ref: main -variables: - - key: example-key - value: example-value -``` - -### Спецификация запроса - -| Название | Обязательность | Описание | -|---------------------------|------------------|------------------------------------------------------------------------------| -| project_id | Да | Идентификатор проекта, в котором необходимо запустить пайплайн | -| ref | Да | Название ветки, тег или SHA-хеш коммита, на котором будет запущен пайплайн | -| variables | Нет | Список переменных, которые необходимо передать в запускаемый пайплайн | -| variables.key | Да | Название переменной | -| variables.value | Да | Значение переменной | - -### Учётные данные - -* `token` — токен пользователя, от имени которого будет запускаться выполнение действия. - -### Примечание - -Для выполнения действия необходимо наличие токена GitLab. -Токен передаётся через механизм учётных данных и используется для аутентификации при вызове GitLab API (HTTP-заголовок `Private-Token`). - -Действие осуществляет POST-запрос по URL: `/api/v4/projects/:id/pipeline`. - -## CreateVaultKubernetesAuthRole - -CreateVaultKubernetesAuthRole — создаёт или обновляет роль аутентификации Kubernetes в HashiCorp Vault. - -### Пример запроса - -```yaml -mountPath: kubernetes -role: example -bound_service_account_names: - - default -bound_service_account_namespaces: - - default -optional: - token_ttl: 1h - token_max_ttl: 12h - audience: vault - token_policies: - - default -``` - -### Спецификация запроса - -| Название | Обязательность | Описание | -|-------------------------------------|----------------|-----------------------------------------------------------------------------------| -| mountPath | Обязательно | Путь монтирования Kubernetes auth backend в Vault (например, kubernetes) | -| role | Обязательно | Название роли, которая создаётся в Vault | -| bound_service_account_names | Обязательно | Список имён service account'ов, которым разрешён доступ через данную роль | -| bound_service_account_namespaces | Обязательно | Список неймспейсов (namespaces), в которых разрешён доступ через данную роль | -| optional | Необязательно | Дополнительные параметры роли (приведены в следующей таблице) | - -Поддерживаемые значения в optional: - -| Поле | Тип | Описание | -|-------------------------|---------------|-----------------------------------------------------------------------| -| token_ttl | string | Время жизни (TTL) токена, выданного при логине | -| token_max_ttl | string | Максимальное TTL токена | -| token_policies | []string | Дополнительные политики, назначаемые при логине | -| audience | string | Значение JWT audience (aud), которое Vault ожидает от токена | -| token_period | string | Периодичность выдачи токена | -| token_explicit_max_ttl | string | Явный верхний предел TTL токена | -| token_num_uses | int | Ограничение на количество использований токена | -| token_type | string | Тип выдаваемого токена (например, service, batch) | -| alias_name_source | string | Источник alias name для identity | -| token_no_default_policy | bool | Исключение default policy из состава токена | -| token_bound_cidrs | []string | Ограничение CIDR-диапазонов, откуда можно использовать выданный токен | - -Полный список поддерживаемых параметров приведён в [официальной документации](https://developer.hashicorp.com/vault/docs/auth/kubernetes#parameters) HashiCorp Vault. - -### Учётные данные - -* `token` — Vault-токен, обладающий правами на создание/обновление ролей Kubernetes auth backend. - -## CreateNexusRepository - -`CreateNexusRepository` — создаёт новый репозиторий любого поддерживаемого типа (maven, docker, npm и др.) в Nexus Repository Manager 3 с помощью REST API. -Параметры формата, типа и другие ключевые настройки полностью настраиваются и соответствуют Nexus API. - -### Пример запроса (Maven hosted) - -```yaml -description: | - Maven hosted repo for internal Java build artifacts. -name: my-maven-repo -format: maven -type: hosted -online: true -storage: - blobStoreName: default - strictContentTypeValidation: true - writePolicy: ALLOW -cleanup: - policyNames: - - maven-cleanup -maven: - versionPolicy: RELEASE - layoutPolicy: PERMISSIVE -``` - -### Пример запроса (Docker group) - -```yaml -description: | - Docker group repo aggregating hosted+proxy. -name: my-docker-group -format: docker -type: group -online: true -storage: - blobStoreName: default - strictContentTypeValidation: true -group: - memberNames: - - docker-hosted - - docker-proxy -docker: - v1Enabled: false - forceBasicAuth: true - httpPort: 5001 -``` - -### Спецификация запроса - -| Поле | Обязательность | Описание | Пример | -|-------------|-----------------|---------------------------------------------------------------------------------------------------|----------------------------------------| -| `description` | Нет | Документация по назначению этого действия/репозитория. Не используется самим Nexus, только для UI | - | -| `name` | Да | Название создаваемого репозитория. Должно быть уникальным в рамках Nexus | my-maven-repo | -| `format` | Да | Формат (`maven`, `docker`, `npm`, `raw` и т. д.) | maven | -| `type` | Да | Тип: `hosted`, `proxy` или `group` | hosted | -| `online` | Да | Доступен ли репозиторий (`true`/`false`) | true | -| `storage` | Да | Объект storage: `blobStoreName`, `strictContentTypeValidation`, `writePolicy` | [Пример](#пример-запроса-maven-hosted) | -| `cleanup` | Нет | Привязанные политики очистки (`policyNames`) | policyNames: [maven-cleanup] | -| `maven` | Для maven | Только для maven: `versionPolicy`, `layoutPolicy` | [Пример](#пример-запроса-maven-hosted) | -| `proxy` | Для proxy | Прокси-репозиторий: `remoteUrl`, `contentMaxAge`, `metadataMaxAge` | - | -| `group` | Для group | Список включённых memberNames | [Пример](#пример-запроса-docker-group) | -| `docker` | Для docker | docker-specific: `httpPort`, `v1Enabled`, `forceBasicAuth` | [Пример](#пример-запроса-docker-group) | -| `component` | Очень редко | Только для некоторых нестандартных сценариев | - | -| `attributes`| Нет | Любые кастомные поля | - | - -### Требования - -- Используйте только те блоки (`maven`, `group`, `proxy`, `docker` и пр.), которые поддерживаются для вашего типа/формата. -- Для maven hosted обязательно `maven: {versionPolicy, layoutPolicy}`. -- Для group — обязательно `group.memberNames`. -- Для proxy — обязательно `proxy.remoteUrl`. -- Для docker — специфичные поля в `docker`. - -### Учётные данные - -* `token` — строка base64(`admin:password`), используется как Basic Auth при запросах к Nexus. - -## DeleteNexusRepository - -`DeleteNexusRepository` — удаляет существующий репозиторий из Nexus Repository Manager 3. - -### Пример запроса - -```yaml -name: my-repo-to-delete -``` - -### Спецификация запроса - -| Поле | Обязательность | Описание | -|------|-----------------|------------------------------------------| -| `name` | Да | Название репозитория, который требуется удалить | - -### Алгоритм - -- Выполняется `DELETE` по адресу `/service/rest/v1/repositories/{name}`, где `{name}` — это значение поля `name`. -- Если репозиторий найден и удалён — возвращается 204. -- Если не найден — возвращается ошибка 404. - -### Учётные данные - -* `token` — строка base64(`admin:password`), используется как Basic Auth при запросах к Nexus. - -## CreateNexusPrivilege - -CreateNexusPrivilege — создаёт новую привилегию в Nexus Repository Manager 3. Привилегии определяют права доступа к репозиториям и другим ресурсам Nexus. - -### Пример запроса (repository-view) - -```yaml -name: example-privilege -description: Example privilege description -type: repository-view -actions: - - READ - - BROWSE -format: maven2 -repository: maven-releases -``` - -### Пример запроса (repository-content-selector) - -```yaml -name: content-selector-privilege -description: Privilege with content selector -type: repository-content-selector -actions: - - READ -format: maven2 -repository: maven-releases -contentSelector: my-content-selector -``` - -### Пример запроса (wildcard) - -```yaml -name: wildcard-privilege -description: Wildcard privilege -type: wildcard -pattern: nx-* -actions: - - READ -``` - -### Спецификация запроса - -| Поле | Обязательность | Описание | -|------------------|-----------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| name | Да | Название создаваемой привилегии. Должно быть уникальным в рамках Nexus | -| description | Нет | Описание привилегии | -| type | Да | Тип привилегии: `repository-view`, `repository-content-selector`, `repository-admin`, `application`, `wildcard` | -| actions | Нет | Список действий, разрешённых привилегией (например, `READ`, `BROWSE`, `CREATE`, `UPDATE`, `DELETE`) | -| format | Нет | Формат репозитория (например, `maven2`, `docker`, `npm`). Используется для типов `repository-view`, `repository-content-selector`, `repository-admin` | -| repository | Нет | Название репозитория. Используется для типов `repository-view`, `repository-content-selector`, `repository-admin` | -| contentSelector | Нет | Название селектора контента. Обязателен для типа `repository-content-selector`. Если не указан или невалиден, тип автоматически преобразуется в `repository-view` | -| pattern | Нет | Шаблон для типа `wildcard` | -| domain | Нет | Домен для типа `application` | -| attributes | Нет | Дополнительные атрибуты в формате ключ-значение | - -### Примечание - -Для типа `repository-content-selector` селектор контента должен существовать в Nexus до создания привилегии. Если селектор контента не указан или невалиден, действие автоматически преобразует тип привилегии в `repository-view`. - -### Учётные данные - -* `token` — строка base64(`admin:password`), используется как Basic Auth при запросах к Nexus. - -## AssignNexusPrivilege - -AssignNexusPrivilege — назначает привилегии существующей роли в Nexus Repository Manager 3. Действие получает текущую конфигурацию роли и объединяет существующие привилегии с новыми. - -### Пример запроса - -```yaml -roleId: example-role -privileges: - - example-privilege - - another-privilege -``` - -### Спецификация запроса - -| Поле | Обязательность | Описание | -|------------|-----------------|------------------------------------------------------------------------------| -| roleId | Да | Идентификатор роли, которой назначаются привилегии | -| privileges | Да | Список названий привилегий, которые необходимо назначить роли | - -### Алгоритм работы - -1. Получает текущую конфигурацию роли из Nexus. -1. Объединяет существующие привилегии роли с новыми привилегиями из запроса. -1. Обновляет роль с объединённым списком привилегий. - -### Учётные данные - -* `token` — строка base64(`admin:password`), используется как Basic Auth при запросах к Nexus. - -### Примечание - -Роль должна существовать в Nexus до назначения привилегий. Если роль не найдена, действие завершится с ошибкой. Все указанные привилегии также должны существовать в Nexus. - -## DeleteNexusPrivilege - -DeleteNexusPrivilege — удаляет привилегию из Nexus Repository Manager 3. - -### Пример запроса - -```yaml -name: example-privilege -``` - -### Спецификация запроса - -| Поле | Обязательность | Описание | -|------|-----------------|---------------------------------------------| -| name | Да | Название привилегии, которую требуется удалить | - -### Учётные данные - -* `token` — строка base64(`admin:password`), используется как Basic Auth при запросах к Nexus. - -## CreateNexusRole - -CreateNexusRole — создаёт новую роль в Nexus Repository Manager 3. Роли объединяют привилегии и могут включать другие роли. - -### Пример запроса - -```yaml -id: example-role -name: Example Role -description: Example role description -privileges: - - nx-repository-view-*-*-read - - nx-repository-view-maven2-*-browse -roles: [] -``` - -### Спецификация запроса - -| Поле | Обязательность | Описание | -|-------------|-----------------|------------------------------------------------------------------------------| -| id | Да | Уникальный идентификатор роли | -| name | Да | Название роли | -| description | Нет | Описание роли | -| privileges | Нет | Список названий привилегий, которые назначаются роли | -| roles | Нет | Список идентификаторов других ролей, которые включаются в данную роль | - -### Учётные данные - -* `token` — строка base64(`admin:password`), используется как Basic Auth при запросах к Nexus. - -## AssignNexusRole - -AssignNexusRole — назначает роли существующему пользователю в Nexus Repository Manager 3. Действие получает текущую конфигурацию пользователя и объединяет существующие роли с новыми. - -### Пример запроса - -```yaml -userId: example-user -roles: - - example-role - - another-role -``` - -### Спецификация запроса - -| Поле | Обязательность | Описание | -|--------|-----------------|---------------------------------------------------------------| -| userId | Да | Идентификатор пользователя, которому назначаются роли | -| roles | Да | Список идентификаторов ролей, которые необходимо назначить пользователю | - -### Алгоритм работы - -1. Получает текущую конфигурацию пользователя из Nexus. -1. Объединяет существующие роли пользователя с новыми ролями из запроса. -1. Обновляет пользователя с объединённым списком ролей. - -### Учётные данные - -* `token` — строка base64(`admin:password`), используется как Basic Auth при запросах к Nexus. - -### Примечание - -Пользователь должен существовать в Nexus до назначения ролей. Если пользователь не найден, действие завершится с ошибкой. Все указанные роли также должны существовать в Nexus. - -## DeleteNexusRole - -DeleteNexusRole — удаляет роль из Nexus Repository Manager 3. - -### Пример запроса - -```yaml -id: example-role -``` - -### Спецификация запроса - -| Поле | Обязательность | Описание | -|------|-----------------|-----------------------------------------| -| id | Да | Идентификатор роли, которую требуется удалить | - -### Учётные данные - -* `token` — строка base64(`admin:password`), используется как Basic Auth при запросах к Nexus. - -## CreateNexusUser - -CreateNexusUser — создаёт нового пользователя в Nexus Repository Manager 3. - -### Пример запроса - -```yaml -userId: example-user -firstName: First -lastName: Last -emailAddress: user@example.com -password: password -status: active -roles: - - nx-admin -``` - -### Спецификация запроса - -| Поле | Обязательность | Описание | -|-------------|-----------------|------------------------------------------------------------------------------| -| userId | Да | Уникальный идентификатор пользователя | -| firstName | Да | Имя пользователя | -| lastName | Да | Фамилия пользователя | -| emailAddress| Да | Email-адрес пользователя | -| password | Да | Пароль пользователя | -| status | Да | Статус пользователя: `active` или `disabled` | -| roles | Нет | Список идентификаторов ролей, которые назначаются пользователю при создании | - -### Учётные данные - -* `token` — строка base64(`admin:password`), используется как Basic Auth при запросах к Nexus. - -## DeleteNexusUser - -DeleteNexusUser — удаляет пользователя из Nexus Repository Manager 3. - -### Пример запроса - -```yaml -userId: example-user -``` - -### Спецификация запроса - -| Поле | Обязательность | Описание | -|--------|-----------------|---------------------------------------------| -| userId | Да | Идентификатор пользователя, которого требуется удалить | - -### Учётные данные - -* `token` — строка base64(`admin:password`), используется как Basic Auth при запросах к Nexus. - -## Wait - -Wait ожидает заданное число секунд; дополнительно может применяться случайная добавка к длительности (джиттер). Предназначено для использования в процессах в качестве элемента задержки, в том числе для ожидания применения результатов предыдущего действия. - -### Пример запроса - -```yaml -duration_seconds: 10 -max_jitter_seconds: 0 -description: "Waiting for release" -``` - -### Спецификация запроса - -| Название | Обязательность | Описание | Значение по умолчанию | -|---------------------|----------------|----------------------------------------------------------------------------------|-----------------------| -| duration_seconds | Да | Базовая длительность ожидания в секундах (0–86400, т. е. до 24 часов) | - | -| max_jitter_seconds | Нет | Максимальная случайная добавка к ожиданию в секундах (0–N). 0 — джиттер отключён | 0 | -| description | Нет | Описание для отображения в логах и ответе действия | - | - -## Fail - -Fail эмулирует ошибку исполнения действия. Предназначен для использования в процессах в качестве отладочного элемента. - -### Пример запроса - -```yaml -fail: true -``` - -### Спецификация запроса - -| Название | Обязательность | Описание | Значение по умолчанию | -|----------|----------------|-----------------------------------------------------------------------------------------|-----------------------| -| fail | Нет | Если `true`, действие завершается с ошибкой; если `false`, действие завершается успешно | `true` | diff --git a/content/documentation/admin/actions/vault/_index.ru.md b/content/documentation/admin/actions/vault/_index.ru.md new file mode 100644 index 00000000..0fc52147 --- /dev/null +++ b/content/documentation/admin/actions/vault/_index.ru.md @@ -0,0 +1,6 @@ +--- +title: HashiCorp Vault +weight: 50 +params: + no_list: true +--- diff --git a/content/documentation/admin/actions/vault/createvaultkubernetesauthrole.ru.md b/content/documentation/admin/actions/vault/createvaultkubernetesauthrole.ru.md new file mode 100644 index 00000000..6af749e7 --- /dev/null +++ b/content/documentation/admin/actions/vault/createvaultkubernetesauthrole.ru.md @@ -0,0 +1,55 @@ +--- +title: CreateVaultKubernetesAuthRole +weight: 30 +--- + +{{< alert level="info" >}} +Для выполнения действия необходимо наличие Vault-токена, обладающего правами на создание/обновление ролей Kubernetes auth backend. +{{< /alert >}} + +CreateVaultKubernetesAuthRole — создаёт или обновляет роль аутентификации Kubernetes в HashiCorp Vault. + +### Пример запроса + +```yaml +mountPath: kubernetes +role: example +bound_service_account_names: + - default +bound_service_account_namespaces: + - default +optional: + token_ttl: 1h + token_max_ttl: 12h + audience: vault + token_policies: + - default +``` + +### Спецификация запроса + +| Название | Обязательность | Описание | +| ------------------------------------- | ---------------- | ----------------------------------------------------------------------------------- | +| mountPath | Да | Путь монтирования Kubernetes auth backend в Vault (например, kubernetes) | +| role | Да | Название роли, которая создаётся в Vault | +| bound_service_account_names | Да | Список имён service account'ов, которым разрешён доступ через данную роль | +| bound_service_account_namespaces | Да | Список неймспейсов (namespaces), в которых разрешён доступ через данную роль | +| optional | Нет | Дополнительные параметры роли (приведены в следующей таблице) | + +Поддерживаемые значения в optional: + +| Поле | Тип | Описание | +| ------------------------- | --------------- | ----------------------------------------------------------------------- | +| token_ttl | string | Время жизни (TTL) токена, выданного при логине | +| token_max_ttl | string | Максимальное TTL токена | +| token_policies | []string | Дополнительные политики, назначаемые при логине | +| audience | string | Значение JWT audience (aud), которое Vault ожидает от токена | +| token_period | string | Периодичность выдачи токена | +| token_explicit_max_ttl | string | Явный верхний предел TTL токена | +| token_num_uses | int | Ограничение на количество использований токена | +| token_type | string | Тип выдаваемого токена (например, service, batch) | +| alias_name_source | string | Источник alias name для identity | +| token_no_default_policy | bool | Исключение default policy из состава токена | +| token_bound_cidrs | []string | Ограничение CIDR-диапазонов, откуда можно использовать выданный токен | + +Полный список поддерживаемых параметров приведён в официальной документации [HashiCorp Vault](https://developer.hashicorp.com/vault/docs/auth/kubernetes#parameters). diff --git a/content/documentation/admin/actions/vault/createvaultsecret.ru.md b/content/documentation/admin/actions/vault/createvaultsecret.ru.md new file mode 100644 index 00000000..66437c62 --- /dev/null +++ b/content/documentation/admin/actions/vault/createvaultsecret.ru.md @@ -0,0 +1,41 @@ +--- +title: CreateVaultSecret +weight: 10 +--- + + +{{< alert level="info" >}} +Для выполнения действий необходимо наличие Vault-токена, который имеет необходимые права для создания секретов. +{{< /alert >}} + +CreateVaultSecret — создаёт секрет с одним или несколькими значениями в HashiCorp Vault. + +### Пример запроса + +```yaml +path: example/data/path +secrets: + - key: key1 + value: value1 + - key: key2 + value: value2 +``` + +### Спецификация запроса + +| Название | Обязательность | Описание | Возможные значения | Значение по умолчанию | +| --------------------------- | ---------------- | ------------------------------------------------------------------- | ------------------------------------- | ----------------------- | +| path | Да | Путь, по которому будет сохранён секрет в Vault | | - | +| allow_update | Нет | Определяет поведение действия при создании или обновлении секрета | true, false, merge, merge_or_create | false | +| secrets | Да | Набор секретов, которые необходимо создать в Vault | | - | +| secrets.key | Да | Название (идентификатор) секрета | | - | +| secrets.value | Да | Значение секрета | | - | + +### Примечание + +`allow_update` — определяет поведение действия при создании или обновлении секрета: + +- `false` (по умолчанию) — действие завершается с ошибкой, если секрет уже существует; +- `true` — создаётся новая версия секрета со значениями, переданными в действии; +- `merge` — обновляются или создаются только те ключи секрета, которые указаны в действии. Существующие ключи, не упомянутые в действии, сохраняются без изменений. Если секрета по пути ещё нет, действие завершается с ошибкой; +- `merge_or_create` — как `merge`, если секрет уже существует; если секрета по пути нет, он создаётся (полная запись значений из действия). diff --git a/content/documentation/admin/actions/vault/deletevaultsecret.ru.md b/content/documentation/admin/actions/vault/deletevaultsecret.ru.md new file mode 100644 index 00000000..7c8cc9cc --- /dev/null +++ b/content/documentation/admin/actions/vault/deletevaultsecret.ru.md @@ -0,0 +1,23 @@ +--- +title: DeleteVaultSecret +weight: 20 +--- + + +{{< alert level="info" >}} +Для выполнения действий необходимо наличие Vault-токена, который имеет необходимые права для создания секретов. +{{< /alert >}} + +DeleteVaultSecret — удаляет секрет из HashiCorp Vault. + +### Пример запроса + +```yaml +path: example/data/path +``` + +### Спецификация запроса + +| Название | Обязательность | Описание | +| --------------------------- | ---------------- | ---------------------------------------------------------------------------------------------------- | +| path | Да | Путь, по которому находится секрет в Vault, который необходимо удалить | diff --git a/content/documentation/admin/actions/wait/_index.ru.md b/content/documentation/admin/actions/wait/_index.ru.md new file mode 100644 index 00000000..9f59beda --- /dev/null +++ b/content/documentation/admin/actions/wait/_index.ru.md @@ -0,0 +1,6 @@ +--- +title: Wait +weight: 120 +params: + no_list: true +--- diff --git a/content/documentation/admin/actions/wait/wait.ru.md b/content/documentation/admin/actions/wait/wait.ru.md new file mode 100644 index 00000000..5d470c69 --- /dev/null +++ b/content/documentation/admin/actions/wait/wait.ru.md @@ -0,0 +1,22 @@ +--- +title: Wait +weight: 10 +--- + +Wait ожидает заданное число секунд; дополнительно может применяться случайная добавка к длительности (джиттер). Предназначено для использования в процессах в качестве элемента задержки, в том числе для ожидания применения результатов предыдущего действия. + +### Пример запроса + +```yaml +duration_seconds: 10 +max_jitter_seconds: 0 +description: "Waiting for release" +``` + +### Спецификация запроса + +| Название | Обязательность | Описание | Значение по умолчанию | +| --------------------- | ---------------- | ---------------------------------------------------------------------------------- | ---------------------- | +| duration_seconds | Да | Базовая длительность ожидания в секундах (0–86400, т. е. до 24 часов) | - | +| max_jitter_seconds | Нет | Максимальная случайная добавка к ожиданию в секундах (0–N). 0 — джиттер отключён | `0` | +| description | Нет | Описание для отображения в логах и ответе действия | - | diff --git a/content/documentation/admin/datasources/types.ru.md b/content/documentation/admin/datasources/types.ru.md index db1f316d..31f6de60 100644 --- a/content/documentation/admin/datasources/types.ru.md +++ b/content/documentation/admin/datasources/types.ru.md @@ -490,7 +490,7 @@ resource: modulereleases Каждому типу ресурса соответствует своя версия и группа. Полный список API-ресурсов с их группами и версиями — в [документации Kubernetes](https://kubernetes.io/docs/reference/kubernetes-api/). -Если неизвестно, какие требуются Group и Version, можно попробовать подставить актуальные значения. Есть несколько вариантов, как их посмотреть, например с помощью утилиты `d8 k`: команда `d8 k explain` показывает `version` и `apiGroup` для ресурса. +Если неизвестно, какие требуются группы и версии, можно попробовать подставить актуальные значения. Есть несколько вариантов, как их посмотреть, например с помощью утилиты `d8 k`: команда `d8 k explain` показывает `version` и `apiGroup` для ресурса. Пример: diff --git a/content/documentation/admin/examples/service-autoupdates.ru.md b/content/documentation/admin/examples/service-autoupdates.ru.md index 3e7c86af..c8bac001 100644 --- a/content/documentation/admin/examples/service-autoupdates.ru.md +++ b/content/documentation/admin/examples/service-autoupdates.ru.md @@ -449,7 +449,7 @@ values: {{ .template_values | nindent 4 }} - `source_project_id` и `target_project_id` — ID репозиториев шаблона и сервиса. - `values` — переменные шаблонизации применяются повторно для корректного рендеринга изменений. -Подробнее о настройках встроенного бэкенда — в разделе [«CreateGitlabMergeRequest»](../actions/types/#creategitlabmergerequest). +Подробнее о настройках встроенного бэкенда — в разделе [«CreateGitlabMergeRequest»](../actions/gitlab/creategitlabmergerequest/). ### Создание действия @@ -528,7 +528,7 @@ namespace_id: '{{ .group }}' path: '{{ .path }}' ``` -Это тело запроса передаёт в GitLab API название проекта, ID группы и путь репозитория. Подробнее о настройках — в разделе [«CreateGitlabProject»](../actions/types/#creategitlabproject). +Это тело запроса передаёт в GitLab API название проекта, ID группы и путь репозитория. Подробнее о настройках — в разделе [«CreateGitlabProject»](../actions/gitlab/creategitlabproject/). Действие «Создать репозиторий из шаблона»: @@ -558,7 +558,7 @@ values: - `values` — блок должен содержать пары ключ-значение, которые будут использованы для замены переменных в файлах шаблона. Формат и состав этих переменных полностью зависит от того, как настроен ваш шаблон. -Подробнее о настройках — в разделе [«CreateRepositoryFromTemplate»](../actions/types/#createrepositoryfromtemplate). +Подробнее о настройках — в разделе [«CreateRepositoryFromTemplate»](../actions/gitlab/createrepositoryfromtemplate/). Действие «Обновление сервиса из шаблона»: @@ -595,7 +595,7 @@ values: {{ .template_values | nindent 4 }} - `values` — переменные шаблонизации применяются повторно для корректного рендеринга изменений. -Подробнее о настройках — в разделе [«CreateGitlabMergeRequest»](../actions/types/#creategitlabmergerequest). +Подробнее о настройках — в разделе [«CreateGitlabMergeRequest»](../actions/gitlab/creategitlabmergerequest/). Обновление: diff --git a/content/documentation/release-notes/v1.0.0.ru.md b/content/documentation/release-notes/v1.0.0.ru.md index b9182a50..4ac42875 100644 --- a/content/documentation/release-notes/v1.0.0.ru.md +++ b/content/documentation/release-notes/v1.0.0.ru.md @@ -91,7 +91,7 @@ description: Заметки о выпуске v1.0.0 — виджеты, ист #### Nexus -Добавлены действия для работы с [репозиториями Nexus](../../admin/actions/types/#createnexusrepository): +Добавлены действия для работы с [репозиториями Nexus](../../admin/actions/nexus/createnexusrepository/): - `CreateNexusRepository` — создание репозиториев любого поддерживаемого типа (maven, docker, npm и др.) в Nexus Repository Manager 3. - `DeleteNexusRepository` — удаление репозиториев из Nexus Repository Manager 3. diff --git a/content/documentation/release-notes/v1.1.0.ru.md b/content/documentation/release-notes/v1.1.0.ru.md index 860d1548..85df2f46 100644 --- a/content/documentation/release-notes/v1.1.0.ru.md +++ b/content/documentation/release-notes/v1.1.0.ru.md @@ -183,12 +183,12 @@ description: Заметки о выпуске v1.1.0 — несовместим Добавлены действия для работы с CodeScoring: -- [`CreateCodeScoringProject`](../../admin/actions/types/#createcodescoringproject) — регистрирует новый проект в CodeScoring с указанием репозитория, VCS системы и опцией автоматического запуска SCA-анализа. -- [`DeleteCodeScoringProject`](../../admin/actions/types/#deletecodescoringproject) — удаляет проект в CodeScoring по его ID. +- [`CreateCodeScoringProject`](../../admin/actions/codescoring/createcodescoringproject/) — регистрирует новый проект в CodeScoring с указанием репозитория, VCS системы и опцией автоматического запуска SCA-анализа. +- [`DeleteCodeScoringProject`](../../admin/actions/codescoring/deletecodescoringproject/) — удаляет проект в CodeScoring по его ID. #### GitLab -[`CreateGitlabRelease`](../../admin/actions/types/#creategitlabrelease) — позволяет создавать релизы на основе существующих тегов GitLab. +[`CreateGitlabRelease`](../../admin/actions/gitlab/creategitlabrelease/) — позволяет создавать релизы на основе существующих тегов GitLab. #### Vault diff --git a/content/documentation/release-notes/v1.2.0.ru.md b/content/documentation/release-notes/v1.2.0.ru.md index 666b70b0..f56d4b2d 100644 --- a/content/documentation/release-notes/v1.2.0.ru.md +++ b/content/documentation/release-notes/v1.2.0.ru.md @@ -26,14 +26,14 @@ description: Заметки о выпуске v1.2.0 — иконки, AI-асс - Добавлена возможность настройки [временного ответа для действий](../../admin/actions/overview/#временный-ответ). - Добавлена панель управления действиями, которая позволяет просмотреть все действия, запущенные пользователем, подтвердить назначенные действия или удалить временный ответ. - Добавлены действия для управления Nexus Repository Manager 3: - - [`CreateNexusPrivilege`](../../admin/actions/types/#createnexusprivilege) — создание привилегий; - - [`AssignNexusPrivilege`](../../admin/actions/types/#assignnexusprivilege) — назначение привилегий ролям; - - [`DeleteNexusPrivilege`](../../admin/actions/types/#deletenexusprivilege) — удаление привилегий; - - [`CreateNexusRole`](../../admin/actions/types/#createnexusrole) — создание ролей; - - [`AssignNexusRole`](../../admin/actions/types/#assignnexusrole) — назначение ролей пользователям; - - [`DeleteNexusRole`](../../admin/actions/types/#deletenexusrole) — удаление ролей; - - [`CreateNexusUser`](../../admin/actions/types/#createnexususer) — создание пользователей; - - [`DeleteNexusUser`](../../admin/actions/types/#deletenexususer) — удаление пользователей. + - [`CreateNexusPrivilege`](../../admin/actions/nexus/createnexusprivilege/) — создание привилегий; + - [`AssignNexusPrivilege`](../../admin/actions/nexus/assignnexusprivilege/) — назначение привилегий ролям; + - [`DeleteNexusPrivilege`](../../admin/actions/nexus/deletenexusprivilege/) — удаление привилегий; + - [`CreateNexusRole`](../../admin/actions/nexus/createnexusrole/) — создание ролей; + - [`AssignNexusRole`](../../admin/actions/nexus/assignnexusrole/) — назначение ролей пользователям; + - [`DeleteNexusRole`](../../admin/actions/nexus/deletenexusrole/) — удаление ролей; + - [`CreateNexusUser`](../../admin/actions/nexus/createnexususer/) — создание пользователей; + - [`DeleteNexusUser`](../../admin/actions/nexus/deletenexususer/) — удаление пользователей. ### Владение объектами diff --git a/content/documentation/release-notes/v1.4.0.ru.md b/content/documentation/release-notes/v1.4.0.ru.md index 57e8ff18..2878dd4c 100644 --- a/content/documentation/release-notes/v1.4.0.ru.md +++ b/content/documentation/release-notes/v1.4.0.ru.md @@ -80,10 +80,10 @@ CREATE EXTENSION IF NOT EXISTS pg_trgm; Добавлены новые действия: -- «Wait» — для [паузы на заданное время](../../admin/actions/types/#wait). -- «Fail» — для [принудительного завершения с ошибкой](../../admin/actions/types/#fail). +- «Wait» — для [паузы на заданное время](../../admin/actions/wait/wait/). +- «Fail» — для [принудительного завершения с ошибкой](../../admin/actions/debug/fail/). -Изменения в существующих действиях: в действии [`CreateVaultSecret`](../../admin/actions/types/#createvaultsecret) для параметра `allow_update` добавлено значение `merge_or_create`. +Изменения в существующих действиях: в действии [`CreateVaultSecret`](../../admin/actions/vault/createvaultsecret/) для параметра `allow_update` добавлено значение `merge_or_create`. ### Источники данных @@ -92,7 +92,7 @@ CREATE EXTENSION IF NOT EXISTS pg_trgm; ### Шаблонизация - Добавлена встроенная функция `jwtSign` для формирования подписанного [JWT в Go template](../../user/templating/#jwtsign). -- В правилах файла `.templateignore` и дополнительных файлов исключения для шаблонов репозитория добавлена поддержка шаблонов Go template с теми же переменными, что и для содержимого файлов. Более подробно об этом — в документе [Типы действий](../../admin/actions/types/#templateignore-templates). +- В правилах файла `.templateignore` и дополнительных файлов исключения для шаблонов репозитория добавлена поддержка шаблонов Go template с теми же переменными, что и для содержимого файлов. Более подробно об этом — в документе [CreateRepositoryFromTemplate](../../admin/actions/gitlab/createrepositoryfromtemplate/#templateignore-templates). ### Ролевая модель diff --git a/content/documentation/release-notes/v1.6.0.ru.md b/content/documentation/release-notes/v1.6.0.ru.md index 72557886..ca57c233 100644 --- a/content/documentation/release-notes/v1.6.0.ru.md +++ b/content/documentation/release-notes/v1.6.0.ru.md @@ -72,7 +72,7 @@ description: Заметки о выпуске v1.6.0 — управление MC ### Действия - Добавлен механизм автоматического [создания сущностей](../../admin/actions/overview/#создание-сущностей) после успешного выполнения действия. -- Добавлено действие [GetKubernetesResource](../../admin/actions/types/#getkubernetesresource) для получения спецификации ресурса из Kubernetes кластера. +- Добавлено действие [GetKubernetesResource](../../admin/actions/kubernetes/getkubernetesresource/) для получения спецификации ресурса из Kubernetes кластера. ### MCP