CreateDefectdojoEngagement
CreateDefectdojoEngagement — создаёт новый engagement в системе DefectDojo. Действие использует DefectDojo API v2.
Пример запроса
name: example engagement
product: '1'
target_start: '2024-06-01'
target_end: '2024-06-30'
lead: '1'Спецификация запроса
Список полей соответствует официальному API DefectDojo, /api/v2/engagements, подробнее — в документации Defectdojo.
Учётные данные
token— API v2 Key пользователя, от имени которого будет запускаться выполнение действия.
CreateDefectdojoProduct
CreateDefectdojoProduct — создаёт новый продукт в системе DefectDojo. Действие использует DefectDojo API v2.
Пример запроса
name: example
description: example description
prod_type: 1Спецификация запроса
Список полей соответствует официальному API DefectDojo, /api/v2/products, подробнее — в документации Defectdojo.
Учётные данные
token— API v2 Key пользователя, от имени которого будет запускаться выполнение действия.
CreateGitlabBranches
CreateGitlabBranches — создаёт новые ветки в целевом репозитории.
Пример запроса
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.
Пример запроса
group_id: '0'
variables:
- key: EXAMPLE_VARIABLE
value: valueСпецификация запроса
| Название | Обязательность | Описание |
|---|---|---|
| group_id | Да | Идентификатор группы, в котором необходимо создать переменные |
| variables | Да | Список создаваемых переменных |
Список полей для переменных соответствует официальному GitLab Group-level Variables API, /groups/:id/variables, подробнее — в документации Gitlab.
Учётные данные
token— токен пользователя, от имени которого будет запускаться выполнение действия.
Примечание
Для выполнения действия необходимо наличие токена GitLab. Токен передаётся через механизм учётных данных и используется для аутентификации при вызове GitLab API (HTTP-заголовок Private-Token).
Действие осуществляет POST-запрос по URL: /api/v4/groups/:id/variables.
CreateGitlabMergeRequest
CreateGitlabMergeRequest — создаёт новый Merge Request (MR) в целевом репозитории. В Merge Request добавляются файлы, хранящиеся в репозитории-источнике. Файлы могут содержать переменные, значение которых будет подставлено в момент создания MR.
Пример запроса
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 | - |
| source_project_tag | Нет | Тег в проекте-источнике, из которого будет сформирован Merge Request. Если не указан, используется ветка в проекте-источнике | - |
| source_project_branch | Нет | Ветка в проекте-источнике, из которой будет сформирован Merge Request | main |
| additionalIgnoreFiles | Нет | Список файлов, содержащих пути для исключения из MR. Заполняется по аналогии с .templateignore | - |
| values | Нет | Переменные, используемые при шаблонизации, в формате ключ: значение | - |
Учётные данные
password— пароль (токен) пользователя, от имени которого будет запускаться выполнение действия.username— имя пользователя, от которого будет запускаться выполнение действия.
Алгоритм работы
Платформа:
- Клонирует репозиторий-шаблон для генерации MR по его идентификатору (
source_project_id). Подробнее о шаблонизации. - Считывает файл
values.yaml, хранящийся в корне репозитория, и определяет переменные по умолчанию для шаблонизации. - Считывает переменные, передаваемые при запуске действия, и объединяет (merge) их с переменными из
values.yaml. Приоритет отдаётся переменным, передаваемым при запуске действия. - Считывает файл
.templateignoreи определяет директории и файлы, исключаемые из шаблонизации. - Рендерит файлы из шаблонов, учитывая
values.yamlи переданных в действие переменных. - Изменяет удалённый (remote) репозиторий на целевой, согласно его ID (
target_project_id), и выполняет git push в целевую ветку (source_project_branch), либо в основную веткуmain. - Создаёт 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, который должен быть предоставлен в учётных данных.
Пример запроса
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.
Пример запроса
project_id: '0'
variables:
- key: EXAMPLE_VARIABLE
value: valueСпецификация запроса
| Название | Обязательность | Описание |
|---|---|---|
| project_id | Да | Идентификатор проекта, в котором необходимо создать переменные |
| variables | Да | Список создаваемых переменных |
Список полей для переменных соответствует официальному GitLab Project-level CI/CD variables API, /projects/:id/variables, подробнее — в документации Gitlab.
Учётные данные
token— токен пользователя, от имени которого будет запускаться выполнение действия.
Примечание
Для выполнения действия необходимо наличие токена GitLab. Токен передаётся через механизм учётных данных и используется для аутентификации при вызове GitLab API (HTTP-заголовок Private-Token).
Действие осуществляет POST-запрос по URL: /api/v4/projects/:id/variables.
CreateGitlabProjectWebhook
CreateGitlabProjectWebhook — создаёт вебхук в проекте GitLab.
Пример запроса
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.
Пример запроса
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 на основе уже существующего тега.
Пример запроса
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.
Пример запроса
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 | PLAINTEXT, SASL_PLAINTEXT, SASL_SSL | - |
| saslMechanism | Нет | Механизм аутентификации, который будет использовать SASL. Обязателен при использовании протокола SASL_PLAINTEXT или SASL_SSL. Подробнее — в документации Kafka | 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.
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.
Пример запроса
securityProtocol: SASL_PLAINTEXT
saslMechanism: PLAIN
partitions: 1
replication_factor: 1
configs: {}
topics:
- example_1
- example_2Спецификация запроса
| Название | Обязательность | Описание | Возможные значения |
|---|---|---|---|
| securityProtocol | Да | Протокол для подключения к Kafka. Подробнее — в документации Kafka | PLAINTEXT, SASL_PLAINTEXT, SASL_SSL |
| saslMechanism | Нет | Механизм аутентификации, который будет использовать SASL. Обязателен при использовании протокола SASL_PLAINTEXT или SASL_SSL. Подробнее — в документации Kafka | PLAIN, SCRAM-SHA-256, SCRAM-SHA-512 |
| partitions | Да | Количество разделов (партиций), на которые будет разделён топик | - |
| replication_factor | Да | Количество копий (реплик) каждой партиции топика, которые необходимо разместить на разных брокерах | - |
| configs | Да | Конфигурация в формате ключ-значение для создаваемых топиков | Значения приведены в документации Kafka |
| topics | Да | Список названий топиков, которые необходимо создать | - |
Учётные данные
user— имя пользователя, от которого будет запускаться выполнение действия.password— пароль пользователя, от имени которого будет запускаться выполнение действия.
CreateKafkaUsers
CreateKafkaUsers — создаёт новых пользователей SASL/SCRAM в Kafka.
Пример запроса
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 | PLAINTEXT, SASL_PLAINTEXT, SASL_SSL |
| saslMechanism | Нет | Механизм аутентификации, который будет использовать SASL. Обязателен при использовании протокола SASL_PLAINTEXT или SASL_SSL. Подробнее — в документации Kafka | 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-анализа после клонирования репозитория.
Пример запроса
name: example-project
repository: https://gitlab.example.com/group/project.git
vcs_id: 2
run_sca_after_clone: trueСпецификация запроса
| Название | Обязательность | Описание |
|---|---|---|
| name | Да | Название проекта в CodeScoring |
| repository | Да | URL репозитория (например, https://gitlab.example.com/group/project.git) |
| vcs_id | Да | ID VCS системы в CodeScoring (должен быть больше 0) |
| run_sca_after_clone | Нет | Автоматический запуск SCA-анализа после клонирования репозитория |
Ответ
В ответе возвращается объект созданного проекта со следующей информацией: идентификатор проекта (pk), название, тип проекта, описание, информация о репозитории, статус проекта, права доступа, лицензия, количество зависимостей и уязвимостей, языки проекта, статус расписания сканирования и даты первого и последнего SCA-сканирования.
DeleteCodeScoringProject
DeleteCodeScoringProject — удаляет проект в системе CodeScoring по его ID.
Пример запроса
id: 1Спецификация запроса
| Название | Обязательность | Описание |
|---|---|---|
| id | Да | ID проекта в CodeScoring |
CreateKeycloakClient
CreateKeycloakClient — создаёт нового клиента в Keycloak.
Пример запроса
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 | - |
Учётные данные
username— имя пользователя, от которого будет запускаться выполнение действия.password— пароль пользователя, от имени которого будет запускаться выполнение действия.
CreateKubernetesResource
CreateKubernetesResource — создаёт новый ресурс или ресурсы в кластере Kubernetes или обновляет существующие.
Пример запроса
manifests:
- apiVersion: v1
kind: Namespace
metadata:
name: example1
- apiVersion: v1
kind: Namespace
metadata:
name: example2Спецификация запроса
| Название | Обязательность | Описание |
|---|---|---|
| manifests | Да | Манифесты Kubernetes, которые будут применены |
Учётные данные
token— токен сервисного аккаунта в Kubernetes.
CreateRepositoryFromTemplate
CreateRepositoryFromTemplate — создаёт новый репозиторий из шаблона в Gitlab. Механизм рендеринга основан на Go template и поддерживает все встроенные методы, а также расширения, добавленные в платформу.
Пример запроса
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 | - |
| sourceTag | Нет | Тег шаблонного репозитория, который будет использоваться при шаблонизации. Если не указан, используется ветка шаблонного репозитория | - |
| sourceBranch | Нет | Ветка шаблонного репозитория, которая будет использоваться при шаблонизации | main |
| targetBranch | Нет | Ветка целевого репозитория, которая будет создана в результате выполнения действия | main |
Учётные данные
password— пароль (токен) пользователя, от имени которого будет запускаться выполнение действия.username— имя пользователя, от которого будет запускаться выполнение действия.
Алгоритм работы
Платформа:
- Клонирует шаблонный репозиторий по указанному URL (
templateRepositoryUrl), используя в качестве ref либоsourceTag, либоsourceBranch, либо веткуmain. - Считывает файл
values.yaml, хранящийся в корне репозитория, и определяет переменные по умолчанию для шаблонизации. - Считывает переменные, передаваемые при запуске действия, и делает их merge с переменными из
values.yaml. Приоритет при merge отдаётся переменным, передаваемым при запуске действия. - Считывает файл
.templateignoreи определяет директории и файлы, исключаемые из шаблонизации. - Рендерит из шаблонов файлы, учитывая
values.yamlи переданные в действие переменные. - Изменяет удалённый (remote) репозиторий на целевой (
targetRepositoryUrl) и делает git push в целевую ветку (targetBranch), либо в основную веткуmain.
Детали работы
Действие поддерживает шаблонизацию имён директорий и файлов. Для этого необходимо в их название добавить выражение в формате Go template.
Например, директория src/{{ .module }}/utils при наличии value module со значением example будет отрендерена в директорию src/example/utils в целевом репозитории.
Если после рендеринга из шаблона содержимое файла будет отсутствовать, файл не создаётся. Например, файл с содержимым:
{{- if .createContent }}
- Это контент, который будет отображаться, если переменная createContent == true
{{- end }}не будет создан, если переменная createContent имеет значение false. Аналогичным образом, не будут созданы файлы, изначально являющиеся пустыми.
При отсутствии переменных для шаблонизации одновременно в файле values.yaml и в переменных, передаваемых при запуске действия, рендеринг завершится с ошибкой и целевой репозиторий создан не будет.
Переменные шаблонного репозитория
Для добавления переменных по умолчанию, используемых при шаблонизации, необходимо создать в корне репозитория файл values.yaml с соответствующим содержимым.
Пример файла values.yaml:
module: example
createContent: falseФайл values.yaml является опциональным.
Исключение файлов
Некоторые файлы могут содержать переменные в формате Go template, которые необходимо сохранять при рендеринге репозитория из шаблона, например, Helm-чарты в директории helm. Директория .git игнорируется всегда.
Для исключения подобных файлов из механизма рендеринга следует добавить в корень репозитория файл .templateignore с соответствующим содержимым.
В каждой строке .templateignore задаётся одно правило — путь или маска. Если в строке есть {{, вся строка выполняется как один шаблон Go с теми же переменными и функциями, что при подстановке в имена файлов и каталогов (подробнее — «Как обрабатывается строка правила»). Если {{ в строке нет, подстановка переменных из values.yaml и из запроса действия не делается: строка читается как есть и сравнивается с относительным путём на диске, допускаются литералы и символы маски * и **.
Пример файла .templateignore только с масками пути, без шаблонов подстановки, для игнорирования содержимого директорий helm, docs:
helm/**
docs/**Добавление путей в игнор
В корне шаблонного репозитория создайте или отредактируйте файл
.templateignore(по одному правилу на строку).Каждая строка — это одно правило: путь от корня репозитория. В нём допускаются обычные символы пути и маски: звёздочка
*в имени сегмента, последовательность**— для произвольной глубины вложенных каталогов. Платформа сопоставляет относительный путь с маской по встроенным правилам (аналогично распространённым соглашениям для масок в файлах игнорирования в системах контроля версий).Чтобы подставить фрагмент пути из
values.yamlили из поляvaluesзапроса действия, используйте в строке конструкции Go template ({{ ... }}). Если в строке есть{{, платформа обрабатывает всю строку от начала до конца как один шаблон Go: нельзя оставить часть строки «простым текстом» и шаблонизировать только середину пути. Примеры — в разделе «Примеры Go template в.templateignore».Пустые строки и строки, начинающиеся с
#, при разборе файла пропускаются — их можно использовать для комментариев.
Примеры без подстановки (только маски пути)
Отдельные файлы в корне:
package-lock.json
yarn.lock
LICENSE
.env.localКаталоги целиком и типичные артефакты сборки:
vendor/**
node_modules/**
dist/**
build/tmp/**Вложенность по маске:
docs/**/*.pdf
charts/*/values.schema.json
.github/workflows/**Секреты по расширению во всём дереве:
**/*.pem
**/*.keyКак обрабатывается строка правила
Переменные для раскрытия правил те же, что объединены из values.yaml в корне шаблонного репозитория и из поля values в запросе действия (приоритет у values в запросе).
Для каждой непустой строки из .templateignore или из файла из additionalIgnoreFiles платформа делает следующее.
В список правил всегда попадает строка как в файле, без изменений. Именно её потом сравнивают с путём к файлу в первую очередь — это нужно, когда в именах на диске ещё есть фрагменты вроде
{{ .module }}до переименования.Если в строке есть
{{, платформа один раз прогоняет всю строку через шаблонизатор Go template с теми же возможностями, что при подстановке в имена файлов и каталогов (встроенные функции платформы и набор Sprig). Если{{в строке нет, этот шаг пропускают.Если шаг подстановки был и полученный текст отличается от строки в файле (включая случай «на выходе пусто»), в список правил добавляют вторую запись — уже с этим полученным текстом. Итого из одной строки файла может получиться две записи в списке. При проверке пути к файлу смотрят обе: достаточно совпадения с любой из них — файл попадает под правило.
Дальше при обходе дерева для каждого пути к файлу вычисляется путь относительно корня клонированной копии (с прямыми слешами). Путь сравнивается с каждым правилом: сначала по правилам сопоставления с маской (в том числе с использованием * и **), при необходимости — по точному совпадению строки правила и относительного пути.
Так одна строка в файле может задать два правила: например, исходное charts/{{ .name }}/** (чтобы не трогать путь до переименования каталогов), и раскрытое charts/billing/** (чтобы совпадало с путём после подстановки переменных в имена на диске). Поэтому правила работают и «до», и «после» этапа переименования каталогов по шаблону.
Если шаблон в строке синтаксически неверен или обращается к отсутствующему полю, раскрытие правил завершается ошибкой, и рендер репозитория не продолжается.
Поле additionalIgnoreFiles в действии задаёт имена дополнительных файлов в корне репозитория; в каждом из них — такие же строки-правила, как в .templateignore, с тем же раскрытием шаблонов. Но смысл другой: совпавшие пути убирают из рабочей копии (каталог или файл удаляют), и делают это дважды — в начале и в конце цепочки обработки, чтобы эти объекты не участвовали в дальнейших шагах и не попали в итоговый репозиторий.
Файл .templateignore, наоборот, означает «не шаблонизировать»: для совпавших путей платформа не подставляет переменные в содержимое файлов и не применяет к соответствующим каталогам переименование по шаблону в пути. Сами файлы и каталоги при этом не удаляются только из‑за записи в .templateignore — они остаются в копии, но обрабатываются как обычный текст и обычные имена, без шага шаблонизации.
Примеры Go template в .templateignore
Ниже в каждом примере показаны фрагменты values.yaml (или эквивалентные поля в values запроса) и строки .templateignore. Несколько независимых правил задают несколькими строками файла: результат одной строки-шаблона — одна строка с маской; перевод строк внутри результата шаблона не делит правило на несколько.
Имя каталога в правиле берётся из values.yaml или из values действия:
values.yaml:
project: payment-gateway.templateignore:
{{ .project }}/legacy/**В набор правил попадут строки {{ .project }}/legacy/** и payment-gateway/legacy/**.
Сегмент пути из переменной и статический хвост:
values.yaml:
lang: ru.templateignore:
apps/{{ .lang }}/messages.yamlУсловное правило в одной строке работает следующим образом: при skipGenerated: false подстановка даёт пустую строку, которая всё равно добавляется вторым правилом. Исходная строка с {{ используется как маска пути и обычно не совпадает с реальными путями. При skipGenerated: true вторым правилом становится generated/**):
values.yaml:
skipGenerated: false.templateignore:
{{- if .skipGenerated }}generated/**{{- end }}Вариант «игнорировать только не production»:
values.yaml:
tier: staging.templateignore:
{{- if ne .tier "prod" }}mock/**{{- end }}Использование printf для сборки строки маски (удобно, если имя чарта в переменной):
values.yaml:
chartName: wordpress.templateignore:
{{ printf "charts/%s/**" .chartName }}Значение по умолчанию для «пустого» значения — функция default из набора Sprig. Поле в данных должно существовать (иначе при раскрытии сработает missingkey=error); для «не задано в YAML» заведите ключ с пустой строкой или используйте условие if / index:
values.yaml:
envName: "".templateignore:
{{ default "dev" .envName }}/secrets/**При пустом envName в правило попадёт и {{ default "dev" .envName }}/secrets/**, и dev/secrets/**.
Опциональный сегмент пути (with):
values.yaml:
analyticsModule: tracking.templateignore:
{{ with .analyticsModule }}{{ . }}/vendor/**{{ end }}Если analyticsModule пусто, шаблон даёт пустую строку (см. правила раскрытия выше).
Доступ к полю вложенной структуры по строковому ключу index:
values.yaml:
regions:
primary: eu-west.templateignore:
configs/{{ index .regions "primary" }}/bootstrap.yamlУдаление пробелов в сегменте имени — функция trim из набора Sprig:
values.yaml:
serviceName: " billing-api ".templateignore:
{{ trim .serviceName " " }}/logs/**Несколько фрагментов в одной маске:
values.yaml:
base: services
variant: canary.templateignore:
{{ .base }}/{{ .variant }}/**/*.tmpПримеры для additionalIgnoreFiles
В спецификации действия перечисляются имена файлов в корне репозитория (например, .ship-ignore, .ci-remove). Формат строк внутри таких файлов тот же: комментарии #, пустые строки, маски пути, при необходимости — шаблоны Go в строках.
Файл .ship-ignore в шаблоне:
# не попадает в целевой репозиторий
local/fixtures/**
scratchpad.mdФрагмент запроса действия:
additionalIgnoreFiles:
- .ship-ignoreШаблон в файле для additionalIgnoreFiles (удаление каталога, имя из переменных):
Файл .env-drop в корне шаблона:
{{ .obsoleteDir }}/**При obsoleteDir: legacy-ui из values после раскрытия в списке удаления окажутся и {{ .obsoleteDir }}/**, и legacy-ui/** — совпавшие пути будут удалены из копии перед финальными шагами.
Не путайте назначение: .templateignore оставляет файлы на диске, но отключает для них переименование пути и рендер содержимого; списки из additionalIgnoreFiles удаляют совпавшие пути из рабочей копии.
Пример структуры директорий шаблонного репозитория
├── example-folder-01
│ ├── example-file-01
│ └── {{ .example }}-file-02
├── {{ .example }}-folder-02
│ └── ...
├── values.yaml
└── .templateignoreЕсли переменная example при рендере репозитория примет значение new, то итоговая структура после рендера будет выглядеть следующим образом:
├── example-folder-01
│ ├── example-file-01
│ └── new-file-02
├── new-folder-02
│ └── ...
├── values.yaml
└── .templateignoreЛокальная отладка
Для локальной отладки шаблонов доступна утилита ddp-render-dir.
Утилита:
- Создаёт копию исходной директории.
- Выполняет рендеринг файлов в этой директории по тем же правилам, что и действие создания репозиториев из шаблонов.
Ключи командной строки для запуска:
--source-dir— исходная директория, которую необходимо отрендерить.--target-dir— директория, в которую будет помещен результат рендеринга.--values(опционально) — путь к файлуvalues.yamlс переменными, которые будут использоваться при рендеринге.--ignore-files(опционально) — список файлов, содержащих пути для исключения из целевого репозитория.
CreateSonarqubeProject
CreateSonarqubeProject — создаёт новый проект в SonarQube. Действие использует SonarQube Web API для создания проекта с указанными параметрами, такими как ключ (project key), название проекта, главная ветка, параметры определения нового кода (new code definition) и видимость проекта. Аутентификация осуществляется с использованием SonarQube token, который должен быть передан в учётных данных.
Пример запроса
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.
Пример запроса
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.
Пример запроса
path: example/data/pathСпецификация запроса
| Название | Обязательность | Описание |
|---|---|---|
| path | Да | Путь, по которому находится секрет в Vault, который необходимо удалить |
Учётные данные
token— Vault-токен, который имеет необходимые права для удаления секретов.
DeleteDefectdojoProduct
DeleteDefectdojoProduct — удаляет продукт из DefectDojo. Действие использует DefectDojo API v2.
Пример запроса
id: 1Спецификация запроса
| Название | Обязательность | Описание | Значение по умолчанию |
|---|---|---|---|
| id | Да | Идентификатор продукта, который необходимо удалить | - |
Учётные данные
token— API v2 Key пользователя, от имени которого будет запускаться выполнение действия.
DeleteGitlabProject
DeleteGitlabProject — удаляет существующий проект в GitLab. Действие осуществляет вызов GitLab API для удаления проекта. Для аутентификации используется GitLab token, который должен быть предоставлен в учётных данных.
Пример запроса
project_id: 0Спецификация запроса
| Название | Обязательность | Описание |
|---|---|---|
| project_id | Да | Идентификатор проекта, который необходимо удалить |
Учётные данные
token— токен пользователя, от имени которого будет запускаться выполнение действия.
Примечание
Для выполнения действия необходимо наличие токена GitLab.
Токен передаётся через механизм учётных данных и используется для аутентификации при вызове GitLab API (HTTP-заголовок Private-Token).
Действие осуществляет DELETE-запрос по URL: /api/v4/projects/:id.
DeleteKafkaACLs
DeleteKafkaACLs — удаляет набор ACL в Kafka.
Пример запроса
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 | PLAINTEXT, SASL_PLAINTEXT, SASL_SSL | - |
| saslMechanism | Нет | Механизм аутентификации, который будет использовать SASL. Обязателен при использовании протокола SASL_PLAINTEXT или SASL_SSL. Подробнее — в документации Kafka | 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.
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.
Пример запроса
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.
Пример запроса
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 | PLAINTEXT, SASL_PLAINTEXT, SASL_SSL |
| saslMechanism | Нет | Механизм аутентификации, который будет использовать SASL. Обязателен при использовании протокола SASL_PLAINTEXT или SASL_SSL. Подробнее — в документации Kafka | PLAIN, SCRAM-SHA-256, SCRAM-SHA-512 |
| users | Да | Набор пользователей, которых необходимо удалить | - |
| users.user | Да | Имя удаляемого пользователя | - |
| users.mechanism | Да | Механизм аутентификации удаляемого пользователя | SCRAM-SHA-256, SCRAM-SHA-512 |
Учётные данные
user— имя пользователя, от которого будет запускаться выполнение действия.password— пароль пользователя, от имени которого будет запускаться выполнение действия.
DeleteKubernetesResource
DeleteKubernetesResource — удаляет существующий ресурс в кластере Kubernetes.
Пример запроса
group: apps
version: v1
resource_type: deployments
resource_name: nginx-deployment
namespace: exampleСпецификация запроса
| Название | Обязательность | Описание | Возможные значения |
|---|---|---|---|
| group | Да | API-группа ресурса. Указывает, к какой группе API относится удаляемый объект | Определение требуемых Group и Version |
| version | Да | Версия API ресурса | Определение требуемых 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.
Если неизвестно, какие требуются Group и Version, можно использовать актуальные значения. Существует несколько способов их определить:
С помощью утилиты d8 k
Команда d8 k explain показывает apiVersion для ресурса.
Пример:
d8 k explain deploymentВывод:
GROUP: apps
KIND: Deployment
VERSION: v1
DESCRIPTION:
Deployment enables declarative updates for Pods and ReplicaSets.
FIELDS:
...С помощью документации
Как искать в документации:
Найдите нужный ресурс (например, Deployment).
В заголовке будет указана API Group и версия. Пример для Deployment:
apiVersion: apps/v1Здесь:
- «API Group» — apps;
- «Version» — v1.
DeleteSonarqubeProject
DeleteSonarqubeProject — удаляет проект из SonarQube.
Пример запроса
project: example-projectСпецификация запроса
| Название | Обязательность | Описание | Значение по умолчанию |
|---|---|---|---|
| project | Да | Идентификатор (Project Key) проекта, который необходимо удалить | - |
Учётные данные
token— токен Sonarqube с типом User Token, сгенерированный пользователем, от имени которого будет запускаться выполнение действия.
DeleteSonarqubeProjects
DeleteSonarqubeProjects — удаляет один или несколько проектов из SonarQube.
Пример запроса
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.
Пример запроса
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.
Пример запроса
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.
Учётные данные
token— Vault-токен, обладающий правами на создание/обновление ролей Kubernetes auth backend.
CreateNexusRepository
CreateNexusRepository — создаёт новый репозиторий любого поддерживаемого типа (maven, docker, npm и др.) в Nexus Repository Manager 3 с помощью REST API.
Параметры формата, типа и другие ключевые настройки полностью настраиваются и соответствуют Nexus API.
Пример запроса (Maven hosted)
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)
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 | Пример |
cleanup | Нет | Привязанные политики очистки (policyNames) | policyNames: [maven-cleanup] |
maven | Для maven | Только для maven: versionPolicy, layoutPolicy | Пример |
proxy | Для proxy | Прокси-репозиторий: remoteUrl, contentMaxAge, metadataMaxAge | - |
group | Для group | Список включённых memberNames | Пример |
docker | Для docker | docker-specific: httpPort, v1Enabled, forceBasicAuth | Пример |
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.
Пример запроса
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)
name: example-privilege
description: Example privilege description
type: repository-view
actions:
- READ
- BROWSE
format: maven2
repository: maven-releasesПример запроса (repository-content-selector)
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)
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. Действие получает текущую конфигурацию роли и объединяет существующие привилегии с новыми.
Пример запроса
roleId: example-role
privileges:
- example-privilege
- another-privilegeСпецификация запроса
| Поле | Обязательность | Описание |
|---|---|---|
| roleId | Да | Идентификатор роли, которой назначаются привилегии |
| privileges | Да | Список названий привилегий, которые необходимо назначить роли |
Алгоритм работы
- Получает текущую конфигурацию роли из Nexus.
- Объединяет существующие привилегии роли с новыми привилегиями из запроса.
- Обновляет роль с объединённым списком привилегий.
Учётные данные
token— строка base64(admin:password), используется как Basic Auth при запросах к Nexus.
Примечание
Роль должна существовать в Nexus до назначения привилегий. Если роль не найдена, действие завершится с ошибкой. Все указанные привилегии также должны существовать в Nexus.
DeleteNexusPrivilege
DeleteNexusPrivilege — удаляет привилегию из Nexus Repository Manager 3.
Пример запроса
name: example-privilegeСпецификация запроса
| Поле | Обязательность | Описание |
|---|---|---|
| name | Да | Название привилегии, которую требуется удалить |
Учётные данные
token— строка base64(admin:password), используется как Basic Auth при запросах к Nexus.
CreateNexusRole
CreateNexusRole — создаёт новую роль в Nexus Repository Manager 3. Роли объединяют привилегии и могут включать другие роли.
Пример запроса
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. Действие получает текущую конфигурацию пользователя и объединяет существующие роли с новыми.
Пример запроса
userId: example-user
roles:
- example-role
- another-roleСпецификация запроса
| Поле | Обязательность | Описание |
|---|---|---|
| userId | Да | Идентификатор пользователя, которому назначаются роли |
| roles | Да | Список идентификаторов ролей, которые необходимо назначить пользователю |
Алгоритм работы
- Получает текущую конфигурацию пользователя из Nexus.
- Объединяет существующие роли пользователя с новыми ролями из запроса.
- Обновляет пользователя с объединённым списком ролей.
Учётные данные
token— строка base64(admin:password), используется как Basic Auth при запросах к Nexus.
Примечание
Пользователь должен существовать в Nexus до назначения ролей. Если пользователь не найден, действие завершится с ошибкой. Все указанные роли также должны существовать в Nexus.
DeleteNexusRole
DeleteNexusRole — удаляет роль из Nexus Repository Manager 3.
Пример запроса
id: example-roleСпецификация запроса
| Поле | Обязательность | Описание |
|---|---|---|
| id | Да | Идентификатор роли, которую требуется удалить |
Учётные данные
token— строка base64(admin:password), используется как Basic Auth при запросах к Nexus.
CreateNexusUser
CreateNexusUser — создаёт нового пользователя в Nexus Repository Manager 3.
Пример запроса
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.
Пример запроса
userId: example-userСпецификация запроса
| Поле | Обязательность | Описание |
|---|---|---|
| userId | Да | Идентификатор пользователя, которого требуется удалить |
Учётные данные
token— строка base64(admin:password), используется как Basic Auth при запросах к Nexus.
Wait
Wait ожидает заданное число секунд; дополнительно может применяться случайная добавка к длительности (джиттер). Предназначено для использования в процессах в качестве элемента задержки, в том числе для ожидания применения результатов предыдущего действия.
Пример запроса
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 эмулирует ошибку исполнения действия. Предназначен для использования в процессах в качестве отладочного элемента.
Пример запроса
fail: trueСпецификация запроса
| Название | Обязательность | Описание | Значение по умолчанию |
|---|---|---|---|
| fail | Нет | Если true, действие завершается с ошибкой; если false, действие завершается успешно | true |