Documentation
¶
Overview ¶
Package github wraps the GitHub REST and GraphQL APIs used by gh-sweep.
Index ¶
- Constants
- Variables
- func CompareProtectionRules(rules []*ProtectionRule) map[string][]string
- func ComputeBranchStats(runs []RunTiming, baseBranch string) map[string]*BranchStats
- func ComputeJobStats(runs []RunTiming) map[string]*JobStats
- func ComputeWorkflowStats(runs []RunTiming) map[string]*WorkflowStats
- func FilterByCommit(commits ...string) func(TestRun) bool
- func FilterByRepository(repos ...string) func(TestRun) bool
- func FormatAsJSON(contexts []*ErrorContext) (string, error)
- func FormatAsMarkdown(contexts []*ErrorContext) string
- func FormatDuration(d time.Duration) string
- func GroupSecretsByScope(secrets []Secret) map[string][]Secret
- func ParseSinceDate(value string) (time.Time, error)
- func ScanWorkflowForSecrets(workflowContent string) []string
- func SetTestTransport(rt http.RoundTripper) func()
- func SortRunsByDate(runs []RunTiming, ascending bool)
- type Branch
- type BranchStats
- type BranchStatus
- type BranchWithComparison
- type Client
- func (c *Client) AddCollaborator(owner, repo, username, permission string) error
- func (c *Client) CompareBranches(owner, repo, base, head string) (ahead, behind int, err error)
- func (c *Client) Context() context.Context
- func (c *Client) CreatePullRequest(owner, repo, title, body, head, base string) (int, error)
- func (c *Client) Delete(path string, response interface{}) error
- func (c *Client) DeleteBranch(owner, repo, branch string) error
- func (c *Client) DeleteRepoSubscription(owner, repo string) error
- func (c *Client) FetchFailedJobLogs(owner, repo string, runID int) ([]JobLog, error)
- func (c *Client) FetchRunDetails(owner, repo string, runID int) (*RunTiming, error)
- func (c *Client) FetchWorkflowRuns(owner, repo string, opts FetchWorkflowRunsOptions) ([]RunTiming, error)
- func (c *Client) FetchWorkflowRunsWithDetails(owner, repo string, opts FetchWorkflowRunsOptions) ([]RunTiming, error)
- func (c *Client) Get(path string, response interface{}) error
- func (c *Client) GetAuthenticatedUser() (string, error)
- func (c *Client) GetBranchProtection(owner, repo, branch string) (*ProtectionRule, error)
- func (c *Client) GetBranchesWithComparison(owner, repo, baseBranch string) ([]BranchWithComparison, error)
- func (c *Client) GetDefaultBranch(owner, repo string) (string, error)
- func (c *Client) GetDefaultBranchProtection(owner, repo string) (*ProtectionRule, error)
- func (c *Client) GetLatestRelease(owner, repo string) (*Release, error)
- func (c *Client) GetPullRequestsForBranch(owner, repo, branch string) ([]PullRequest, error)
- func (c *Client) GetRepoSettings(owner, repo string) (*RepoSettings, error)
- func (c *Client) ListBranchStatuses(owner, repo, baseBranch string) ([]BranchStatus, error)
- func (c *Client) ListBranches(owner, repo string) ([]Branch, error)
- func (c *Client) ListCollaborators(owner, repo string) ([]Collaborator, error)
- func (c *Client) ListNamespaceRepositories(namespace string) ([]Repository, bool, error)
- func (c *Client) ListOrgRepositories(org string) ([]Repository, error)
- func (c *Client) ListOrgSecrets(org string) ([]Secret, error)
- func (c *Client) ListPullRequests(owner, repo, state string) ([]PullRequest, error)
- func (c *Client) ListReleases(owner, repo string) ([]Release, error)
- func (c *Client) ListRepoSecrets(owner, repo string) ([]Secret, error)
- func (c *Client) ListUserRepositories(username string) ([]Repository, error)
- func (c *Client) ListWebhookDeliveries(owner, repo string, hookID int) ([]WebhookDelivery, error)
- func (c *Client) ListWebhooks(owner, repo string) ([]Webhook, error)
- func (c *Client) ListWorkflowRuns(owner, repo string) ([]WorkflowRun, error)
- func (c *Client) ListWorkflows(owner, repo string) ([]WorkflowFile, error)
- func (c *Client) Patch(path string, body, response interface{}) error
- func (c *Client) Post(path string, body, response interface{}) error
- func (c *Client) Put(path string, body, response interface{}) error
- func (c *Client) RemoveCollaborator(owner, repo, username string) error
- func (c *Client) SetRepoSubscription(owner, repo string, subscribed, ignored bool) (*Subscription, error)
- type Collaborator
- type CollaboratorGrant
- type DuplicateSecret
- type ErrorContext
- type FetchWorkflowRunsOptions
- type FlakyDetectionConfig
- type FlakyTest
- type GQLClient
- func (g *GQLClient) ListOpenPRReviewThreads(client *Client, owner, repo string, maxPRs int) ([]ReviewThread, error)
- func (g *GQLClient) ListPRReviewThreads(owner, repo string, prNumber int) ([]ReviewThread, error)
- func (g *GQLClient) ListRepoReviewThreads(client *Client, owner, repo string, prNumber, maxPRs int) ([]ReviewThread, error)
- func (g *GQLClient) ListViewerRepoWatchInfo() (string, []RepoWatchInfo, error)
- type JobLog
- type JobStats
- type JobTiming
- type LogExtractionConfig
- type PRRef
- type ProtectionRule
- type PullRequest
- type Release
- type ReleaseComparison
- type RepoBasic
- type RepoSettings
- type RepoWatchInfo
- type Repository
- type ReviewComment
- type ReviewThread
- type RunTiming
- type Secret
- type SecretUsage
- type SettingsDiff
- type StepTiming
- type Subscription
- type TestRun
- type ThreadFilter
- type WatchState
- type Webhook
- type WebhookDelivery
- type WebhookHealth
- type WorkflowFile
- type WorkflowRun
- type WorkflowRunStats
- type WorkflowStats
Constants ¶
const DefaultOpenPRCap = 20
DefaultOpenPRCap bounds how many of the newest open PRs are scanned for review threads.
Variables ¶
Functions ¶
func CompareProtectionRules ¶
func CompareProtectionRules(rules []*ProtectionRule) map[string][]string
CompareProtectionRules compares protection rules across repositories.
func ComputeBranchStats ¶
func ComputeBranchStats(runs []RunTiming, baseBranch string) map[string]*BranchStats
func ComputeJobStats ¶
func ComputeWorkflowStats ¶
func ComputeWorkflowStats(runs []RunTiming) map[string]*WorkflowStats
func FilterByCommit ¶
FilterByCommit creates a filter for specific commits Higher-order function for functional composition.
func FilterByRepository ¶
FilterByRepository creates a filter for specific repositories Higher-order function returning a filter predicate.
func FormatAsJSON ¶
func FormatAsJSON(contexts []*ErrorContext) (string, error)
FormatAsJSON formats error context as JSON for AI consumption Pure function: serializes to JSON.
func FormatAsMarkdown ¶
func FormatAsMarkdown(contexts []*ErrorContext) string
FormatAsMarkdown formats error context as Markdown for AI consumption Pure function: generates Markdown string.
func FormatDuration ¶
func GroupSecretsByScope ¶
GroupSecretsByScope groups secrets by their scope (org/repo) Pure function: creates grouped map.
func ParseSinceDate ¶
ParseSinceDate parses a YYYY-MM-DD date for --since filtering.
func ScanWorkflowForSecrets ¶
ScanWorkflowForSecrets extracts secret references from workflow YAML Pure function: parses YAML content for secrets.* references.
func SetTestTransport ¶
func SetTestTransport(rt http.RoundTripper) func()
SetTestTransport routes every client created afterward through rt so tests never reach the real GitHub API. It returns a restore function and panics when called outside `go test`.
func SortRunsByDate ¶
Types ¶
type Branch ¶
type Branch struct {
Name string
SHA string
Protected bool
Ahead int
Behind int
LastCommitDate time.Time
}
Branch represents a GitHub branch.
type BranchStats ¶
type BranchStatus ¶
type BranchStatus struct {
Branch
ComparedTo string
IsDefault bool
PR *PullRequest
}
BranchStatus extends Branch with default-branch and pull request context.
func (BranchStatus) DeleteBlocked ¶
func (b BranchStatus) DeleteBlocked() error
DeleteBlocked reports why the branch must not be deleted, or nil when deletion is safe.
type BranchWithComparison ¶
BranchWithComparison extends Branch with comparison data.
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client wraps the GitHub API client.
func NewClient ¶
NewClient creates a new GitHub API client It will use gh CLI authentication if available, or fall back to GITHUB_TOKEN env var.
func NewClientWithToken ¶
NewClientWithToken creates a new GitHub API client with an explicit token.
func NewClientWithTransport ¶
NewClientWithTransport creates a client whose requests are served by rt, bypassing gh CLI auth resolution. Intended for tests using httptest or in-memory round-trip fakes; no network is reached.
func (*Client) AddCollaborator ¶
AddCollaborator adds a collaborator to a repository.
func (*Client) CompareBranches ¶
CompareBranches compares two branches and returns ahead/behind counts.
func (*Client) CreatePullRequest ¶
CreatePullRequest creates a new pull request.
func (*Client) DeleteBranch ¶
DeleteBranch deletes a branch.
func (*Client) DeleteRepoSubscription ¶
func (*Client) FetchFailedJobLogs ¶
FetchFailedJobLogs downloads logs for each failed job of a workflow run. Jobs whose logs cannot be fetched are skipped.
func (*Client) FetchRunDetails ¶
func (*Client) FetchWorkflowRuns ¶
func (c *Client) FetchWorkflowRuns( owner, repo string, opts FetchWorkflowRunsOptions, ) ([]RunTiming, error)
func (*Client) FetchWorkflowRunsWithDetails ¶
func (c *Client) FetchWorkflowRunsWithDetails( owner, repo string, opts FetchWorkflowRunsOptions, ) ([]RunTiming, error)
func (*Client) GetAuthenticatedUser ¶
func (*Client) GetBranchProtection ¶
func (c *Client) GetBranchProtection(owner, repo, branch string) (*ProtectionRule, error)
GetBranchProtection retrieves branch protection rules.
func (*Client) GetBranchesWithComparison ¶
func (c *Client) GetBranchesWithComparison( owner, repo, baseBranch string, ) ([]BranchWithComparison, error)
GetBranchesWithComparison fetches branches and compares them to a base branch.
func (*Client) GetDefaultBranch ¶
GetDefaultBranch fetches the default branch for a repository.
func (*Client) GetDefaultBranchProtection ¶
func (c *Client) GetDefaultBranchProtection(owner, repo string) (*ProtectionRule, error)
GetDefaultBranchProtection retrieves protection rules for the repo's default branch.
func (*Client) GetLatestRelease ¶
GetLatestRelease returns the most recent release.
func (*Client) GetPullRequestsForBranch ¶
func (c *Client) GetPullRequestsForBranch(owner, repo, branch string) ([]PullRequest, error)
func (*Client) GetRepoSettings ¶
func (c *Client) GetRepoSettings(owner, repo string) (*RepoSettings, error)
GetRepoSettings retrieves repository settings.
func (*Client) ListBranchStatuses ¶
func (c *Client) ListBranchStatuses(owner, repo, baseBranch string) ([]BranchStatus, error)
ListBranchStatuses lists branches enriched with default-branch, comparison, and PR data. An empty baseBranch compares against the repository default branch.
func (*Client) ListBranches ¶
ListBranches lists all branches for a repository.
func (*Client) ListCollaborators ¶
func (c *Client) ListCollaborators(owner, repo string) ([]Collaborator, error)
ListCollaborators lists all collaborators for a repository.
func (*Client) ListNamespaceRepositories ¶
func (c *Client) ListNamespaceRepositories(namespace string) ([]Repository, bool, error)
func (*Client) ListOrgRepositories ¶
func (c *Client) ListOrgRepositories(org string) ([]Repository, error)
func (*Client) ListOrgSecrets ¶
ListOrgSecrets lists organization-level secrets.
func (*Client) ListPullRequests ¶
func (c *Client) ListPullRequests(owner, repo, state string) ([]PullRequest, error)
func (*Client) ListReleases ¶
ListReleases lists all releases for a repository.
func (*Client) ListRepoSecrets ¶
ListRepoSecrets lists repository-level secrets.
func (*Client) ListUserRepositories ¶
func (c *Client) ListUserRepositories(username string) ([]Repository, error)
func (*Client) ListWebhookDeliveries ¶
func (c *Client) ListWebhookDeliveries(owner, repo string, hookID int) ([]WebhookDelivery, error)
ListWebhookDeliveries lists recent deliveries for a webhook.
func (*Client) ListWebhooks ¶
ListWebhooks lists all webhooks for a repository.
func (*Client) ListWorkflowRuns ¶
func (c *Client) ListWorkflowRuns(owner, repo string) ([]WorkflowRun, error)
ListWorkflowRuns lists workflow runs for a repository.
func (*Client) ListWorkflows ¶
func (c *Client) ListWorkflows(owner, repo string) ([]WorkflowFile, error)
func (*Client) RemoveCollaborator ¶
RemoveCollaborator removes a collaborator from a repository.
func (*Client) SetRepoSubscription ¶
func (c *Client) SetRepoSubscription( owner, repo string, subscribed, ignored bool, ) (*Subscription, error)
type Collaborator ¶
Collaborator represents a repository collaborator.
type CollaboratorGrant ¶
type CollaboratorGrant struct {
User string
Repository string
Permission string
GrantedBy string
GrantedAt time.Time
ExpiresAt time.Time
RevokedAt *time.Time
}
CollaboratorGrant represents a time-boxed access grant.
type DuplicateSecret ¶
type DuplicateSecret struct {
Name string
Count int
Scopes []string // List of scopes where it appears
Repos []string // List of repositories (for repo-scoped secrets)
}
DuplicateSecret represents a secret name that appears multiple times.
func FindDuplicateSecrets ¶
func FindDuplicateSecrets(secrets []Secret) []DuplicateSecret
FindDuplicateSecrets identifies secret names that appear in multiple scopes/repos Pure function: analyzes secret list for duplicates.
type ErrorContext ¶
type ErrorContext struct {
Repository string `json:"repository"`
WorkflowName string `json:"workflow_name"`
JobName string `json:"job_name"`
StepName string `json:"step_name,omitempty"`
Conclusion string `json:"conclusion"`
Timestamp time.Time `json:"timestamp"`
ErrorLines []string `json:"error_lines"`
Context []string `json:"context_lines,omitempty"`
ErrorType string `json:"error_type,omitempty"`
Summary string `json:"summary"`
}
ErrorContext represents extracted error information.
func BatchExtractErrors ¶
func BatchExtractErrors( logs []JobLog, workflow string, config LogExtractionConfig, ) []*ErrorContext
BatchExtractErrors extracts errors from multiple logs Pure function: maps over logs.
func ExtractErrorContext ¶
func ExtractErrorContext(log JobLog, workflow string, config LogExtractionConfig) *ErrorContext
ExtractErrorContext extracts actionable error information from job logs Pure function: deterministic, no side effects.
type FlakyDetectionConfig ¶
type FlakyDetectionConfig struct {
MinFlips int // Minimum flips to be considered flaky
MinFailureRate float64 // Minimum failure rate (0.0-1.0)
TimeWindow time.Duration
SameCommitOnly bool // Only detect same-commit flips
IncludeSkipped bool // Include skipped tests in analysis
}
FlakyDetectionConfig configures flaky test detection.
func DefaultFlakyConfig ¶
func DefaultFlakyConfig() FlakyDetectionConfig
DefaultFlakyConfig returns sensible defaults.
type FlakyTest ¶
type FlakyTest struct {
Name string
FailureRate float64
FirstFailure time.Time
LastFlip time.Time
FlipCount int
TotalRuns int
FailureCount int
Pattern string // "same-commit-flip", "intermittent", "consistent"
}
FlakyTest represents a test that exhibits flaky behavior.
func DetectFlakyTests ¶
func DetectFlakyTests(runs []TestRun, config FlakyDetectionConfig) []FlakyTest
DetectFlakyTests identifies flaky tests from test runs Pure function: no side effects, deterministic output.
type GQLClient ¶
type GQLClient struct {
// contains filtered or unexported fields
}
GQLClient wraps the GitHub GraphQL API for review thread queries.
func NewGQLClient ¶
NewGQLClient creates a GraphQL client using gh CLI auth or GITHUB_TOKEN.
func (*GQLClient) ListOpenPRReviewThreads ¶
func (g *GQLClient) ListOpenPRReviewThreads( client *Client, owner, repo string, maxPRs int, ) ([]ReviewThread, error)
ListOpenPRReviewThreads fetches review threads across the newest open PRs, capped at maxPRs.
func (*GQLClient) ListPRReviewThreads ¶
func (g *GQLClient) ListPRReviewThreads(owner, repo string, prNumber int) ([]ReviewThread, error)
ListPRReviewThreads fetches all review threads for a single pull request.
func (*GQLClient) ListRepoReviewThreads ¶
func (g *GQLClient) ListRepoReviewThreads( client *Client, owner, repo string, prNumber, maxPRs int, ) ([]ReviewThread, error)
ListRepoReviewThreads fetches threads for one PR when prNumber > 0, otherwise across open PRs.
func (*GQLClient) ListViewerRepoWatchInfo ¶
func (g *GQLClient) ListViewerRepoWatchInfo() (string, []RepoWatchInfo, error)
ListViewerRepoWatchInfo fetches watch state and enrichment metadata for every repository owned by the authenticated user, paginated via GraphQL. Unlike the REST subscription endpoint, the query is atomic per page: a page either returns full data for every repo in it or fails outright, so there's no partial-failure state to silently misreport as "not watching".
type JobLog ¶
type JobLog struct {
JobID int
JobName string
WorkflowID int
Repository string
Conclusion string
Lines []string
Timestamp time.Time
}
JobLog represents a GitHub Actions job log.
type JobStats ¶
type JobTiming ¶
type JobTiming struct {
Name string `json:"name"`
DurationSeconds float64 `json:"duration_seconds"`
Status string `json:"status"`
Conclusion string `json:"conclusion"`
StartedAt time.Time `json:"started_at"`
CompletedAt time.Time `json:"completed_at"`
Duration time.Duration `json:"-"`
Steps []StepTiming `json:"steps"`
}
type LogExtractionConfig ¶
type LogExtractionConfig struct {
TailLines int // Number of lines from end of log
ContextLines int // Additional context lines around errors
FilterNoise bool // Remove timestamps, ANSI codes
ExtractStackTrace bool // Include full stack traces
IncludeSuccess bool // Include successful runs
ErrorPatterns []string // Custom regex patterns for errors
}
LogExtractionConfig configures log extraction behavior.
func DefaultLogConfig ¶
func DefaultLogConfig() LogExtractionConfig
DefaultLogConfig returns sensible defaults for log extraction.
type ProtectionRule ¶
type ProtectionRule struct {
Repository string
Branch string
RequiredReviews int
RequireCodeOwnerReviews bool
RequireStatusChecks []string
EnforceAdmins bool
RequireLinearHistory bool
AllowForcePushes bool
AllowDeletions bool
}
ProtectionRule represents branch protection settings.
type PullRequest ¶
type PullRequest struct {
Number int
Title string
State string
Head PRRef
Base PRRef
MergedAt *time.Time
ClosedAt *time.Time
}
func MatchBranchPR ¶
func MatchBranchPR(prs []PullRequest, repoFullName, branch string) *PullRequest
MatchBranchPR returns the open PR whose head is the branch, or the most recent closed one.
type Release ¶
type Release struct {
ID int
Repository string
TagName string
Name string
Body string
Author string
CreatedAt time.Time
PublishedAt time.Time
Draft bool
Prerelease bool
}
Release represents a GitHub release.
type ReleaseComparison ¶
type ReleaseComparison struct {
Repositories []string
LatestReleases map[string]*Release
OutdatedRepos []string // Repos with no release in 90+ days
NonSemVerRepos []string // Repos not following semver
}
ReleaseComparison compares releases across repositories.
func CompareReleases ¶
func CompareReleases(releases map[string]*Release) ReleaseComparison
CompareReleases compares releases across multiple repositories.
type RepoSettings ¶
type RepoSettings struct {
Repository string
DefaultBranch string
AllowMergeCommit bool
AllowSquashMerge bool
AllowRebaseMerge bool
DeleteBranchOnMerge bool
HasIssues bool
HasProjects bool
HasWiki bool
}
RepoSettings represents repository settings.
type RepoWatchInfo ¶
type RepoWatchInfo struct {
RepoBasic
IsArchived bool
IsFork bool
State WatchState
ViewerCanSubscribe bool
StargazerCount int
WatcherCount int
PushedAt time.Time
UpdatedAt time.Time
}
RepoWatchInfo is a repo's watch state plus metadata GitHub's REST subscription endpoint doesn't expose (activity, popularity, archival), fetched in a single paginated GraphQL query rather than one REST call per repo.
GitHub's "Custom" per-notification-type watch setting has no representation in either the REST or GraphQL API: a repo set to Custom on github.com reports the same viewerSubscription as one left at the default (see https://github.com/orgs/community/discussions/65099). State should be read as "the best this API can tell us," not as ground truth for Custom repos.
type Repository ¶
type ReviewComment ¶
ReviewComment is a single comment within a PR review thread.
type ReviewThread ¶
type ReviewThread struct {
Repository string
PRNumber int
PRTitle string
Path string
IsResolved bool
IsOutdated bool
Comments []ReviewComment
}
ReviewThread is a review conversation on a pull request.
func FilterUnresolvedThreads ¶
func FilterUnresolvedThreads(threads []ReviewThread) []ReviewThread
FilterUnresolvedThreads keeps only threads that are not resolved.
func (ReviewThread) FirstComment ¶
func (t ReviewThread) FirstComment() (ReviewComment, bool)
FirstComment returns the thread's opening comment, if any.
func (ReviewThread) LastActivity ¶
func (t ReviewThread) LastActivity() time.Time
LastActivity returns the creation time of the most recent comment.
type RunTiming ¶
type RunTiming struct {
RunID int `json:"run_id"`
Workflow string `json:"workflow"`
WorkflowID int `json:"workflow_id"`
Branch string `json:"branch"`
HeadSHA string `json:"head_sha"`
Conclusion string `json:"conclusion"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
DurationSeconds float64 `json:"duration_seconds"`
Duration time.Duration `json:"-"`
Jobs []JobTiming `json:"jobs"`
}
func FilterRunsByBranch ¶
func FilterRunsByTimeRange ¶
func FilterRunsByWorkflows ¶
type Secret ¶
type Secret struct {
Name string
Scope string // "org" or "repo"
Repository string // Empty for org secrets
CreatedAt string
UpdatedAt string
}
Secret represents a GitHub Actions secret.
type SecretUsage ¶
type SecretUsage struct {
Name string
Scope string
Repository string
ReferencedIn []string // Workflow files that reference this secret
Unused bool
}
SecretUsage tracks secret usage in workflows.
func DetectUnusedSecrets ¶
func DetectUnusedSecrets(secrets []Secret, workflowRefs map[string][]string) []SecretUsage
DetectUnusedSecrets compares secrets against workflow references.
type SettingsDiff ¶
type SettingsDiff struct {
Field string
Baseline interface{}
Current interface{}
Severity string // critical, warning, info
}
SettingsDiff represents differences between repository settings.
func CompareSettings ¶
func CompareSettings(baseline, current *RepoSettings) []SettingsDiff
CompareSettings compares repository settings against a baseline.
type StepTiming ¶
type Subscription ¶
type TestRun ¶
type TestRun struct {
Name string
Status string // "success", "failure", "skipped"
CommitSHA string
Timestamp time.Time
Duration time.Duration
Repository string
WorkflowID int
}
TestRun represents a single test execution.
func ApplyFilters ¶
ApplyFilters applies a list of filters to test runs Functional composition helper.
func WorkflowRunsToTestRuns ¶
func WorkflowRunsToTestRuns(repo string, runs []WorkflowRun) []TestRun
WorkflowRunsToTestRuns adapts workflow runs for flaky detection, treating each workflow as a test keyed by its name. Runs without a terminal success/failure/skipped conclusion are dropped.
type ThreadFilter ¶
ThreadFilter narrows review threads by author, activity date, and text.
func (ThreadFilter) Apply ¶
func (f ThreadFilter) Apply(threads []ReviewThread) []ReviewThread
Apply returns the threads matching every set filter field.
type WatchState ¶
type WatchState string
const ( WatchStateSubscribed WatchState = "subscribed" WatchStateIgnored WatchState = "ignored" // WatchStateDefault is GitHub's un-set subscription state ("Participating // and @mentions"), not an absence of any relationship to the repo. WatchStateDefault WatchState = "" )
type WebhookDelivery ¶
type WebhookDelivery struct {
ID int
Event string
Status int
Duration int // milliseconds
Timestamp string
}
WebhookDelivery represents a webhook delivery.
type WebhookHealth ¶
type WebhookHealth struct {
WebhookID int
SuccessRate float64
TotalDeliveries int
Failures int
AvgDuration int
}
WebhookHealth represents webhook health metrics.
func AnalyzeWebhookHealth ¶
func AnalyzeWebhookHealth(deliveries []WebhookDelivery) WebhookHealth
AnalyzeWebhookHealth analyzes webhook delivery health.
type WorkflowFile ¶
type WorkflowRun ¶
type WorkflowRun struct {
ID int
Name string
Status string
Conclusion string
Branch string
HeadSHA string
CreatedAt time.Time
UpdatedAt time.Time
Duration time.Duration
}
WorkflowRun represents a GitHub Actions workflow run.
type WorkflowRunStats ¶
type WorkflowRunStats struct {
TotalRuns int
SuccessRate float64
FailureCount int
AvgDuration time.Duration
Runs []WorkflowRun
}
WorkflowRunStats represents statistics about workflow runs.
func AnalyzeWorkflowRuns ¶
func AnalyzeWorkflowRuns(runs []WorkflowRun) WorkflowRunStats
AnalyzeWorkflowRuns analyzes workflow runs and returns statistics.