Revise deploy-action design: layered, adapter-independent, app-provided CLI#315
Closed
aram356 wants to merge 2 commits into
Closed
Revise deploy-action design: layered, adapter-independent, app-provided CLI#315aram356 wants to merge 2 commits into
aram356 wants to merge 2 commits into
Conversation
… CLI Restructure the GitHub Actions deploy design into three composable layers (build-cli, deploy-core engine scripts, minimal deploy-fastly wrapper) and generalize the docs beyond Fastly-only / Trusted-Server-only. Key design changes: - build-cli compiles the CLI package the *application* provides (a crate in the app's own workspace), built from the app checkout with an isolated CARGO_TARGET_DIR and --locked so it never dirties the tree; publishes a self-describing tar (cli-meta.json) so the executable bit survives. - deploy-core is adapter-independent shared scripts sourced by wrappers via $GITHUB_ACTION_PATH; provider names/creds/flags arrive only via provider-env, provider-env-clear, deploy-flags, deploy-args. - Distinguish Git root (revision + dirty check) from Cargo workspace root (target/ + Cargo.lock + cache) for correct monorepo caching. - No Python in CI; actionlint + zizmor from pinned release binaries; third-party actions pinned to readable released tags. - Make the Fastly build-in-deploy credential caveat explicit (trusted refs). - Rename the Trusted Server migration plan to a general adoption guide for any EdgeZero app repo, with same-repo/separate-repo/monorepo examples and a private-repo token note.
bd1a16e to
5590818
Compare
…wording - provider-env is now bound only to the deploy step's own env:, never a job/engine-global variable, so setup/build never hold the secret-bearing blob (unsetting inner names did not remove the outer JSON var). provider-env-clear is reframed as defense-in-depth against inherited caller env:. - Acceptance criteria and adoption guide now reference the Cargo workspace root (not the Git root) for target/ caching and Cargo.lock, matching §11. - Align stale 'caller-selected CLI' wording with the app-provided model.
Contributor
Author
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.
Summary
Stacked on top of #303. Revises the GitHub Actions deploy design docs (spec,
implementation plan, adoption guide) — no runtime code yet. Restructures the
Fastly-only v0 design into a layered, adapter-independent one and threads through
six goals plus several review rounds.
What changed
build-cli— compiles the CLI the application provides (a crate in theapp's own workspace), from the app checkout, with an isolated
CARGO_TARGET_DIRand--lockedso it never dirties the tree; publishes aself-describing tar (
cli-meta.json) so the executable bit survives.deploy-core— adapter-independent shared engine scripts sourced bywrappers via
$GITHUB_ACTION_PATH/../deploy-core; provider names, creds, andflags arrive only via
provider-env,provider-env-clear,deploy-flags,deploy-args.deploy-fastly— minimal wrapper that types Fastly credentials and calls theengine.
adaptersinput; the app's ownCargo.tomlpins adapters. Guarantees CLI ↔ app schema agreement.
target/+Cargo.lock+ caching use the Cargo workspace root, so monoreposcache the right artifacts.
actionlint+zizmorfrom pinned release binaries;third-party actions pinned to readable released tags (
@v4).token in scope, so trusted immutable refs are required.
for any EdgeZero app repo (same-repo / separate-repo / monorepo examples,
private-repo token note); Trusted Server is one worked example.
Docs
docs/specs/edgezero-deploy-github-action.md— the spec (restructured)docs/specs/edgezero-deploy-action-implementation-plan.md— the plandocs/specs/edgezero-deploy-adoption-guide.md— renamed from the TrustedServer migration plan, generalized
Validation
cd docs && npx prettier --check specs/…— passesNotes
Base branch is
feature/edgezero-actions(#303). Retarget tomainif #303merges first.