跳至主要内容

发布和维护操作

您可以利用自动化和开源最佳实践来发布和维护操作。

简介

创建操作后,您可能希望继续发布新功能,同时处理社区贡献。本教程描述了一个您可以遵循的示例流程,以便在开源中发布和维护操作。该示例

  • 利用 GitHub Actions 进行持续集成、依赖项更新、发布管理和任务自动化。
  • 通过自动化测试和构建徽章提供信心。
  • 指示如何使用操作,理想情况下作为更广泛的工作流的一部分。
  • 表明您欢迎哪种类型的社区贡献。(例如,问题、拉取请求或漏洞报告。)

有关此过程的应用示例,请参阅actions/javascript-action

开发和发布操作

在本节中,我们将讨论开发和发布操作的示例过程,并展示如何使用 GitHub Actions 自动化该过程。

关于 JavaScript 操作

JavaScript 操作是带有元数据的 Node.js 代码库。但是,与传统的 Node.js 项目相比,JavaScript 操作具有其他属性。

  • 依赖项包与代码一起提交,通常以编译和压缩的形式存在。这意味着自动化构建和安全的社区贡献非常重要。

  • 标记的版本可以直接发布到 GitHub Marketplace,并可供 GitHub 上的工作流使用。

  • 许多操作都使用了 GitHub 的 API 和第三方 API,因此我们鼓励进行稳健的端到端测试。

设置 GitHub Actions 工作流

为了支持下一节中的开发人员流程,请向您的代码库添加两个 GitHub Actions 工作流。

  1. 添加一个工作流,当提交推送到功能分支或 main 分支,或创建拉取请求时触发。配置工作流以运行您的单元测试和集成测试。例如,请参阅此工作流
  2. 添加一个工作流,当发布或编辑版本时触发。配置工作流以确保语义标记到位。您可以使用类似于 JasonEtco/build-and-tag-action 的操作来编译和捆绑 JavaScript 和元数据文件,并强制推送语义主版本、次版本和修补程序版本标记。有关语义标记的更多信息,请参阅“关于语义版本控制”。

开发人员流程示例

这是一个您可以遵循的示例过程,以自动运行测试、创建版本并发布到 GitHub Marketplace,以及发布您的操作。

  1. 根据 GitHub 流程在分支中进行功能工作。有关更多信息,请参阅“GitHub 流程”。

    • 每当将提交推送到功能分支时,您的测试工作流都会自动运行测试。
  2. 创建到 main 分支的拉取请求以发起讨论和审查,并在准备好时合并。

    • 当从分支或 fork 打开拉取请求时,您的测试工作流将再次运行测试,这次将使用合并提交。

    • 注意:出于安全原因,由 fork 触发的 pull_request 触发的 workflow 具有受限的 GITHUB_TOKEN 权限,并且无法访问密钥。如果您的测试或其他在拉取请求时触发的 workflow 需要访问密钥,请考虑使用其他事件,例如手动触发pull_request_target。有关更多信息,请参阅“触发工作流的事件”。

  3. 创建语义标记的版本。您也可以使用简单的复选框发布到 GitHub Marketplace。有关更多信息,请参阅“管理代码库中的版本”和“在 GitHub Marketplace 中发布操作”。

    • 当发布或编辑版本时,您的版本工作流将自动处理编译和调整标记。

    • 我们建议使用语义版本标记(例如,v1.1.3)创建版本,并将主版本(v1)和次版本(v1.1)标记保持最新到最新的适当提交。有关更多信息,请参阅“关于自定义操作”和“关于语义版本控制”。

结果

与其他一些自动版本管理策略不同,此过程有意不会将依赖项提交到 main 分支,仅提交到标记的版本提交。通过这样做,您可以鼓励操作的用户引用命名标记或 sha,并且您可以通过在发布期间自行构建来帮助确保第三方拉取请求的安全。

使用语义版本意味着您的操作的用户可以将其工作流固定到某个版本,并知道他们可能会继续收到最新的稳定、非破坏性功能,具体取决于他们的舒适程度。

与社区合作

GitHub 提供工具和指南来帮助您与开源社区合作。以下是一些我们建议为健康的双向通信设置的工具。通过向社区提供以下信号,您可以鼓励其他人使用、修改和为您的操作做出贡献。

进一步阅读

采用类似模式的示例包括