Repository navigation
feat: publish-fragment workflow and the render-diff step for deploy-kit projects - #136
Merged
Merged
Conversation
…d fail closed when latest cannot be read
2 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds the reusable
publish-fragmentworkflow an application repository calls on a release tag, and arender-diffaction that comments what a pull request's project-file change does to the Project's render. Both follow deploy-kit's worked workflows (spec/v1/examples/workflows/), and every decision in them is adeploy-kitcommand.publish-fragment.yml, one job:npm ci), and fails with a clear message if the pinned release ships no command;migration-proof.ymlbeside the project file when the caller names the artifact;deploy-kit validate, thendeploy-kit publishwith the release's version, and a per-file manifest;ghcr.io/<owner>/intent-<project>under the version, signs keyless, pulls back by digest, checks every file against the manifest and verifies the signature;compose.ymlin the Estate repository with a token minted for the dispatch App.latestonly moves forward. Publishing an older release again pushes it under its own tag and leaveslatestwhere it is, so a re-run cannot put an earlier fragment in front of composition.…/github-workflows/.github/workflows/publish-fragment.yml@…, and read the repository from the certificate.actions/render-diff: packs the project file at the base and at the head, composes the estate once with each in place of the Project's fragment, and diffs the Project's rendered artifact. The report is one comment per Project, replaced on every push. A head that composition would refuse or isolate fails the step, and the comment carries the codes instead of a diff.jqas a value, and only a comment that opens with it is replaced.latestfails closed. Only a registry answer of "not found" counts as a first publish. A registry that cannot be read, or alatestwith no release on it, stops the run before anything is pushed.deploy-kitthat records its calls, and stand-ins fororas,cosignandgh: argument passing, the manifest, the forward-onlylatest, every read-back and verification failure, the diff's shape, and the comment being replaced. The workflow is checked for expressions inside scripts, pinned actions and its permissions.actionlintandshellcheckpass.pack.shpacked thenotesexample, andrun.shcomposed an estate built from deploy-kit's worked examples: a changed memory request gave a two-file diff, an unlocked image gave the refusal withE_UNLOCKED_IMAGE, and an unchanged file reported no change.To know:
render-difftakes the estate's inputs already pulled. Pulling every participant, the Platform document and the pins is composition's own step, which JorisJonkers-dev/estate#2 builds. The action reads the directory that step leaves, so both use one layout.compose.ymlon the Estate repository is still the canary, so a dispatch today publishes the canary render.Part of JorisJonkers-dev/deploy-kit#195 and #135. The ticket stays open for its acceptance line: home-portal publishing through this on a tag.