DEV Community

Keith Azodeh
Keith Azodeh

Posted on Originally published at Medium Fully Autonomous

GitHub’s New Lockfiles Don’t Lock Every Workflow Reference

GitHub made Actions workflow lockfiles generally available on October 28. They let workflows keep readable action tags while executing recorded commits, including transitive action dependencies. That is useful protection against a moving reference. There is a boundary to check before calling a deployment locked: a call to a reusable workflow is not itself pinned by the caller’s action lockfile.

Disclosure: This article was generated and fact-checked with AI using the public sources linked here. It was published through an automated workflow and has not been reviewed by Keith.

GitHub’s dependency-lockfile documentation makes the distinction explicit. Calls to reusable workflows need full commit SHA references. A reusable workflow can have its own lockfile, and its action dependencies are covered by the repository where that workflow is defined, rather than by the calling repository’s lockfile. The review therefore crosses a repository boundary when the deployment does.

The Okeike Web Editor case study supplies a practical setting. The working editor, still under development, turns reviewed content changes into GitHub commits and follows the existing deployment pipeline to the relevant Firebase Hosting target. It also uses source-version fingerprints to recognize changes behind a draft. The case study does not claim adoption of the new lockfiles or describe a reusable-workflow arrangement. Consider the following as a proposed extension to its release review, not a report of a defect.

A content commit answers which source changed. It does not, by itself, identify every component that builds and publishes that source. If a shared deployment workflow can change independently, the site can keep the same source revision while the delivery procedure changes underneath it.

Follow the call into the other repository

Imagine a fictional multi-site publishing setup. Each site repository calls a shared deployment workflow maintained in a separate repository. The shared workflow builds the site and selects a hosting destination from the supplied configuration. Centralizing that procedure saves maintenance work across sites. It also introduces a revision that each caller must account for.

Start the review at the site’s workflow. Identify the reference used for the reusable workflow call. A branch name is convenient for distributing updates, but it is also a choice to follow future changes. If the intended release requires an explicit reviewed revision, use the full commit SHA as GitHub documents, then review how that reference will be updated.

Next, inspect the called workflow at that revision. Determine whether its own action dependencies are locked or otherwise pinned according to the team’s policy. A caller’s lockfile is not a substitute for that inspection. Record the called repository and revision with the release evidence so another operator can find the same procedure later.

Keep the claim narrow. GitHub also says an action lockfile does not control inputs, secrets, or the runner image, and that locking a dependency does not establish its safety. An accurately documented action dependency set is valuable without being a certificate for the entire build. Review other inputs according to what the deployment actually uses.

Make an update visible to the site owner

For the proposed multi-site setup, treat a shared-workflow revision change as a release change the site team can inspect. Explain what behavior changed, which callers it affects, and what evidence supports adopting it. Avoid hiding it among unrelated content edits simply because both changes live in YAML and Git commits.

A small rehearsal can use an isolated preview target and synthetic site content. First publish a harmless text change through the currently reviewed workflow revision. Record the site source commit, called workflow revision, intended target, and observed preview result. This is a proposed acceptance exercise, not a claim of testing Okeike’s current pipeline.

Then propose a deliberate update to the shared workflow in a separate review. Repeat the same publishing task against the preview target. Check the rendered content and destination, not just whether the job returned success. If the shared workflow handles more than one site layout, choose representative callers so the update exercises those differences.

Include an unchanged-source run where that helps isolate the workflow update. If the output changes, investigate the reason before calling the difference expected. The exercise does not prove byte-for-byte reproducibility: other build inputs may still vary. It gives the reviewer a focused comparison between delivery procedures with the source held steady.

There is an operating tradeoff. Pinning each caller to a reviewed revision prevents it from silently inheriting the next shared-workflow change, but updates now need distribution and ownership. Following a branch distributes fixes quickly while allowing independent movement. Choose that behavior deliberately, and make the update responsibility clear enough that pinned callers do not become forgotten callers.

For a content editor, the useful outcome is a release someone can explain: this source revision went through this reviewed deployment procedure to this target. GitHub’s new lockfiles improve one part of that account. Following the reusable-workflow boundary keeps the explanation honest when the pipeline leaves the site repository.

Top comments (0)