github

github

semantic-release的GitHub插件实现自动化发布

这是一个semantic-release的GitHub插件,用于自动化GitHub发布流程。该插件可以自动创建GitHub releases、上传资产文件、添加评论和标签。它支持验证认证信息、发布和更新release、添加评论等功能。插件提供多种配置选项,允许自定义release名称、内容和资产文件。通过自动化发布过程,该插件可以简化工作流程,提高开发效率。

semantic-releaseGitHub插件发布配置Github开源项目

@semantic-release/github

semantic-release 插件,用于发布 GitHub release 并在已发布的 Pull Requests/Issues 上添加评论。

构建状态

npm 最新版本 npm next 版本 npm beta 版本

步骤描述
verifyConditions验证认证信息(通过环境变量设置)的存在和有效性,以及资产选项配置。
publish发布 GitHub release,可选择上传文件资产。
addChannel更新 GitHub releasepre-release 字段。
success为每个由该版本解决的 GitHub IssuePull Request 添加评论,并关闭之前由 fail 步骤打开的 issues。
fail打开或更新一个 GitHub Issue,包含导致发布失败的错误信息。

安装

$ npm install @semantic-release/github -D

使用

插件可以在 semantic-release 配置文件 中进行配置:

{ "plugins": [ "@semantic-release/commit-analyzer", "@semantic-release/release-notes-generator", [ "@semantic-release/github", { "assets": [ { "path": "dist/asset.min.css", "label": "CSS distribution" }, { "path": "dist/asset.min.js", "label": "JS distribution" } ] } ] ] }

通过这个例子,GitHub releases 将会发布包含 dist/asset.min.cssdist/asset.min.js 文件的版本。

配置

GitHub 认证

GitHub 认证配置是必需的,可以通过环境变量设置。

请参照 创建用于命令行的个人访问令牌 文档获取认证令牌。该令牌必须通过 GH_TOKEN 环境变量在 CI 环境中可用。与令牌关联的用户必须对仓库具有推送权限。

创建令牌时,最低要求的作用域是:

关于 GitHub Actions 的注意事项: 你可以使用默认提供的 GITHUB_TOKEN 密钥。但是,使用此令牌进行的发布不会触发发布事件来启动其他工作流。 如果你有在新创建的发布上触发的操作,请为此生成一个令牌并将其存储在你的仓库的密钥中(任何除 GITHUB_TOKEN 之外的名称都可以)。

当使用 GITHUB_TOKEN 时,最低要求的权限是:

  • contents: write 用于发布 GitHub release
  • issues: write 用于在已发布的 issues 上添加评论
  • pull-requests: write 用于在已发布的 pull requests 上添加评论

环境变量

变量描述
GITHUB_TOKENGH_TOKEN必需。 用于 GitHub 认证的令牌。
GITHUB_URLGH_URLGitHub 服务器端点。
GITHUB_PREFIXGH_PREFIXGitHub API 前缀,相对于 GITHUB_URL
GITHUB_API_URLGitHub API 端点。注意这会覆盖 GITHUB_PREFIX

选项

选项描述默认值
githubUrlGitHub 服务器端点。GH_URLGITHUB_URL 环境变量。
githubApiPathPrefixGitHub API 前缀,相对于 githubUrlGH_PREFIXGITHUB_PREFIX 环境变量。
githubApiUrlGitHub API 端点。注意,这会覆盖 githubApiPathPrefixGITHUB_API_URL 环境变量。
proxy用于访问 GitHub API 的代理。设置为 false 可禁用代理使用。参见 proxyHTTP_PROXY 环境变量。
assets要上传到发布版本的文件数组。参见 assets-
successComment添加到每个由发布版本解决的问题和拉取请求的评论。设置为 false 可禁用对问题和拉取请求的评论。参见 successComment:tada: 此问题已在版本 ${nextRelease.version} 中解决 :tada:\n\n发布版本可在 [GitHub release](https://github.com/semantic-release/github/blob/master/<github_release_url> 上查看
failComment发布失败时创建的问题内容。设置为 false 可禁止在发布失败时创建问题。参见 failComment友好的消息,包含 semantic-release 文档和支持的链接,以及导致发布失败的错误列表。
failTitle发布失败时创建的问题标题。设置为 false 可禁止在发布失败时创建问题。自动发布失败 🚨
labels发布失败时创建的问题要添加的标签。设置为 false 可不添加任何标签。['semantic-release']
assignees发布失败时创建的问题要添加的受理人-
releasedLabels添加到每个由发布版本解决的问题和拉取请求的标签。设置为 false 可不添加任何标签。参见 releasedLabels['released<%= nextRelease.channel ? \ on @${nextRelease.channel}` : "" %>']-`
addReleases是否将发布链接添加到 GitHub Release。可以是 false"bottom""top"。参见 addReleasesfalse
draftRelease一个布尔值,指示是否应创建 GitHub 草稿发布而不是发布实际的 GitHub Release。false
releaseNameTemplate一个 Lodash 模板,用于自定义 GitHub release 的名称<%= nextRelease.name %>
releaseBodyTemplate一个 Lodash 模板,用于自定义 GitHub release 的正文<%= nextRelease.notes %>
discussionCategoryName创建与发布版本相关联的讨论的类别名称。设置为 false 可禁用为发布版本创建讨论。false

proxy

可以是 false、代理 URL 或具有以下属性的 Object

属性描述默认值
host必需。 要连接的代理主机。-
port必需。 要连接的代理端口。path 提取的文件名。
secureProxy如果为 true,则使用 TLS 连接到代理。false
headers在 HTTP CONNECT 方法上发送的附加 HTTP 头。-

有关更多详细信息,请参阅 node-https-proxy-agentnode-http-proxy-agent

proxy 示例

'http://168.63.76.32:3128':对每个 GitHub API 请求使用运行在主机 168.63.76.32 和端口 3128 上的代理。 {host: '168.63.76.32', port: 3128, headers: {Foo: 'bar'}}:对每个 GitHub API 请求使用运行在主机 168.63.76.32 和端口 3128 上的代理,将 Foo 头的值设置为 bar

assets

可以是一个 globglob 和具有以下属性的 ObjectArray

属性描述默认值
path必需。 用于识别要上传文件的 glob-
nameGitHub release 上可下载文件的名称。path 提取的文件名。
label在 GitHub release 上显示的文件简短描述。-

assets Array 中的每个条目都会单独进行 glob 匹配。glob 可以是一个 String"dist/**/*.js""dist/mylib.js")或一个将一起进行 glob 匹配的 String 数组(["dist/**", "!**/*.css"])。

如果配置了目录,将包含该目录及其子目录下的所有文件。

每个资产的 namelabel 使用 Lodash 模板 生成。以下变量可用:

参数描述
branch发布所在的分支。
lastRelease包含上一个发布版本的 versiongitTaggitHeadObject
nextRelease包含正在进行的发布版本的 versiongitTaggitHeadnotesObject
commits包含 hashsubjectbodymessageauthor 的提交 Object 数组。

注意:如果一个文件在 assets 中有匹配项,即使它在 .gitignore 中也有匹配项,它也会被包含在内。

assets 示例

'dist/*.js':包含 dist 目录中的所有 js 文件,但不包括其子目录中的文件。 [['dist', '!**/*.css']]:包含 dist 目录及其子目录中的所有文件,但不包括 css 文件。

[{path: 'dist/MyLibrary.js', label: 'MyLibrary JS distribution'}, {path: 'dist/MyLibrary.css', label: 'MyLibrary CSS distribution'}]:包含 dist/MyLibrary.jsdist/MyLibrary.css 文件,并在 GitHub 发布中分别标记为 MyLibrary JS distributionMyLibrary CSS distribution

[['dist/**/*.{js,css}', '!**/*.min.*'], {path: 'build/MyLibrary.zip', label: 'MyLibrary'}]:包含 dist 目录及其子目录中所有的 jscss 文件,但不包括压缩版本,同时包含 build/MyLibrary.zip 文件,并在 GitHub 发布中标记为 MyLibrary

[{path: 'dist/MyLibrary.js', name: 'MyLibrary-${nextRelease.gitTag}.js', label: 'MyLibrary JS (${nextRelease.gitTag}) distribution'}]:包含 dist/MyLibrary.js 文件,并将其上传到 GitHub 发布中,命名为 MyLibrary-v1.0.0.js,标签为 MyLibrary JS (v1.0.0) distribution,这将生成以下链接:

[MyLibrary JS (v1.0.0) distribution](https://github.com/semantic-release/github/blob/master/MyLibrary-v1.0.0.js

successComment

问题评论的消息使用 Lodash 模板 生成。可用以下变量:

参数描述
branch包含发布所在分支的 nametypechannelrangeprerelease 属性的 Object
lastRelease包含上一次发布的 versionchannelgitTaggitHeadObject
nextRelease包含当前发布的 versionchannelgitTaggitHeadnotesObject
commits包含提交 ObjectArray,每个对象包含 hashsubjectbodymessageauthor
releases包含每个已发布版本的发布 ObjectArray,可能包含可选的发布数据,如 nameurl
issue对于与提交相关的拉取请求,是一个 GitHub API 拉取请求对象;对于通过关键词解决的问题,是一个包含 number 属性的 Object
successComment 示例

successComment This ${issue.pull_request ? 'pull request' : 'issue'} is included in version ${nextRelease.version} 将生成以下评论:

This pull request is included in version 1.0.0

failComment

问题内容的消息使用 Lodash 模板 生成。可用以下变量:

参数描述
branch发布失败的分支。
errorsSemanticReleaseErrorArray。每个错误都有 messagecodepluginNamedetails 属性。<br>pluginName 包含抛出错误的插件的包名。<br>details 包含以 markdown 格式化的错误信息。
failComment 示例

failComment This release from branch ${branch.name} had failed due to the following errors:\n- ${errors.map(err => err.message).join('\\n- ')} 将生成以下评论:

This release from branch master had failed due to the following errors:

  • Error message 1
  • Error message 2

releasedLabels

每个标签名称使用 Lodash 模板 生成。可用以下变量:

参数描述
branch包含发布所在分支的 nametypechannelrangeprerelease 属性的 Object
lastRelease包含上一次发布的 versionchannelgitTaggitHeadObject
nextRelease包含当前发布的 versionchannelgitTaggitHeadnotesObject
commits包含提交 ObjectArray,每个对象包含 hashsubjectbodymessageauthor
releases包含每个已发布版本的发布 ObjectArray,可能包含可选的发布数据,如 nameurl
issue对于与提交相关的拉取请求,是一个 GitHub API 拉取请求对象;对于通过关键词解决的问题,是一个包含 number 属性的 Object
releasedLabels 示例

releasedLabels ['released<%= nextRelease.channel ? ` on @\${nextRelease.channel}` : "" %> from <%= branch.name %>'] 将生成以下标签:

released on @next from branch next

addReleases

将其他发布的链接添加到 GitHub 发布正文中。

此选项的有效值为 false"top""bottom"

addReleases 示例

有关其外观的示例,请参阅介绍性 PR

编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多