我固定了 31 个 GitHub Actions 到提交 S... 笔记

我固定了 31 个 GitHub Actions 到提交 SHA。其中一个主要标签已滞后两个版本。

将 GitHub Actions 固定到特定的提交 SHA 对于安全性和稳定性至关重要,因为标签(tags)可能会被移动。这种做法可确保始终运行经过审查的精确代码,从而避免意外变更。在执行固定操作时,建议在 SHA 旁以注释形式包含发布版本,以便于人工阅读。若无需依赖 API 或外部博客即可找到对应 action 的正确 SHA,可使用 git ls-remote --tags 命令。该命令无速率限制,可获取仓库中的所有标签。输出将显示标签及其指向的提交;对于标注型标签(annotated tags),其对应的具体提交 SHA 会以 ^{} 后缀标识。在最近的一次打包工作中,发现现有 action 的使用存在三个常见问题:其一,某 action 的主标签严重滞后,指向的版本远早于其最新发布的版本;其二,另一 action 的主标签落后于其自身的近期发布,造成其已更新的假象;其三,部分 action 完全缺失主标签,迫使用户固定到 master 分支,而使用特定版本则更为安全。除固定操作外,在 GitHub Workflows 中实施安全最佳实践也至关重要。这包括设置限制性权限、配置并发控制以防止竞态条件,并确保部署等敏感操作不在拉取请求(pull requests)上运行。此外,避免使用 pull_request_target 是一项关键的安全措施。一套完整的、生产就绪的 GitHub Workflows 已可提供,其中融合了上述安全原则。这些工作流涵盖各类 CI/CD 任务,并设计为易于适配。通过简单的命令和配置,即可高效地完成 action 的固定及这些安全规则的落地。将 action 固定到 SHA 是构建整体安全态势的基础步骤。