Documentation
¶
Index ¶
- Constants
- func GenerateLocalActions(baseDir string, cfg *config.TrunkConfig) error
- func NewCommand() *cobra.Command
- func ParseWorkflowInputs(data []byte) ([]string, error)
- func ParseWorkflowOutputs(data []byte) ([]string, error)
- func ParseWorkflowRequiredInputs(data []byte) ([]string, error)
- type CallbackInfo
- type DependencyGraph
- type ExternalUpdateGenerator
- type Generator
- type MergeQueueGenerator
- type PRPreviewGenerator
- type PromoteGenerator
- type ReleaseGenerator
- type ValidateCheckGenerator
- type WorkflowCallConfig
- type WorkflowFile
- type WorkflowInput
- type WorkflowOutput
Constants ¶
const DefaultJobTimeoutMinutes = 30
DefaultJobTimeoutMinutes is the timeout-minutes applied to cascade-owned jobs (setup, finalize, inline run: callbacks, retry shims, and passthrough artifact helper jobs) when config.job_timeout_minutes is not set. GitHub Actions defaults jobs to 360 minutes (6 hours); cascade's orchestration jobs are meant to be fast, so a hung git push, CLI download, or API call should not hold a runner for six hours. Override per manifest via config.job_timeout_minutes.
Variables ¶
This section is empty.
Functions ¶
func GenerateLocalActions ¶
func GenerateLocalActions(baseDir string, cfg *config.TrunkConfig) error
GenerateLocalActions creates the local action files in the user's repo Uses cfg.GetActionFolder() for the folder name (default: "manage-release")
func ParseWorkflowInputs ¶
ParseWorkflowInputs extracts input names from a workflow file
func ParseWorkflowOutputs ¶
ParseWorkflowOutputs extracts output names from a workflow file
func ParseWorkflowRequiredInputs ¶
ParseWorkflowRequiredInputs extracts required input names from a workflow file An input is required if it has required: true and no default value
Types ¶
type CallbackInfo ¶
type CallbackInfo struct {
Name string // Original name from config (e.g., "app")
JobID string // Prefixed job ID (e.g., "build-app")
DisplayName string // Display name (e.g., "Build (app)")
Type string // "build" or "deploy" or "validate"
Workflow string
Run string // Inline command; when set the callback is emitted as a cascade-owned inline-step job instead of a reusable-workflow call
Shell string // Shell for the inline run step (default bash; only meaningful with Run)
RunPolicy string
OnFailure string
Retries int
TimeoutMinutes int // Job-level timeout-minutes (omitted when 0)
Matrix *config.MatrixConfig // Build fan-out; nil for deploys and validate
SupportsDryRun bool // When true, dry-run promotes invoke the callback with dry_run: true instead of skipping it
// Per-callback job attributes for cascade-owned inline run: jobs. These are
// emitted only on inline-run jobs (never on reusable-workflow uses: callbacks,
// where GHA forbids runs-on/concurrency); schema validation already rejects
// runs_on/concurrency on reusable callbacks.
RunsOn *config.RunsOn // Per-callback runner selection (#12)
Permissions map[string]string // Per-callback job permissions, incl. id-token: write OIDC (#35, #15)
Concurrency *config.ConcurrencyConfig // Per-callback concurrency override (#17)
// PassthroughArtifact declares GHA artifact upload/download steps to inject
// around this job's callback invocation, enabling inter-job artifact passing
// within a single orchestrate run (#16).
PassthroughArtifact *config.PassthroughArtifact
}
CallbackInfo holds information about a callback
type DependencyGraph ¶
type DependencyGraph struct {
Nodes map[string]CallbackInfo // job ID -> info
Edges map[string][]string // job ID -> hard dependencies (as job IDs)
// OptionalEdges holds optional_depends_on edges (job ID -> dependencies as
// job IDs). Optional deps add to a job's needs: for ordering but do NOT
// contribute a skip-gate to its if: condition — the job still runs when an
// optional dep was skipped because its triggers didn't match (#18).
OptionalEdges map[string][]string
}
DependencyGraph represents the callback dependency graph Uses prefixed job IDs (build-app, deploy-app) to allow name reuse across sections
func BuildDependencyGraph ¶
func BuildDependencyGraph(cfg *config.TrunkConfig) *DependencyGraph
BuildDependencyGraph creates a dependency graph from config Uses prefixed job IDs to support same names in builds and deploys
func (*DependencyGraph) GetAllDependencies ¶
func (g *DependencyGraph) GetAllDependencies(node string) []string
GetAllDependencies returns all transitive dependencies for a node
func (*DependencyGraph) GetDirectDependencies ¶
func (g *DependencyGraph) GetDirectDependencies(node string) []string
GetDirectDependencies returns only direct (hard) dependencies for a node
func (*DependencyGraph) GetOptionalDependencies ¶ added in v0.2.0
func (g *DependencyGraph) GetOptionalDependencies(node string) []string
GetOptionalDependencies returns the optional_depends_on dependencies for a node. These add to needs: for ordering only; they do not skip-gate the job.
func (*DependencyGraph) TopologicalSort ¶
func (g *DependencyGraph) TopologicalSort() ([]string, error)
TopologicalSort returns nodes in dependency order
type ExternalUpdateGenerator ¶
type ExternalUpdateGenerator struct {
// contains filtered or unexported fields
}
ExternalUpdateGenerator handles external-update workflow generation
func NewExternalUpdateGenerator ¶
func NewExternalUpdateGenerator(cfg *config.TrunkConfig, baseDir string) *ExternalUpdateGenerator
NewExternalUpdateGenerator creates a new external-update workflow generator
func (*ExternalUpdateGenerator) Generate ¶
func (g *ExternalUpdateGenerator) Generate() (string, error)
Generate creates the external-update workflow content
type Generator ¶
type Generator struct {
// contains filtered or unexported fields
}
Generator handles workflow file generation
func NewGenerator ¶
func NewGenerator(cfg *config.TrunkConfig, baseDir string) *Generator
NewGenerator creates a new workflow generator
type MergeQueueGenerator ¶ added in v0.2.0
type MergeQueueGenerator struct {
// contains filtered or unexported fields
}
MergeQueueGenerator emits the opt-in merge-queue validation lane. When config.merge_queue.enabled is set, cascade generates a merge_group-triggered workflow that validates the prospective trunk commit with cascade's own logic: it runs `cascade parse-config` as a validity gate and a dry-run `cascade orchestrate setup` to preview the build/deploy decisions against the merge-group candidate ref. The lane is read-only — no state writes, no releases, no deploys — and reports a status the merge queue can require.
This generator owns the LANE behavior. The raw merge_group trigger itself is expressible separately under extra_triggers.merge_group; the two are intentionally distinct.
func NewMergeQueueGenerator ¶ added in v0.2.0
func NewMergeQueueGenerator(cfg *config.TrunkConfig, baseDir string) *MergeQueueGenerator
NewMergeQueueGenerator creates a merge-queue validation-lane generator.
func (*MergeQueueGenerator) Enabled ¶ added in v0.2.0
func (g *MergeQueueGenerator) Enabled() bool
Enabled reports whether the manifest opts in to the merge-queue lane.
func (*MergeQueueGenerator) Generate ¶ added in v0.2.0
func (g *MergeQueueGenerator) Generate() (string, error)
Generate renders the merge-queue validation-lane workflow.
type PRPreviewGenerator ¶ added in v0.2.0
type PRPreviewGenerator struct {
// contains filtered or unexported fields
}
PRPreviewGenerator emits the opt-in read-only PR plan-preview workflow (#40).
The workflow runs on pull_request and is strictly read-only: it validates the manifest, detects which builds/deploys this merge would trigger against the PR diff, and dry-runs the applicable deploy callbacks, then writes a human-readable plan to $GITHUB_STEP_SUMMARY. When Comment is set it also posts (or updates) that plan as a PR comment via actions/github-script.
dry_run is enforced (--dry-run is always passed, never sourced from an input) so the preview can never create a release, write state, or trigger a deploy.
func NewPRPreviewGenerator ¶ added in v0.2.0
func NewPRPreviewGenerator(cfg *config.TrunkConfig, baseDir string) *PRPreviewGenerator
NewPRPreviewGenerator creates a new PR plan-preview workflow generator.
func (*PRPreviewGenerator) Generate ¶ added in v0.2.0
func (g *PRPreviewGenerator) Generate() (string, error)
Generate creates the PR plan-preview workflow content.
type PromoteGenerator ¶
type PromoteGenerator struct {
// contains filtered or unexported fields
}
PromoteGenerator handles promote workflow generation
func NewPromoteGenerator ¶
func NewPromoteGenerator(cfg *config.TrunkConfig, baseDir string) *PromoteGenerator
NewPromoteGenerator creates a new promote workflow generator
func (*PromoteGenerator) Generate ¶
func (g *PromoteGenerator) Generate() (string, error)
Generate creates the promote workflow content
type ReleaseGenerator ¶
type ReleaseGenerator struct {
// contains filtered or unexported fields
}
ReleaseGenerator handles release workflow generation for single-environment projects
func NewReleaseGenerator ¶
func NewReleaseGenerator(cfg *config.TrunkConfig, baseDir string) *ReleaseGenerator
NewReleaseGenerator creates a new release workflow generator
func (*ReleaseGenerator) Generate ¶
func (g *ReleaseGenerator) Generate() (string, error)
Generate creates the release workflow content for single-environment projects
type ValidateCheckGenerator ¶ added in v0.2.0
type ValidateCheckGenerator struct {
// contains filtered or unexported fields
}
ValidateCheckGenerator emits the opt-in manifest-validation PR check. When config.validate_check.enabled is set, cascade generates a lightweight pull_request workflow that runs `cascade parse-config` against the manifest and fails when the manifest is invalid, so a malformed configuration cannot merge to trunk. The check validates cascade's own configuration only: it does not run the consumer's build/test CI, requests contents: read alone, and has no dry-run or comment side effects.
func NewValidateCheckGenerator ¶ added in v0.2.0
func NewValidateCheckGenerator(cfg *config.TrunkConfig, baseDir string) *ValidateCheckGenerator
NewValidateCheckGenerator creates a manifest-validation PR-check generator.
func (*ValidateCheckGenerator) Enabled ¶ added in v0.2.0
func (g *ValidateCheckGenerator) Enabled() bool
Enabled reports whether the manifest opts in to the validation check.
func (*ValidateCheckGenerator) Generate ¶ added in v0.2.0
func (g *ValidateCheckGenerator) Generate() (string, error)
Generate renders the manifest-validation PR-check workflow.
type WorkflowCallConfig ¶
type WorkflowCallConfig struct {
Inputs map[string]WorkflowInput `yaml:"inputs"`
Outputs map[string]WorkflowOutput `yaml:"outputs"`
}
WorkflowCallConfig represents the workflow_call trigger configuration
type WorkflowFile ¶
WorkflowFile represents a GitHub Actions workflow file structure
type WorkflowInput ¶
type WorkflowInput struct {
Type string `yaml:"type"`
Description string `yaml:"description"`
Required bool `yaml:"required"`
Default interface{} `yaml:"default"`
}
WorkflowInput represents an input parameter
type WorkflowOutput ¶
WorkflowOutput represents an output value