为个人使用创建了 GitHub 可复用工作流仓库

发布: (2026年2月23日 GMT+8 18:00)
4 分钟阅读
原文: Dev.to

Source: Dev.to

概述

GitHub Actions 的 可复用工作流 允许你从其他仓库调用工作流文件。
示例用法:

jobs:
  example:
    uses: masutaka/actions/.github/workflows/some-workflow.yml@main

将常用流程集中在一个仓库中,可减少在多个项目之间维护重复工作流文件的开销。

限制与注意事项

  • 私有 → 公有:私有仓库中的可复用工作流不能被公有仓库调用。
  • 同组织/用户:私有可复用工作流只能被同一用户或组织下的其他仓库调用。被调用仓库的 访问策略 必须相应配置。
  • 环境上下文:在调用工作流层级定义的 env 上下文 不会 传递到被调用的工作流。
  • 机密:只能通过 secrets: inherit 传递普通机密;环境机密无法转发。
  • 作业级执行:可复用工作流始终在 作业 级别运行(不能作为步骤使用)。每一次调用都会启动一个独立的 runner,文件系统在作业之间不共享。对于私有仓库,这也会增加 Actions 的分钟消耗。若想在步骤级别复用,请改为创建 复合动作

由于 masutaka/actions 是一个 公有 仓库,前两条限制不适用。

仓库内容

该仓库目前包含以下可复用工作流(每个工作流都有 docs/ 文档并在 README.md 中链接):

工作流文件描述
add_assignee_to_pr.yml当打开 PR 时,将 PR 创建者设为受理人
codeql.yml根据变更文件检测语言并运行 CodeQL 分析
codeql_core.yml为指定语言运行 CodeQL 分析
create_gh_issue.yml根据模板创建 GitHub Issue
dependency_review.yml审查 PR 的依赖关系
pushover.yml在工作流失败时发送 Pushover 通知

起源与定制

之前我使用的是 route06/actions 仓库(当时在前公司负责维护)。出于个人使用,我想做一些定制,尤其是新增 pushover.yml 工作流,于是把所需文件复制到一个新仓库:masutaka/actions

在此整合之前,同一个 pushover.yml 文件在多个个人仓库中被复制。将所有内容迁移到单一仓库后,后续更新只需在一个地方完成。

许可证与归属

原仓库和新仓库均采用 MIT 许可证。对每个复制的工作流文件,我在文件顶部添加了归属声明,例如:

# Derived from https://github.com/route06/actions/blob/main/.github/workflows/codeql.yml
# Copyright (c) 2024 ROUTE06, Inc.
# Licensed under the MIT License.

LICENSE 文件中包含了两条版权声明:

Copyright (c) Takashi Masuda
Copyright (c) 2024 ROUTE06, Inc.

这满足了 MIT 许可证对归属的要求。

未来计划

随着我的个人仓库不断增多,我计划继续在 masutaka/actions 中添加和完善可共享的工作流,以进一步降低重复工作和维护成本。

参考资料

0 浏览
Back to Blog

相关文章

阅读更多 »