用于发布 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
范围创建项目访问令牌、组访问令牌或个人访问令牌,并通过GL_TOKEN
环境变量使其在 CI 环境中可用。如果您使用GL_TOKEN
作为远程 Git 存储库身份验证,它还必须具有write_repository
范围。
注意:使用dryRun
运行时,仅需要read_repository
范围。
多变的 | 描述 |
---|---|
GL_TOKEN 或GITLAB_TOKEN | 必需的。用于向 GitLab 进行身份验证的令牌。 |
GL_URL 或GITLAB_URL | GitLab 端点。 |
GL_PREFIX 或GITLAB_PREFIX | GitLab API 前缀。 |
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 | GitLab API 前缀。 | GL_PREFIX 或GITLAB_PREFIX 环境变量或 CI 提供的环境变量(如果在 GitLab CI/CD 或/api/v4 上运行)。 |
assets | 要上传到版本的文件数组。查看资产。 | - |
milestones | 与版本关联的一系列里程碑标题。请参阅 GitLab 发布 API。 | - |
successComment | 添加到该版本解决的每个问题和合并请求的注释。查看成功评论。 | ?此问题已在版本 ${nextRelease.version} 中得到解决?nn该版本已在 GitLab 版本上提供 |
successCommentCondition | 使用此作为条件,何时评论问题或合并请求。请参阅 successCommentCondition。 | - |
failComment | 发布失败时创建的问题的内容。请参阅失败注释。 | 友好的消息,包含语义发布文档和支持的链接,以及导致发布失败的错误列表。 |
failTitle | 发布失败时创建的问题的标题。 | The automated release is failing |
failCommentCondition | 将此作为条件,在发生故障时发表评论或创建问题。请参阅failCommentCondition。 | - |
labels | 添加到发布失败时创建的问题的标签。设置为false 不添加任何标签。标签应该按照官方文档中的描述以逗号分隔,例如"semantic-release,bot" 。 | semantic-release |
assignee | 添加到发布失败时创建的问题的受让人。 | - |
可以是 glob 或 glob 和Object
的Array
,具有以下属性:
财产 | 描述 | 默认 |
---|---|---|
path | 必需的,除非设置了url 。用于标识要上传的文件的 glob。支持 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 |
assets
Array
中的每个条目都是单独通配的。 glob 可以是一个String
( "dist/**/*.js"
或"dist/mylib.js"
) 或将被组合在一起的String
Array
( ["dist/**", "!**/*.css"]
)。
如果配置了目录,则将包含该目录及其子目录下的所有文件。
注意:如果文件在assets
中具有匹配项,即使它在.gitignore
中也具有匹配项,该文件也会被包含在内。
'dist/*.js'
:包含dist
目录中的所有js
文件,但不包含其子目录中的所有 js 文件。
[['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
文件,并在 GitLab 版本中将它们标记为MyLibrary JS distribution
和MyLibrary CSS distribution
。
[['dist/**/*.{js,css}', '!**/*.min.*'], {path: 'build/MyLibrary.zip', label: 'MyLibrary'}]
: 包含dist
目录及其子目录中的所有js
和css
文件(不包括缩小版),加上build/MyLibrary.zip
文件,并在 GitLab 版本中将其标记为MyLibrary
。
问题评论的消息是使用 Lodash 模板生成的。以下变量可用:
范围 | 描述 |
---|---|
branch | 具有name 、 type 、 channel 、 range 和发布完成的分支的prerelease 属性的Object 。 |
lastRelease | 具有最新版本的version 、 channel 、 gitTag 和gitHead 的Object 。 |
nextRelease | 包含version 、 channel 、 gitTag 、 gitHead 和正在完成的发布的notes 的Object 。 |
commits | 包含hash 、 subject 、 body message 和author 的提交Object Array 。 |
releases | 包含发布Array 每个已发布的发布的Object ,以及可选的发布数据,例如name 和url 。 |
issue | 评论将发布到的 GitLab API Issue 对象,或者在评论合并请求时为false 。 |
mergeRequest | 评论将发布到的 GitLab API 合并请求对象,或者在评论问题时为false 。 |
成功评论条件是用Lodash模板生成的。以下变量可用:
范围 | 描述 |
---|---|
branch | 具有name 、 type 、 channel 、 range 和发布完成的分支的prerelease 属性的Object 。 |
lastRelease | 具有最新版本的version 、 channel 、 gitTag 和gitHead 的Object 。 |
nextRelease | 包含version 、 channel 、 gitTag 、 gitHead 和正在完成的发布的notes 的Object 。 |
commits | 包含hash 、 subject 、 body message 和author 的提交Object Array 。 |
releases | 包含发布Array 每个已发布的发布的Object ,以及可选的发布数据,例如name 和url 。 |
issue | 评论将发布到的 GitLab API Issue 对象。 |
mergeRequest | 评论将发布到的 GitLab API 合并请求对象。 |
false
或模板化: "<% return false; %>"
"<% return issue %>"
"<% return mergeRequest %>"
"<% return issue.labels?.includes('semantic-release-relevant') %>"
检查 GitLab API 合并请求对象或 GitLab API 问题对象以获取可用于过滤器的属性
问题内容的消息是使用 Lodash 模板生成的。以下变量可用:
范围 | 描述 |
---|---|
branch | 发布失败的分支。 |
errors | SemanticReleaseError Array 。每个错误都有message 、 code 、 pluginName 和details 属性。pluginName 包含引发错误的插件的包名称。details 包含有关 Markdown 格式的错误的信息。 |
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 | 具有name 、 type 、 channel 、 range 和发布完成的分支的prerelease 属性的Object 。 |
lastRelease | 具有最新版本的version 、 channel 、 gitTag 和gitHead 的Object 。 |
nextRelease | 包含version 、 channel 、 gitTag 、 gitHead 和正在完成的发布的notes 的Object 。 |
commits | 包含hash 、 subject 、 body message 和author 的提交Object Array 。 |
releases | 包含发布Array 每个已发布的发布的Object ,以及可选的发布数据,例如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 中,使用 Tags API 创建版本已被删除(请参阅# 290311)。该插件已更新为在 #184 中使用 Releases API,该插件在6.0.7
及更高版本中可用。