Skip to content

[P3] release-republish repairs only the manager image, not the agent #46

Description

@jacaudi

.github/workflows/release-republish.yml is the manual repair path for a release image — retag a known-good digest, or rebuild from the tag. It handles the manager only. This repo publishes two images.

Why it matters

The failure lands at the worst possible moment. This workflow exists to be reached for during an incident, so a gap in it is not discovered until someone is already repairing a bad release.

Both jobs take a single hardcoded image:

    env:
      IMAGE: ghcr.io/jacaudi/wireguard-operator/manager
  rebuild:
    uses: ./.github/workflows/ci-build.yml
    with:
      image: ghcr.io/jacaudi/wireguard-operator/manager
      file: images/manager/Dockerfile

So there is no supported way to repair ghcr.io/jacaudi/wireguard-operator/agent. That is not hypothetical: the manager's --agent-image default names a versioned agent tag, so a bad or missing agent tag is a broken deployment even when the manager image is perfect.

Why it was left as-is in #43

Three things would each need a second dimension, and none of them is one line:

  • retag and rebuild both need an image selector threaded through.
  • smoke runs task smoke, which asserts the manager binary specifically — it greps the --help output for -agent-image. Pointed at the agent it would fail, correctly, for the wrong reason.
  • ci-build.yml needs the matching file: per image.

That is real work with no incident asking for it, so #43 recorded the limit in the file instead, with the manual fallback:

docker buildx imagetools create \
  -t ghcr.io/jacaudi/wireguard-operator/agent:vX.Y.Z \
  ghcr.io/jacaudi/wireguard-operator/agent:sha-<short>

What a fix looks like

Add an image choice input (manager / agent / both) and map it to the name, Dockerfile and smoke behaviour. The smoke half is the part that needs a decision rather than a keystroke: either give task smoke a per-image mode, or skip smoke for the agent and say so explicitly rather than silently.

Worth doing together with, or after, whatever teaches the pipeline to smoke-test the agent at all — ci.yaml's smoke job is manager-only for the same reason, which is the more routine version of this same gap.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions