Плагин semantic-release для публикации релиза GitLab.
Шаг | Описание |
---|---|
verifyConditions | Проверьте наличие и действительность аутентификации (устанавливается через переменные среды). |
publish | Опубликуйте релиз GitLab. |
success | Добавьте комментарий к каждой проблеме GitLab или мерж-реквесту, решенной в этом выпуске. |
fail | Откройте или обновите проблему GitLab, указав информацию об ошибках, которые привели к сбою выпуска. |
$ npm install @semantic-release/gitlab -D
Плагин можно настроить в файле конфигурации семантической версии :
{
"branches" : [ " main " ],
"plugins" : [
" @semantic-release/commit-analyzer " ,
" @semantic-release/release-notes-generator " ,
[
" @semantic-release/gitlab " ,
{
"gitlabUrl" : " https://custom.gitlab.com " ,
"assets" : [
{ "path" : " dist/asset.min.css " , "label" : " CSS distribution " },
{ "path" : " dist/asset.min.js " , "label" : " JS distribution " , "target" : " generic_package " },
{ "path" : " dist/asset.min.js " , "label" : " v${nextRelease.version}.js " },
{ "url" : " https://gitlab.com/gitlab-org/gitlab/-/blob/master/README.md " }
]
}
]
]
}
В этом примере выпуски GitLab будут опубликованы в экземпляре https://custom.gitlab.com
.
Конфигурация аутентификации GitLab обязательна и может быть установлена через переменные среды.
Создайте токен доступа к проекту, токен группового доступа или личный токен доступа с ролью «Разработчик» (или выше) и областью api
и сделайте его доступным в своей среде CI через переменную среды GL_TOKEN
. Если вы используете GL_TOKEN
в качестве аутентификации удаленного репозитория Git, он также должен иметь область write_repository
.
Примечание . При работе с dryRun
требуется только область read_repository
.
Переменная | Описание |
---|---|
GL_TOKEN или GITLAB_TOKEN | Необходимый. Токен, используемый для аутентификации в GitLab. |
GL_URL или GITLAB_URL | Конечная точка GitLab. |
GL_PREFIX или GITLAB_PREFIX | Префикс API GitLab. |
HTTP_PROXY или HTTPS_PROXY | Используемый прокси-сервер HTTP или HTTPS. |
NO_PROXY | Шаблоны, для которых прокси следует игнорировать. Подробности см. ниже. |
Плагин поддерживает передачу запросов через прокси-сервер.
Вы можете настроить прокси-сервер через переменную среды HTTPS_PROXY
: HTTPS_PROXY=http://proxyurl.com:8080
Если ваш прокси-сервер требует аутентификации, вставьте имя пользователя и пароль в URL-адрес: HTTPS_PROXY=http://user:[email protected]:8080
Если ваш экземпляр GitLab доступен через простой HTTP (не рекомендуется!), используйте вместо него HTTP_PROXY
.
Если вам нужно обойти прокси для некоторых хостов, настройте переменную среды NO_PROXY
: NO_PROXY=*.host.com, host.com
Вариант | Описание | По умолчанию |
---|---|---|
gitlabUrl | Конечная точка GitLab. | Переменная среды GL_URL или GITLAB_URL или переменные среды, предоставленные CI, если они работают на GitLab CI/CD или https://gitlab.com . |
gitlabApiPathPrefix | Префикс API GitLab. | Переменная среды GL_PREFIX или GITLAB_PREFIX или переменные среды, предоставленные CI, если они работают на GitLab CI/CD или /api/v4 . |
assets | Массив файлов для загрузки в релиз. См. активы. | - |
milestones | Массив ключевых названий, связанных с выпуском. См. API-интерфейс выпуска GitLab. | - |
successComment | Комментарий, добавляемый к каждой проблеме и мерж-реквесту, решенным в выпуске. См. комментарий к успеху. | ? Эта проблема решена в версии ${nextRelease.version} ?nnРелиз доступен в выпуске GitLab. |
successCommentCondition | Используйте это как условие, когда комментируете проблемы или мерж-реквесты. См. условие успехаКомментария. | - |
failComment | Содержание проблемы, созданной в случае сбоя выпуска. См. неудачный комментарий. | Дружественное сообщение со ссылками на документацию и поддержку семантического выпуска , а также список ошибок, которые привели к сбою выпуска. |
failTitle | Название проблемы, возникающей в случае сбоя выпуска. | The automated release is failing |
failCommentCondition | Используйте это как условие, когда нужно комментировать или создавать проблемы в случае сбоев. См. FailCommentCondition. | - |
labels | Метки, которые нужно добавить к проблеме, созданной в случае сбоя выпуска. Установите значение false , чтобы не добавлять метки. Метки должны быть разделены запятыми, как описано в официальной документации, например "semantic-release,bot" . | semantic-release |
assignee | Правопреемник, которого можно добавить к проблеме, созданной в случае сбоя выпуска. | - |
Может быть glob или Array
glob и Object
со следующими свойствами:
Свойство | Описание | По умолчанию |
---|---|---|
path | Обязательно , если не указан url . Глоб для идентификации файлов для загрузки. Поддерживает шаблоны Lodash. | - |
url | Альтернативно настройке path это дает возможность добавлять ссылки на выпуски, например URL-адреса на изображения контейнеров. Поддерживает шаблоны Lodash. | - |
label | Краткое описание файла, отображаемого в выпуске GitLab. Игнорируется, если path соответствует более чем одному файлу. Поддерживает шаблоны Lodash. | Имя файла, извлеченное из path . |
type | Тип ресурса, отображаемый в выпуске GitLab. Это могут быть runbook , package , image и other (см. официальные документы об активах выпуска). Поддерживает шаблоны Lodash. | other |
filepath | Путь к файлу для создания постоянной ссылки, указывающей на ресурс (требуется GitLab 12.9+, см. официальные документы о постоянных ссылках). Игнорируется, если path соответствует более чем одному файлу. Поддерживает шаблоны Lodash. | - |
target | Управляет местом загрузки файла. Может быть установлено значение project_upload для хранения файла как загрузки проекта или generic_package для хранения файла как общего пакета. | project_upload |
status | Это применяется только в том случае, если для target установлено значение generic_package . Общий статус пакета. Может быть default и hidden (см. официальные документы по универсальным пакетам). | default |
Каждая запись в Array
assets
присваивается индивидуально. Глоб может быть String
( "dist/**/*.js"
или "dist/mylib.js"
) или Array
String
, которые будут объединены вместе ( ["dist/**", "!**/*.css"]
).
Если каталог настроен, все файлы в этом каталоге и его дочерних элементах будут включены.
Примечание . Если файл имеет совпадение в assets
он будет включен, даже если у него также есть совпадение в .gitignore
.
'dist/*.js'
: включить все файлы js
в каталог dist
, но не в его подкаталоги.
[['dist', '!**/*.css']]
: включает все файлы в каталоге dist
и его подкаталогах, за исключением файлов css
.
[{path: 'dist/MyLibrary.js', label: 'MyLibrary JS distribution'}, {path: 'dist/MyLibrary.css', label: 'MyLibrary CSS distribution'}]
: включите dist/MyLibrary.js
и dist/MyLibrary.css
и назовите их MyLibrary JS distribution
и MyLibrary CSS distribution
в выпуске GitLab.
[['dist/**/*.{js,css}', '!**/*.min.*'], {path: 'build/MyLibrary.zip', label: 'MyLibrary'}]
: включить все файлы js
и css
в каталоге dist
и его подкаталогах, за исключением мини-версии, а также файл build/MyLibrary.zip
и назовите его MyLibrary
в выпуске GitLab.
Сообщение для комментариев к проблеме генерируется с помощью шаблона Lodash. Доступны следующие переменные:
Параметр | Описание |
---|---|
branch | Object с name , type , channel , range и prerelease свойствами ветки, из которой выполняется выпуск. |
lastRelease | Object с version , channel , gitTag и gitHead последней версии. |
nextRelease | Object с version , channel , gitTag , gitHead и notes к готовящемуся выпуску. |
commits | Array Object фиксации с hash , subject , body message и author . |
releases | Array с Object Release для каждого опубликованного релиза с дополнительными данными о выпуске, такими как name и url . |
issue | Объект GitLab API Issue, к которому будет опубликован комментарий, или false при комментировании мерж-реквестов. |
mergeRequest | Объект GitLab API Merge Request, к которому будет опубликован комментарий, или false при комментировании задач. |
Условие успеха комментария генерируется с помощью шаблона Lodash. Доступны следующие переменные:
Параметр | Описание |
---|---|
branch | Object с name , type , channel , range и prerelease свойствами ветки, из которой выполняется выпуск. |
lastRelease | Object с version , channel , gitTag и gitHead последней версии. |
nextRelease | Object с version , channel , gitTag , gitHead и notes к готовящемуся выпуску. |
commits | Array Object фиксации с hash , subject , body message и author . |
releases | Array с Object Release для каждого опубликованного релиза с дополнительными данными о выпуске, такими как name и url . |
issue | Объект GitLab API Issue, к которому будет опубликован комментарий. |
mergeRequest | Объект GitLab API Merge Request, к которому будет опубликован комментарий. |
false
или шаблон: "<% return false; %>"
"<% return issue %>"
"<% return mergeRequest %>"
"<% return issue.labels?.includes('semantic-release-relevant') %>"
проверьте объект GitLab API Merge Request или объект GitLab API Issue на наличие свойств, которые можно использовать для фильтра.
Сообщение о содержании задачи генерируется с помощью шаблона Lodash. Доступны следующие переменные:
Параметр | Описание |
---|---|
branch | Ветка, из которой произошел сбой релиза. |
errors | Array SemanticReleaseError. Каждая ошибка имеет свойства message , code , pluginName и details .pluginName содержит имя пакета плагина, вызвавшего ошибку.details содержит информацию об ошибке в формате уценки. |
failComment
This release from branch ${branch.name} had failed due to the following errors:n- ${errors.map(err => err.message).join('\n- ')}
сгенерирует комментарий:
Этот выпуск от мастера ветки не удался из-за следующих ошибок:
- Сообщение об ошибке 1
- Сообщение об ошибке 2
Условие отказа комментария создается с помощью шаблона Lodash. Доступны следующие переменные:
Параметр | Описание |
---|---|
branch | Object с name , type , channel , range и prerelease свойствами ветки, из которой выполняется выпуск. |
lastRelease | Object с version , channel , gitTag и gitHead последней версии. |
nextRelease | Object с version , channel , gitTag , gitHead и notes к готовящемуся выпуску. |
commits | Array Object фиксации с hash , subject , body message и author . |
releases | Array с Object Release для каждого опубликованного релиза с дополнительными данными о выпуске, такими как name и url . |
issue | Объект GitLab API Issue, к которому будет опубликован комментарий. Доступен только в том случае, если существует открытая проблема. |
false
или шаблон: "<% return false; %>"
"<% return branch.name === 'main' %>"
wip
: "<% return !issue.labels?.includes('wip') %>"
проверьте объект GitLab API Issue на наличие свойств, которые можно использовать для фильтра.
Последняя версия этого плагина совместима со всеми поддерживаемыми на данный момент версиями GitLab, включая текущую основную версию и две предыдущие основные версии. Работа этого плагина с неподдерживаемыми версиями GitLab не гарантируется.
Если вы используете GitLab.com или обновили свой локальный экземпляр GitLab до 14.0, используйте версию >=6.0.7
этого плагина.
В GitLab 14.0 убрано создание релиза с помощью API тегов (см. # 290311). Этот плагин был обновлен для использования Releases API вместо #184, который доступен в версии 6.0.7
и более поздних версиях.