为个人使用创建了 GitHub 可复用工作流仓库
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 中添加和完善可共享的工作流,以进一步降低重复工作和维护成本。