SOUP: three reusable workflows for third-party component monitoring - #54
Open
grafele wants to merge 3 commits into
Open
SOUP: three reusable workflows for third-party component monitoring#54grafele wants to merge 3 commits into
grafele wants to merge 3 commits into
Conversation
Counterpart to QuickBirdEng/actions#51, which adds the actions these call. Each product repository gets a thin caller that owns the trigger — the same shape as soup-version-check.yml. soup-sbom.yml produce the inventory of a tagged build and assess it soup-kev-monitor.yml daily: is the version in production affected today soup-backstop.yml periodic reconciliation of what did not happen `on: workflow_call` only, deliberately. A reusable workflow that also declares workflow_dispatch takes its inputs from the dispatch form, so `product` arrives empty and `runs-on` arrives as an empty string — fromJSON('') then fails the job before any step runs. The manual trigger belongs in the caller. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
grafele
force-pushed
the
actions/dev-195-soup-workflows
branch
from
August 5, 2026 14:06
47df6d6 to
c280a66
Compare
…published without it Counterpart to the code-review fixes in QuickBirdEng/actions#51. The action learned a release-tag input because github.ref_name is the default branch under workflow_run, but this workflow never passed it: the whole normal trigger path produced branch-tier bundles that were never attached to a release and were stored under the branch prefix. `version` is documented as the release tag, so it is passed through as such. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Author
|
The code review of QuickBirdEng/actions#51 found that this workflow never passed |
The e2e runs proved the self-hosted runners ship no gh, and both the monitor and the publish step need it. One pinned download into RUNNER_TOOL_CACHE, persistent on self-hosted, a no-op once runner images provision gh themselves. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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.
The three reusable workflows for third-party component monitoring. Counterpart to
QuickBirdEng/actions#51, which adds the actions they call and the Work Instruction that
governs the process. Merge this one first: a product caller referencing
QuickBirdEng/workflows/.github/workflows/soup-sbom.yml@mainfails until the file is onmain.soup-sbom.ymlactions/soup-discoverysoup-kev-monitor.ymlactions/kev-monitorsoup-backstop.ymlon: workflow_callonly, deliberatelyA reusable workflow that also declares
workflow_dispatchtakes its inputs from whichever triggerfired. On a manual run
productarrives empty andruns-onarrives as an empty string, andfromJSON('')fails the job before any step executes.soup-kev-monitor.ymlhad exactly that shapeand its manual path was broken.
The trigger belongs in the product caller, which is also how
soup-version-check.ymlis wired. Thecallers are staged in the actions PR under
patches/product-repo/:soup-sbom.ymlworkflow_runof the product's release workflow, completed and successful;workflow_dispatchwith a tagsoup-kev-monitor.ymlschedule, daily at a per-product minute;workflow_dispatchsoup-backstop.ymlschedule, quarterly for tier Extended or annually for Basic;workflow_dispatchwith a windowWhy the SBOM workflow waits for the release workflow
Not
push: tags. The release workflow is what pushes the images of the tag, and the pipeline scans animage by pulling it and recording the digest of what it pulled. Starting alongside the release would
record every one of our own images as a gap.
Making
soup-sbom.ymla final job of each release workflow instead removes the ordering questionaltogether, at the cost of editing every release path. Either is fine; the
workflow_runvariant needsno change to an existing workflow. Happy to switch if you prefer the other.
Secrets
All declared
required: false, and each absence has a defined consequence rather than a failure:DO_ACCESS_KEY/DO_SECRET_KEYSLACK_BOT_TOKENREGISTRY_USERNAME/REGISTRY_PASSWORD