Documentation
¶
Index ¶
- Constants
- type ExecutionDurationStats
- type MemoryUsage
- type Rate
- type Result
- type StatisticsCalculator
- type StepSummary
- type StepSummaryCalc
- type StreamingProcessor
- func (sp *StreamingProcessor) GetMemoryUsage() MemoryUsage
- func (sp *StreamingProcessor) GetResults() (*types.WorkflowRunStats, []*types.WorkflowJobStats)
- func (sp *StreamingProcessor) ProcessBatch(ctx context.Context, runs []*github.WorkflowRun, jobs []*github.WorkflowJob) error
- func (sp *StreamingProcessor) ProcessWorkflowJob(job *github.WorkflowJob)
- func (sp *StreamingProcessor) ProcessWorkflowRun(run *github.WorkflowRun)
- type WorkflowJobConverter
- type WorkflowJobsStatsSummary
- type WorkflowJobsStatsSummaryCalc
- type WorkflowRun
- type WorkflowRunConverter
- type WorkflowRunsConclusion
- type WorkflowRunsStatsSummary
Constants ¶
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 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 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 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
func (sp *StreamingProcessor) GetResults() (*types.WorkflowRunStats, []*types.WorkflowJobStats)
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 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