parser

package
v0.4.1 Latest Latest
Warning

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

Go to latest
Published: Dec 30, 2025 License: MIT Imports: 10 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ConclusionSuccess = "success"
	ConclusionFailure = "failure"
	ConclusionOthers  = "others"
	StatusCompleted   = "completed"

	// Maximum duration of a workflow run is 35 days in Self-hosted runners.
	// ref: https://docs.github.com/en/actions/hosting-your-own-runners/managing-self-hosted-runners/about-self-hosted-runners#usage-limits
	MaxWorkflowDurationSeconds = 35 * 24 * 60 * 60 // 35 days in seconds
	MaxWorkflowDurationCapped  = 3024000           // Capped duration value
)

Variables

This section is empty.

Functions

This section is empty.

Types

type ExecutionDurationStats added in v0.3.2

type ExecutionDurationStats struct {
	Min float64 `json:"min"`
	Max float64 `json:"max"`
	Avg float64 `json:"avg"`
	Med float64 `json:"med"`
	Std float64 `json:"std"`
}

type MemoryUsage added in v0.4.0

type MemoryUsage struct {
	StoredRuns       int
	SuccessDurations int
	JobAggregators   int
	StepAggregators  int
	JobDurations     int
	StepDurations    int
	FailureURLs      int
	MaxMemoryItems   int
}

MemoryUsage provides information about current memory usage

type Rate

type Rate struct {
	SuccesRate  float64 `json:"success_rate"`
	FailureRate float64 `json:"failure_rate"`
	OthersRate  float64 `json:"others_rate"`
}

type Result

type Result struct {
	WorkflowRunsStatsSummary *WorkflowRunsStatsSummary   `json:"workflow_runs_stats_summary"`
	WorkflowJobsStatsSummary []*WorkflowJobsStatsSummary `json:"workflow_jobs_stats_summary"`
}

type StatisticsCalculator added in v0.4.0

type StatisticsCalculator struct{}

StatisticsCalculator provides methods for calculating various statistics

func NewStatisticsCalculator added in v0.4.0

func NewStatisticsCalculator() *StatisticsCalculator

NewStatisticsCalculator creates a new statistics calculator

func (*StatisticsCalculator) CalculateExecutionStats added in v0.4.0

func (c *StatisticsCalculator) CalculateExecutionStats(durations []float64) types.ExecutionStats

CalculateExecutionStats is a wrapper around calculateExecutionStats for external use

func (*StatisticsCalculator) CalculateSuccessRate added in v0.4.0

func (c *StatisticsCalculator) CalculateSuccessRate(conclusions map[types.WorkflowConclusion]int) types.SuccessRate

CalculateSuccessRate calculates success rate from conclusion counts

func (*StatisticsCalculator) ValidateDuration added in v0.4.0

func (c *StatisticsCalculator) ValidateDuration(duration float64) float64

ValidateDuration validates and normalizes duration values

type StepSummary

type StepSummary struct {
	Name                   string                 `json:"name"`
	Number                 int64                  `json:"number"`
	RunsCount              int                    `json:"runs_count"`
	Conclusions            map[string]int         `json:"conclusion"`
	Rate                   Rate                   `json:"rate"`
	ExecutionDurationStats ExecutionDurationStats `json:"execution_duration_stats"`
	FailureHTMLURL         []string               `json:"failure_html_url"`
}

type StepSummaryCalc

type StepSummaryCalc struct {
	Name           string
	Number         int64
	RunsCount      int
	Conclusions    map[string]int
	StepDuration   []float64
	FailureHTMLURL []string
}

type StreamingProcessor added in v0.4.0

type StreamingProcessor struct {
	// contains filtered or unexported fields
}

StreamingProcessor processes workflow data in streaming fashion to reduce memory usage

func NewStreamingProcessor added in v0.4.0

func NewStreamingProcessor(maxMemoryItems int) *StreamingProcessor

NewStreamingProcessor creates a new streaming processor

func (*StreamingProcessor) GetMemoryUsage added in v0.4.0

func (sp *StreamingProcessor) GetMemoryUsage() MemoryUsage

GetMemoryUsage returns current memory usage statistics

func (*StreamingProcessor) GetResults added in v0.4.0

GetResults returns the final processed results

func (*StreamingProcessor) ProcessBatch added in v0.4.0

func (sp *StreamingProcessor) ProcessBatch(ctx context.Context, runs []*github.WorkflowRun, jobs []*github.WorkflowJob) error

ProcessBatch processes multiple workflow runs in batch

func (*StreamingProcessor) ProcessWorkflowJob added in v0.4.0

func (sp *StreamingProcessor) ProcessWorkflowJob(job *github.WorkflowJob)

ProcessWorkflowJob processes a single workflow job

func (*StreamingProcessor) ProcessWorkflowRun added in v0.4.0

func (sp *StreamingProcessor) ProcessWorkflowRun(run *github.WorkflowRun)

ProcessWorkflowRun processes a single workflow run

type WorkflowJobConverter added in v0.4.0

type WorkflowJobConverter struct{}

WorkflowJobConverter converts GitHub API workflow jobs to internal types

func NewWorkflowJobConverter added in v0.4.0

func NewWorkflowJobConverter() *WorkflowJobConverter

NewWorkflowJobConverter creates a new converter instance

func (*WorkflowJobConverter) ConvertJobs added in v0.4.0

func (c *WorkflowJobConverter) ConvertJobs(githubJobs []*github.WorkflowJob) []*types.WorkflowJobStats

ConvertJobs converts GitHub workflow jobs to WorkflowJobStats

type WorkflowJobsStatsSummary

type WorkflowJobsStatsSummary struct {
	Name                   string                 `json:"name"`
	TotalRunsCount         int                    `json:"total_runs_count"`
	Rate                   Rate                   `json:"rate"`
	Conclusions            map[string]int         `json:"conclusions"`
	ExecutionDurationStats ExecutionDurationStats `json:"execution_duration_stats"`
	StepSummary            []*StepSummary         `json:"steps_summary"`
}

func WorkflowJobsParse

func WorkflowJobsParse(wjs []*github.WorkflowJob) []*WorkflowJobsStatsSummary

type WorkflowJobsStatsSummaryCalc

type WorkflowJobsStatsSummaryCalc struct {
	TotalRunsCount            int
	Name                      string
	Rate                      Rate
	Conclusions               map[string]int
	ExecutionWorkflowDuration []float64
	StepSummary               map[string]*StepSummaryCalc
}

type WorkflowRun

type WorkflowRun struct {
	ID           int64     `json:"id,omitempty"`
	Status       string    `json:"status"`
	Conclusion   string    `json:"conclusion"`
	Actor        string    `json:"actor"`
	RunAttempt   int       `json:"run_attempt"`
	HTMLURL      string    `json:"html_url"`
	JobsURL      string    `json:"jobs_url"`
	LogsURL      string    `json:"logs_url"`
	RunStartedAt time.Time `json:"run_started_at"`
	UpdateAt     time.Time `json:"update_at"`
	CreatedAt    time.Time `json:"created_at"`
	Duration     float64   `json:"duration"`
}

type WorkflowRunConverter added in v0.4.0

type WorkflowRunConverter struct{}

WorkflowRunConverter converts GitHub API workflow runs to internal types

func NewWorkflowRunConverter added in v0.4.0

func NewWorkflowRunConverter() *WorkflowRunConverter

NewWorkflowRunConverter creates a new converter instance

func (*WorkflowRunConverter) ConvertRuns added in v0.4.0

func (c *WorkflowRunConverter) ConvertRuns(githubRuns []*github.WorkflowRun) *types.WorkflowRunStats

ConvertRuns converts GitHub workflow runs to WorkflowRunStats

type WorkflowRunsConclusion

type WorkflowRunsConclusion struct {
	RunsCount    int            `json:"runs_count"`
	WorkflowRuns []*WorkflowRun `json:"workflow_runs"`
}

type WorkflowRunsStatsSummary

type WorkflowRunsStatsSummary struct {
	TotalRunsCount         int                                `json:"total_runs_count"`
	Name                   string                             `json:"name"`
	Rate                   Rate                               `json:"rate"`
	ExecutionDurationStats ExecutionDurationStats             `json:"execution_duration_stats"`
	Conclusions            map[string]*WorkflowRunsConclusion `json:"conclusions"`
}

func WorkflowRunsParse

func WorkflowRunsParse(wrs []*github.WorkflowRun) *WorkflowRunsStatsSummary

Jump to

Keyboard shortcuts

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