在 GitHub Actions 中,理解工作流工件(Workflow Artifacts)和依赖缓存(Dependency Caching)的区别至关重要,因为它们用于不同的目的。工件用于保存工作流运行结束后需要保留或查看的文件,例如构建的二进制文件、日志或测试结果。而缓存则用于复用那些不常变化的依赖项,目的是加速后续工作流的运行速度。两者不能互换使用。

当需要为构建结果提供不可抵赖的溯源保证时,应使用“工件证明”(Artifact Attestations)功能。通过生成工件证明,可以创建加密签名的声明,用以确立构建的来源和完整性。这些声明包含的关键信息包括:与工件关联的工作流链接、仓库信息、组织信息、环境、提交 SHA 以及触发工件的事件。此外,还可以生成包含软件物料清单(SBOM)的工件证明,这为构建过程提供了透明度,有助于遵守数据保护标准。

需要特别注意的是,如果删除了一个工作流运行,所有与该运行关联的工件也会同步从存储中删除。

总结来说:
* **工件(Artifacts)**:用于保存和分享工作流运行结束后需要查看或使用的文件(如构建产物、日志)。
* **缓存(Caching)**:用于复用不常变化的依赖文件,以加速后续运行。
* **工件证明(Artifact Attestations)**:用于生成包含签名、仓库信息和 SBOM 等信息的声明,以提供构建过程的不可抵赖的溯源保证。

信息来源