开发者生态
morning
锁定您的 GitHub 操作
摘要
GitHub Actions now supports workflow lockfiles . Because GitHub Actions are fetched from Git, the previous advice was to pin to a full SHA instead of a tag. This is because tags are mutable and suscep...
actions
github
workflows
uses
lock
lint
checkout
j178
prek
action
2026-11-12
1 阅读
约10分钟阅读
gslin
字号:
GitHub Actions 现在支持工作流锁定文件。由于 GitHub Actions 是从 Git 获取的,因此之前的建议是固定到完整 SHA 而不是标签。这是因为标签是可变的,并且容易受到供应链攻击,攻击者将以前安全的标签指向恶意代码。例如,旧的工作流程如下所示: name : Lint on : [ Push, Pull_request, Workflow_dispatch] 权限 : {} env : FORCE_COLOR : 1 RUFF_OUTPUT_FORMAT : github jobs : lint : running-on : ubuntu-latest steps : - 使用 : actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with : persist-credentials : false - 使用 : j178/prek-action@44924fe9ef4a6f88253c4b6b1bf11c689d3ce53d # v3.1.0这是我设置锁定文件的方法。 Install # 将 gh-actions-lock 扩展安装到 gh CLI : $ gh extension install github/gh-actions-lock ✓ 安装扩展 github/gh-actions-lock Lock ’em # 在您的存储库中,运行: $ gh actions-lock ✓ 所有 1 个工作流程均有效 现在工作流程使用 vX.Y.Z 标签,如下所示: diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml 索引 946971c..3503607 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -13,7 +13,7 @@ 作业:运行:ubuntu-最新步骤: - - 使用: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + - 使用:actions/checkout@v7.0.1 with: persist-credentials: false - - 使用: j178/prek-action@44924fe9ef4a6f88253c4b6b1bf11c689d3ce53d # v3.1.0 + - 使用:j178/prek-action@v3.1.0 并且它在 .github/workflows/actions.lock 生成一个锁定文件: # 该文件是由 `gh actions-lock` 机器生成的。 # 不要手动编辑;运行“gh actions-lock”进行更新。 # 文档:https://gh.io/actions-lockfile 版本 : 'v0.0.3' 工作流程 : '.github/workflows/lint.yml' : - 'actions/checkout@v7.0.1' - 'j178/prek-action@v3.1.0' 依赖项 : 'actions/checkout@v7.0.1' : ref : 'v7.0.1'提交:'sha1-3d3c42e5aac5ba805825da76410c181273ba90b1'owner_id:44036562 repo_id:197814629'j178/prek-action@v3.1.0':参考:'v3.1.0' commit : 'sha1-44924fe9ef4a6f88253c4b6b1bf11c689d3ce53d' Owner_id : 10510431 repo_id : 1052387486 提交修改后的工作流程和新的锁定文件。 Renovate 和 Dependabot # 好消息,两者都已经支持锁定文件!您的定期更新也会更新锁定文件。记住使用冷却时间。验证#GitHub 还建议验证 CI 中的锁定文件,以确保其是最新的且未损坏。他们建议将此 verify-lockfile.yml 复制到您的存储库中。我决定将其放入我现有的 lint 工作流程中,但在其自己的工作中,以便它独立且并行运行: name : Lint on : [ Push, Pull_request, Workflow_dispatch] 权限 : {} env : FORCE_COLOR : 1 RUFF_OUTPUT_FORMAT : github jobs : lint : running-on : ubuntu-latest steps : - 使用 : actions/checkout@v7.0.1 with : persist-credentials : false - use : j178/prek-action@v3.1.0 # 当 .github/workflows/actions.lock 与工作流程不同步或锁定的 pin 不再验证上游时失败。 lockfile : running-on : ubuntu-slim env : GH_TOKEN : ${{ github.token }} 步骤 : - 使用 : actions/checkout@v7.0.1 with : persist-credentials : false - run : gh 扩展安装 github/gh-actions-lock --pin v0.4.1 - run : gh actions-lock --verify 注意我使用的是轻量级ubuntu-slim 跑步者在这里。此外,它固定到 v0.4.1;我们必须在某个时候更新它,或者找到一种自动化的方法。那是另一次了。不要忘记我们刚刚修改了工作流程中的操作,因此需要使用 gh actions-lock 重新锁定。如果添加到 lint.yml 实际上没有任何改变,因为它已经锁定 actions/checkout 。但如果您创建了一个新文件,例如 verify-lockfile.yml ,则需要重新锁定。 CI 会让你知道。 zizmor #zizmor 是 GitHub Actions 的安全 linter,强烈推荐。如果您不使用它,请使用它。 v1.32.0 之前的版本告诉您进行 hash-pin 操作,而 v1.32.0 是第一个支持锁定文件的版本。我在 prek 中使用 zizmor ,因此在 .pre-commit-config.yaml 中添加/更新 zizmor : - repo : https://github.com/zizmorcore/zizmor-pre-commit rev : v1.32.0 hooks : - id : zizmor 锁定! # 好的,提交并推送!示例 # 标题照片:史密森图书馆和档案馆中的《轴承》中的 Slaymaker Barry Co. 链轮锁
这篇文章对您有帮助吗?
订阅66必读
每日精选科技资讯,直达你的邮箱