Add update-plugin-index reusable workflow#84
Merged
Conversation
Opens a PR against a datumctl plugin catalog whenever a service repo publishes a release, bumping the plugin manifest to the new version: sets spec.version, rewrites each platform download URL to the new tag, and refreshes each sha256 from the release checksums.txt. The archive-to-checksum mapping is driven off the basenames of the manifest's existing platforms[].uri values, so it is generic across plugins. index.yaml regeneration is left to the catalog's own generator.
This was referenced Jul 1, 2026
ecv
approved these changes
Jul 1, 2026
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.
Automates keeping the datumctl plugin catalog in sync with service releases.
Today, after a service publishes a release, someone hand-edits the plugin manifest in the catalog (
plugins/<name>.yaml) to bump the version and paste in the new download URLs and checksums. This reusable workflow does that automatically.What it does
Given a plugin name, a catalog repo, and a release tag, it:
checksums.txt.spec.versionto the release tag.urito the new tag and refreshessha256fromchecksums.txt.index.yamlon merge.It fails loudly if
checksums.txtis missing or an expected archive is not listed in it.Generic across plugins
The archive→checksum mapping is driven entirely off the basenames of the manifest’s existing
platforms[].urivalues (goreleaser archive names carry no version, so basenames are stable across releases). Nothing about a specific plugin — name, prefix, or archive layout — is hardcoded.Interface
Inputs:
index-repo(required),plugin-name(required),version(required),plugin-file(defaultplugins/<plugin-name>.yaml),release-repo(default: calling repo),base-branch(defaultmain).Secret:
PLUGIN_INDEX_TOKEN(required) — a PAT or GitHub App token withcontents:write+pull-requests:writeon the catalog repo. A caller’s built-inGITHUB_TOKENis scoped to its own repo and cannot open a cross-repo PR.Notes
docs/update-plugin-index/.milo-os/ipam, which references this branch until a tagged release is cut.Cut a new release tag after merge so consumers can pin a version.
Related work