Skip to content

feat: Add Crossplane Composition render pipeline (ADR-014) - #4

Merged
davetashner merged 1 commit into
mainfrom
feat/composition-render-pipeline
Feb 16, 2026
Merged

davetashner merged 1 commit into
mainfrom
feat/composition-render-pipeline

Conversation

@davetashner

Copy link
Copy Markdown
Owner

Summary

  • Replace envsubst-based template pipeline with crossplane render for build-time Composition expansion
  • Claims are expanded into 19 individual managed resource YAMLs per environment
  • ConfigHub stores fully-expanded resources for resource-level visibility, diffs, rollback, and policy enforcement
  • CI workflow rewritten to render all overlays with matrix strategy
  • Demo script updated to reflect the expanded-resource workflow

Evidence

Local render produces 19 resources and passes validation:

=== Rendering Composition for dev-east ===
Step 1: Building Kustomize overlay...
Step 2: Converting Claim to XR...
Step 3: Running crossplane render...
Step 4: Splitting into individual resource files...
  api-handler.yaml (Function)
  api-role.yaml (Role)
  api-role-policy.yaml (RolePolicy)
  bucket.yaml (Bucket)
  bucket-cors.yaml (BucketCorsConfiguration)
  bucket-ownership.yaml (BucketOwnershipControls)
  bucket-policy.yaml (BucketPolicy)
  bucket-public-access.yaml (BucketPublicAccessBlock)
  bucket-website.yaml (BucketWebsiteConfiguration)
  eventbridge-permission.yaml (Permission)
  eventbridge-rule.yaml (Rule)
  eventbridge-target.yaml (Target)
  function-url.yaml (FunctionURL)
  function-url-invoke-permission.yaml (Permission)
  function-url-permission.yaml (Permission)
  snapshot-role.yaml (Role)
  snapshot-role-policy.yaml (RolePolicy)
  snapshot-writer.yaml (Function)
  table.yaml (Table)

=== Render Complete ===
  Resources: 19

PASSED: All policy checks passed

Test plan

  • CI workflow triggers on PR (path filter matches infra/claims/**)
  • crossplane render step installs and runs in GitHub Actions
  • Policy validation passes on rendered output
  • ConfigHub preview step shows 19 units for dev-east

🤖 Generated with Claude Code

Replace envsubst-based template pipeline with crossplane render.
Claims are now expanded through the Composition at build time,
producing 19 individual managed resource YAMLs per environment.
ConfigHub stores fully-expanded resources for resource-level
visibility, diffs, rollback, and policy enforcement.

Changes:
- Add scripts/render-composition.sh (core pipeline script)
- Rewrite CI workflow to use crossplane render
- Update validate-policies.sh for kind-based resource detection
- Add awsAccountId to all Kustomize overlays
- Write ADR-014 (supersedes ADR-010)
- Deprecate publish-claims.sh and publish-messagewall.sh
- Update demo script for expanded-resource workflow
- Fix crossplane CLI v2.x compatibility (render vs beta render)

Signed-off-by: Dave Tashner <davetashner@users.noreply.github.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@davetashner
davetashner merged commit fc89d4e into main Feb 16, 2026
3 of 6 checks passed

This branch was previously deployed

1 inactive deployment
dev — 3ea68587 Deployed Feb 16, 2026 by davetashner via render-and-publish (dev-east) #8
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant