ci

package
v0.7.3 Latest Latest
Warning

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

Go to latest
Published: Mar 26, 2026 License: MIT Imports: 1 Imported by: 0

Documentation

Overview

Package ci provides shared CI/CD types and interfaces for provider-agnostic plan result handling and PR/MR comment rendering.

Index

Constants

View Source
const CommentMarker = "<!-- terraci-plan-comment -->"

CommentMarker is used to identify terraci comments for updates

Variables

This section is empty.

Functions

This section is empty.

Types

type CommentService

type CommentService interface {
	IsEnabled() bool
	UpsertComment(body string) error
}

CommentService defines the interface for posting plan summaries to PRs/MRs

type ModulePlan

type ModulePlan struct {
	ModuleID          string
	ModulePath        string
	Components        map[string]string
	Status            PlanStatus
	Summary           string // Compact summary e.g., "+2 ~1 -1"
	StructuredDetails string // Structured resource list by action (markdown)
	RawPlanOutput     string // Filtered raw plan output (diff only)
	Error             string // Error message if plan failed
	Duration          time.Duration
	// Cost estimation fields
	CostBefore float64 // Monthly cost before changes (USD)
	CostAfter  float64 // Monthly cost after changes (USD)
	CostDiff   float64 // Cost difference (after - before)
	HasCost    bool    // True if cost was calculated
}

ModulePlan represents terraform plan output for a single module

func (*ModulePlan) Get

func (p *ModulePlan) Get(name string) string

Get returns the value of a named component from the Components map.

type PlanResult

type PlanResult struct {
	ModuleID          string            `json:"module_id"`
	ModulePath        string            `json:"module_path"`
	Components        map[string]string `json:"components,omitempty"`
	Status            PlanStatus        `json:"status"`
	Summary           string            `json:"summary"`
	StructuredDetails string            `json:"structured_details,omitempty"`
	RawPlanOutput     string            `json:"raw_plan_output,omitempty"`
	Error             string            `json:"error,omitempty"`
	ExitCode          int               `json:"exit_code"`
	// Cost estimation fields
	CostBefore float64 `json:"cost_before,omitempty"`
	CostAfter  float64 `json:"cost_after,omitempty"`
	CostDiff   float64 `json:"cost_diff,omitempty"`
	HasCost    bool    `json:"has_cost,omitempty"`
}

PlanResult represents the result of a terraform plan for a single module

func (*PlanResult) Get

func (r *PlanResult) Get(name string) string

Get returns the value of a named component from the Components map.

type PlanResultCollection

type PlanResultCollection struct {
	Results     []PlanResult `json:"results"`
	PipelineID  string       `json:"pipeline_id,omitempty"`
	CommitSHA   string       `json:"commit_sha,omitempty"`
	GeneratedAt time.Time    `json:"generated_at"`
}

PlanResultCollection is a collection of plan results from multiple jobs

func (*PlanResultCollection) ToModulePlans

func (c *PlanResultCollection) ToModulePlans() []ModulePlan

ToModulePlans converts plan results to ModulePlan for comment rendering

type PlanStatus

type PlanStatus string

PlanStatus represents the status of a terraform plan

const (
	PlanStatusPending   PlanStatus = "pending"
	PlanStatusRunning   PlanStatus = "running"
	PlanStatusSuccess   PlanStatus = "success"
	PlanStatusNoChanges PlanStatus = "no_changes"
	PlanStatusChanges   PlanStatus = "changes"
	PlanStatusFailed    PlanStatus = "failed"
)

type PolicyResult

type PolicyResult struct {
	Module   string
	Failures []PolicyViolation
	Warnings []PolicyViolation
}

PolicyResult contains policy check results for a single module.

type PolicySummary

type PolicySummary struct {
	TotalModules  int
	PassedModules int
	WarnedModules int
	FailedModules int
	TotalFailures int
	TotalWarnings int
	Results       []PolicyResult
}

PolicySummary contains policy check data needed for rendering PR/MR comments. This is a CI-local type to avoid coupling with the policy package.

func (*PolicySummary) HasFailures

func (s *PolicySummary) HasFailures() bool

HasFailures returns true if any module has failures.

func (*PolicySummary) HasWarnings

func (s *PolicySummary) HasWarnings() bool

HasWarnings returns true if any module has warnings.

type PolicyViolation

type PolicyViolation struct {
	Namespace string
	Message   string
}

PolicyViolation represents a single policy violation.

Jump to

Keyboard shortcuts

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