generate

package
v0.2.0-rc.12 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 10, 2026 License: Apache-2.0 Imports: 11 Imported by: 0

Documentation

Index

Constants

View Source
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 NewCommand

func NewCommand() *cobra.Command

NewCommand creates the generate-workflow command

func ParseWorkflowInputs

func ParseWorkflowInputs(data []byte) ([]string, error)

ParseWorkflowInputs extracts input names from a workflow file

func ParseWorkflowOutputs

func ParseWorkflowOutputs(data []byte) ([]string, error)

ParseWorkflowOutputs extracts output names from a workflow file

func ParseWorkflowRequiredInputs

func ParseWorkflowRequiredInputs(data []byte) ([]string, error)

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

	// 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

func (*Generator) Generate

func (g *Generator) Generate() (string, error)

Generate creates the orchestration workflow content

func (*Generator) SetState added in v0.2.0

func (g *Generator) SetState(state map[string]*config.EnvState)

SetState threads the manifest state block into the generator so ${{ state.<env>.<field> }} input references resolve at generation time.

func (*Generator) Validate

func (g *Generator) Validate() []string

Validate checks for potential issues and returns warnings

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

func (*PromoteGenerator) SetState added in v0.2.0

func (g *PromoteGenerator) SetState(state map[string]*config.EnvState)

SetState threads the manifest state block into the promote generator so ${{ state.<env>.<field> }} input references resolve at generation time.

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 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

type WorkflowFile struct {
	Name string                 `yaml:"name"`
	On   map[string]interface{} `yaml:"on"`
}

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

type WorkflowOutput struct {
	Description string `yaml:"description"`
	Value       string `yaml:"value"`
}

WorkflowOutput represents an output value

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL