Goal
Stop each consumer from copying and maintaining its own post-kit-publish CI wiring. PostKit owns the Blob store (tenants/{tenant}/{env}/templates/…); consumers should call a PostKit-published reusable workflow / composite action (plus any shared compile helper) instead of forking docs/examples/publish-email-templates.yml and local compile scripts.
InkAds marketing already landed a one-off consumer implementation (poc-inkads-marketing #100 / PR #111). That should become a thin caller of whatever PostKit ships here, then be slimmed.
Scope
In scope
- Publish a reusable GitHub Actions workflow and/or composite action from
singleton-sd/post-kit that:
- Compiles
content/email-templates/** (fail CI on compile errors; no upload)
- On publishing branches /
workflow_dispatch, runs post-kit-publish with OIDC (azure/login + DefaultAzureCredential)
- Writes only under
tenants/{tenant}/{environment}/templates/{key}/ on PostKit-owned storage (account/container configured by PostKit; not a per-consumer Blob account)
- Accept consumer inputs such as:
tenant, templates-path (default content/email-templates), environment selection rules, optional storage overrides only if PostKit moves the store
- Document the single integration path in
docs/guides/template-publishing.md (replace “copy this example YAML into every consumer”)
- Optionally expose the same compile helper as a package script / small CLI used by the workflow so local
pnpm templates:compile-style checks stay consistent
- Migration note for consumers (InkAds first): replace inlined workflow/scripts with a one-liner
uses: singleton-sd/post-kit/.github/workflows/…@vX
Out of scope
Acceptance criteria
Dependencies
Parent: (none — Infra/CI + Docs; related to template publishing, not #138)
Related consumer proof:
Constraints
- Blob storage remains PostKit-owned; consumers publish into
tenants/<tenant>/… only
- No storage account keys, connection strings, SAS, or
AZURE_CREDENTIALS secrets
- Keep fail-fast compile semantics of
post-kit-publish (no upload if any template fails)
- Public repo: no secrets or commercially sensitive content in the issue or samples
Technical references
Agent-ready checklist
Goal
Stop each consumer from copying and maintaining its own
post-kit-publishCI wiring. PostKit owns the Blob store (tenants/{tenant}/{env}/templates/…); consumers should call a PostKit-published reusable workflow / composite action (plus any shared compile helper) instead of forkingdocs/examples/publish-email-templates.ymland local compile scripts.InkAds marketing already landed a one-off consumer implementation (
poc-inkads-marketing#100 / PR #111). That should become a thin caller of whatever PostKit ships here, then be slimmed.Scope
In scope
singleton-sd/post-kitthat:content/email-templates/**(fail CI on compile errors; no upload)workflow_dispatch, runspost-kit-publishwith OIDC (azure/login+DefaultAzureCredential)tenants/{tenant}/{environment}/templates/{key}/on PostKit-owned storage (account/container configured by PostKit; not a per-consumer Blob account)tenant,templates-path(defaultcontent/email-templates), environment selection rules, optional storage overrides only if PostKit moves the storedocs/guides/template-publishing.md(replace “copy this example YAML into every consumer”)pnpm templates:compile-style checks stay consistentuses: singleton-sd/post-kit/.github/workflows/…@vXOut of scope
POSTKIT_API_KEY, storage keys, or connection strings in GitHub SecretsAcceptance criteria
poc-inkads-marketing)Dependencies
Parent: (none — Infra/CI + Docs; related to template publishing, not #138)
Related consumer proof:
Constraints
tenants/<tenant>/…onlyAZURE_CREDENTIALSsecretspost-kit-publish(no upload if any template fails)Technical references
docs/examples/publish-email-templates.ymldocs/guides/template-publishing.md@singleton-sd/post-kit-publisher(post-kit-publish)poc-inkads-marketing.github/workflows/publish-email-templates.yml+scripts/compile-email-templates.mjsAgent-ready checklist
Depends on)