Skip to content

check-profiles has never gated anything, and the projection is stale #119

Description

@catinspace-au

slim and single are projections of the Kubernetes tiers of the same name, and make check-profiles is what stops the two drifting. It has never actually gated one, and the projection is stale right now.

Two halves to it.

The check is skipped on every run

  • profile-projection in .github/workflows/ci.yml:134 is gated on profile-projection-precondition, which only says yes when the repo has a DFE_INFRA_TOKEN secret with read on hyperi-io/dfe-infra.
  • that secret does not exist, so the job reports skipped, not failure. Checked the last three runs on main -- 34733992141, 34732169077, 34581681437 -- Profile projection: skipped on all three.
  • the precondition job itself passes, so the run is green and the summary looks complete. The ::notice:: it prints is honest, and nobody reads notices on a green run.
  • make check-profiles with DFE_INFRA_DIR unset prints "projection NOT checked (not a pass)" and exits 0, which is the right local behaviour and the wrong CI behaviour.

The projection is stale

Run by hand, dfe-docker main (c748877) against dfe-infra main (96a44cbb):

render_profiles: service_profiles.yaml is STALE against the Kubernetes profiles -- run `make render-profiles`
--- committed
+++ rendered
@@ -32,6 +32,8 @@
         config_path: loader/kafka.yaml
       dfe-receiver:
         config_path: receiver/kafka.yaml
+      dfe-transform-elastic:
+        config_path: transform-elastic/kafka.yaml
       dfe-transform-vrl:
         config_path: transform-vrl/kafka.yaml

dfe-infra's tier carries dfe-transform-elastic and the compose projection does not. That is the ONE difference the check reports today -- I could not reproduce drift in the other direction, so treat "both ways" as unproven.

What to do about the token is the real question

  • a DFE_INFRA_TOKEN is one more credential to mint and rotate for a check that reads one public-in-future repo
  • the alternative is projecting from something dfe-docker already has -- a pinned copy of the profile input, refreshed by the same pin cycle that moves the app versions -- so the check runs on every PR with no secret at all
  • leaving it as is means the target exists, the job exists, and neither has ever said no

Done when the projection check runs on an ordinary PR with no operator setup and fails a stale service_profiles.yaml.

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

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions