简介
创建操作后,您需要继续发布新功能,同时处理社区贡献。本教程描述了您可以遵循的示例流程,以便在开源中发布和维护操作。该示例
- 利用 GitHub Actions 进行持续集成、依赖项更新、发布管理和任务自动化。
- 通过自动化测试和构建徽章提供信心。
- 指示操作的使用方式,理想情况下是作为更广泛工作流程的一部分。
- 表明您欢迎哪种类型的社区贡献。(例如,问题、拉取请求或漏洞报告。)
有关此流程的应用示例,请参阅 actions/javascript-action。
开发和发布操作
在本节中,我们将讨论一个开发和发布操作的示例流程,并展示如何使用 GitHub Actions 自动化该流程。
关于 JavaScript 操作
JavaScript 操作是带有元数据的 Node.js 存储库。但是,与传统的 Node.js 项目相比,JavaScript 操作具有额外的属性。
-
依赖包与代码一起提交,通常以编译和压缩的形式。这意味着自动化构建和安全的社区贡献非常重要。
-
标记的版本可以直接发布到 GitHub Marketplace,并被 GitHub 上的工作流程使用。
-
许多操作使用 GitHub API 和第三方 API,因此我们鼓励进行稳健的端到端测试。
设置 GitHub Actions 工作流程
为了支持下一节中的开发流程,请在您的存储库中添加两个 GitHub Actions 工作流程。
- 添加一个工作流程,当提交推送到功能分支或
main
分支,或创建拉取请求时触发。配置工作流程以运行您的单元测试和集成测试。例如,请参见 此工作流程。 - 添加一个工作流程,当发布或编辑版本时触发。配置工作流程以确保语义标签到位。您可以使用诸如 JasonEtco/build-and-tag-action 之类的操作来编译和捆绑 JavaScript 和元数据文件,并强制推送语义主版本、次版本和修订版本标签。有关语义标签的更多信息,请参见 "关于语义版本控制."
示例开发流程
以下是一个您可以遵循的示例流程,用于自动运行测试、创建版本并发布到 GitHub Marketplace,以及发布您的操作。
-
根据 GitHub 流程在分支中进行功能工作。有关更多信息,请参见 "GitHub 流程."
- 每当将提交推送到功能分支时,您的测试工作流程将自动运行测试。
-
创建到
main
分支的拉取请求以启动讨论和审查,并在准备好时合并。-
当从分支或 fork 打开拉取请求时,您的测试工作流程将再次运行测试,这次使用合并提交。
-
注意:出于安全原因,由分叉的
pull_request
触发的 workflow 具有受限的GITHUB_TOKEN
权限,无法访问密钥。如果您的测试或其他在拉取请求时触发的 workflow 需要访问密钥,请考虑使用其他事件,例如手动触发或pull_request_target
。有关更多信息,请参阅“触发 workflow 的事件”。
-
-
创建语义化标记的版本。您也可以通过简单的复选框发布到 GitHub Marketplace。有关更多信息,请参阅“在仓库中管理版本”和“在 GitHub Marketplace 中发布操作”。
结果
与其他一些自动版本管理策略不同,此过程有意不将依赖项提交到main
分支,而只提交到标记的版本提交。通过这样做,您可以鼓励您的操作用户引用命名标签或sha
,并且您可以通过在发布期间自己进行构建来帮助确保第三方拉取请求的安全性。
使用语义化版本意味着您的操作用户可以将他们的 workflow 固定到某个版本,并知道他们可能会继续收到最新的稳定、非破坏性功能,具体取决于他们的舒适程度。
与社区合作
GitHub 提供工具和指南来帮助您与开源社区合作。以下是一些我们建议您设置的工具,以实现健康的双向沟通。通过向社区提供以下信号,您可以鼓励其他人使用、修改和贡献您的操作
- 维护一个包含大量使用示例和指南的
README
。有关更多信息,请参阅“关于 README”。 - 在您的
README
文件中包含一个工作流状态徽章。有关更多信息,请参阅“添加工作流状态徽章”。还可以访问shields.io了解您可以添加的其他徽章。 - 添加社区健康文件,例如
CODE_OF_CONDUCT
、CONTRIBUTING
和SECURITY
。有关更多信息,请参阅“创建默认社区健康文件”。 - 通过使用诸如actions/stale之类的操作来保持问题最新。
- 使用 GitHub 的安全功能来传达有关漏洞的信息以及如何修复它们。有关更多信息,请参阅“使用 GitHub 的安全功能来保护您对 GitHub Actions 的使用”。
进一步阅读
采用类似模式的示例包括