Documentation
¶
Index ¶
- Constants
- func AttributeFromContext(ctx context.Context, key string) interface{}
- func NewSecondaryRateLimitWaiterClient(base http.RoundTripper) *http.Client
- func Serve(b Bot)
- type Bot
- type BotOptions
- type CheckRunHandler
- type CheckSuiteHandler
- type CloneOpts
- type EventHandlerFunc
- type EventType
- type GitHubClient
- func (c GitHubClient) AddComment(ctx context.Context, pr *github.PullRequest, botName, content string) error
- func (c GitHubClient) AddLabel(ctx context.Context, pr *github.PullRequest, label string) error
- func (c GitHubClient) Client() *github.Client
- func (c GitHubClient) CloneRepo(ctx context.Context, ref, destDir string, opts *CloneOpts) (*git.Repository, error)
- func (c GitHubClient) Close(ctx context.Context) error
- func (c GitHubClient) FetchWorkflowRunArtifact(ctx context.Context, wr *github.WorkflowRun, name string) (*zip.Reader, error)
- func (c GitHubClient) FetchWorkflowRunLogs(ctx context.Context, wr *github.WorkflowRun, store httpreaderat.Store) (*zip.Reader, error)
- func (c GitHubClient) GetFileContent(ctx context.Context, owner, repo, path, ref string) (string, error)
- func (c GitHubClient) GetRelease(ctx context.Context, owner, repo, tag string) (*github.RepositoryRelease, error)
- func (c GitHubClient) GetWorkflowRunArtifact(ctx context.Context, wr *github.WorkflowRun, name string) (*zip.Reader, error)deprecated
- func (c GitHubClient) GetWorkflowRunLogs(ctx context.Context, wre github.WorkflowRunEvent) ([]byte, error)deprecated
- func (c GitHubClient) GetWorkloadRunPullRequestNumber(ctx context.Context, wre github.WorkflowRunEvent) (int, error)
- func (c GitHubClient) GitAuth() (transport.AuthMethod, error)
- func (c GitHubClient) ListArtifactsFunc(ctx context.Context, wr *github.WorkflowRun, opt *github.ListOptions, ...) error
- func (c GitHubClient) ListFiles(ctx context.Context, owner, repo, path, ref string) ([]*github.RepositoryContent, error)
- func (c GitHubClient) RemoveLabel(ctx context.Context, pr *github.PullRequest, label string) error
- func (c GitHubClient) RepoURL() (string, error)
- func (c GitHubClient) SearchContentInFilename(ctx context.Context, owner, repo, path, content string, ...) (*github.CodeSearchResult, error)
- func (c GitHubClient) SearchFilenameInRepository(ctx context.Context, owner, repo, path string, opt *github.ListOptions) (*github.CodeSearchResult, error)
- func (c GitHubClient) SetComment(ctx context.Context, pr *github.PullRequest, botName, content string) error
- type GitHubClientOption
- type IssueCommentHandler
- type IssuesHandler
- type ProjectV2Item
- type ProjectsV2ItemEvent
- type ProjectsV2ItemHandler
- type PullRequestHandler
- type PushHandler
- type SecondaryRateLimitWaiter
- type WorkflowRunArtifactHandler
- type WorkflowRunHandler
- type WorkflowRunLogsHandler
Constants ¶
const ( ContextKeyAttributes contextKey = "ce-attributes" ContextKeyType contextKey = "ce-type" ContextKeySubject contextKey = "ce-subject" )
Define constants for the keys to use with context.WithValue.
const ( HeaderRetryAfter = "Retry-After" // The time at which the current rate limit window resets, in UTC epoch seconds HeaderXRateLimitReset = "X-Ratelimit-Reset" // The number of requests remaining in the current rate limit window HeaderXRateLimitRemaining = "X-Ratelimit-Remaining" )
https://docs.github.com/en/rest/using-the-rest-api/rate-limits-for-the-rest-api?apiVersion=2022-11-28#checking-the-status-of-your-rate-limit NOTE: Use the go canonical form (capitals) for these headers, even though they are lowercase in the docs.
Variables ¶
This section is empty.
Functions ¶
func AttributeFromContext ¶ added in v0.5.156
AttributeFromContext retrieves an attribute by key from the context. Returns nil if the attribute does not exist.
func NewSecondaryRateLimitWaiterClient ¶ added in v0.5.156
func NewSecondaryRateLimitWaiterClient(base http.RoundTripper) *http.Client
Types ¶
type Bot ¶
type Bot struct { Name string Handlers map[EventType]EventHandlerFunc }
func NewBot ¶ added in v0.5.156
func NewBot(name string, opts ...BotOptions) Bot
func (*Bot) RegisterHandler ¶ added in v0.5.156
func (b *Bot) RegisterHandler(handler EventHandlerFunc)
type BotOptions ¶ added in v0.5.156
type BotOptions func(*Bot)
func BotWithHandler ¶ added in v0.5.156
func BotWithHandler(handler EventHandlerFunc) BotOptions
type CheckRunHandler ¶ added in v0.5.156
type CheckRunHandler func(ctx context.Context, pre github.CheckRunEvent) error
func (CheckRunHandler) EventType ¶ added in v0.5.156
func (r CheckRunHandler) EventType() EventType
type CheckSuiteHandler ¶ added in v0.5.156
type CheckSuiteHandler func(ctx context.Context, pre github.CheckSuiteEvent) error
func (CheckSuiteHandler) EventType ¶ added in v0.5.156
func (r CheckSuiteHandler) EventType() EventType
type CloneOpts ¶ added in v0.5.156
type CloneOpts struct { // Shallow indicates whether to perform a shallow clone (depth 1). Shallow bool }
CloneOpts contains options for cloning a repository.
type EventHandlerFunc ¶ added in v0.5.156
type EventHandlerFunc interface {
EventType() EventType
}
type EventType ¶ added in v0.5.156
type EventType string
const ( // GitHub events (https://github.com/chainguard-dev/terraform-infra-common/tree/main/modules/github-events) PullRequestEvent EventType = "dev.chainguard.github.pull_request" WorkflowRunEvent EventType = "dev.chainguard.github.workflow_run" IssuesEvent EventType = "dev.chainguard.github.issues" IssueCommentEvent EventType = "dev.chainguard.github.issue_comment" PushEvent EventType = "dev.chainguard.github.push" CheckRunEvent EventType = "dev.chainguard.github.check_run" CheckSuiteEvent EventType = "dev.chainguard.github.check_suite" ProjectsV2ItemEventType EventType = "dev.chainguard.github.projects_v2_item" // LoFo events WorkflowRunArtifactEvent EventType = "dev.chainguard.lofo.workflow_run_artifacts" WorkflowRunLogsEvent EventType = "dev.chainguard.lofo.workflow_run_logs" )
type GitHubClient ¶
type GitHubClient struct {
// contains filtered or unexported fields
}
func NewGitHubClient ¶
func NewGitHubClient(ctx context.Context, org, repo, policyName string, opts ...GitHubClientOption) GitHubClient
NewGitHubClient creates a new GitHub client, using a new token from OctoSTS, for the given org, repo and policy name.
A new token is created for each client, and is not refreshed. It can be revoked with Close.
func NewInstallationClient ¶ added in v0.5.156
func NewInstallationClient(ctx context.Context, org, repo string, tr *ghinstallation.Transport, opts ...GitHubClientOption) GitHubClient
func (GitHubClient) AddComment ¶ added in v0.5.156
func (c GitHubClient) AddComment(ctx context.Context, pr *github.PullRequest, botName, content string) error
AddComment adds a new comment to the given pull request.
func (GitHubClient) AddLabel ¶
func (c GitHubClient) AddLabel(ctx context.Context, pr *github.PullRequest, label string) error
func (GitHubClient) Client ¶
func (c GitHubClient) Client() *github.Client
func (GitHubClient) CloneRepo ¶ added in v0.5.156
func (c GitHubClient) CloneRepo(ctx context.Context, ref, destDir string, opts *CloneOpts) (*git.Repository, error)
CloneRepo clones the repository into a destination directory, and checks out a ref.
ref should be "refs/heads/<branch>" or "refs/tags/<tag>" or "refs/pull/<pr>/merge" or a commit SHA. destDir is the directory to clone the repository into. It will be created if it doesn't exist. if opts is nil, a full clone will be performed.
It returns the git.Repository object for the cloned repository.
func (GitHubClient) FetchWorkflowRunArtifact ¶ added in v0.5.156
func (c GitHubClient) FetchWorkflowRunArtifact(ctx context.Context, wr *github.WorkflowRun, name string) (*zip.Reader, error)
FetchWorkflowRunArtifact returns a zip reader for the artifact with `name` from the given WorkflowRun.
func (GitHubClient) FetchWorkflowRunLogs ¶ added in v0.5.156
func (c GitHubClient) FetchWorkflowRunLogs(ctx context.Context, wr *github.WorkflowRun, store httpreaderat.Store) (*zip.Reader, error)
FetchWorkflowRunLogs returns a Reader for the logs of the given WorkflowRun
func (GitHubClient) GetFileContent ¶ added in v0.5.156
func (c GitHubClient) GetFileContent(ctx context.Context, owner, repo, path, ref string) (string, error)
GetFileContent fetches the content of a file at a given ref
func (GitHubClient) GetRelease ¶ added in v0.5.156
func (c GitHubClient) GetRelease(ctx context.Context, owner, repo, tag string) (*github.RepositoryRelease, error)
GetRelease fetches the release by tag
func (GitHubClient) GetWorkflowRunArtifact
deprecated
added in
v0.5.156
func (c GitHubClient) GetWorkflowRunArtifact(ctx context.Context, wr *github.WorkflowRun, name string) (*zip.Reader, error)
Deprecated: Use FetchWorkflowRunArtifact instead.
func (GitHubClient) GetWorkflowRunLogs
deprecated
added in
v0.5.156
func (c GitHubClient) GetWorkflowRunLogs(ctx context.Context, wre github.WorkflowRunEvent) ([]byte, error)
Deprecated: use FetchWorkflowRunLogs instead.
func (GitHubClient) GetWorkloadRunPullRequestNumber ¶ added in v0.5.156
func (c GitHubClient) GetWorkloadRunPullRequestNumber(ctx context.Context, wre github.WorkflowRunEvent) (int, error)
func (GitHubClient) GitAuth ¶ added in v0.5.156
func (c GitHubClient) GitAuth() (transport.AuthMethod, error)
GitAuth returns a go-git transport.AuthMethod using the GitHubClient's credentials. This is useful for authentication in go-git operations like cloning and fetching repositories.
func (GitHubClient) ListArtifactsFunc ¶ added in v0.5.156
func (c GitHubClient) ListArtifactsFunc(ctx context.Context, wr *github.WorkflowRun, opt *github.ListOptions, f func(artifact *github.Artifact) (bool, error)) error
ListArtifactsFunc executes a paginated list of all artifacts for a given workflow run and executes the provided function on each of the artifacts. The provided function should return a boolean to indicate whether the list operation can stop making API calls.
func (GitHubClient) ListFiles ¶ added in v0.5.156
func (c GitHubClient) ListFiles(ctx context.Context, owner, repo, path, ref string) ([]*github.RepositoryContent, error)
ListFiles lists the files in a directory at a given ref
func (GitHubClient) RemoveLabel ¶
func (c GitHubClient) RemoveLabel(ctx context.Context, pr *github.PullRequest, label string) error
func (GitHubClient) RepoURL ¶ added in v0.5.156
func (c GitHubClient) RepoURL() (string, error)
RepoURL returns the HTTPS git URL of the GitHubClient's configured repository.
func (GitHubClient) SearchContentInFilename ¶ added in v0.5.156
func (c GitHubClient) SearchContentInFilename(ctx context.Context, owner, repo, path, content string, opt *github.ListOptions) (*github.CodeSearchResult, error)
SearchContentInFilename searches for a text in a filename in a specific repository
func (GitHubClient) SearchFilenameInRepository ¶ added in v0.5.156
func (c GitHubClient) SearchFilenameInRepository(ctx context.Context, owner, repo, path string, opt *github.ListOptions) (*github.CodeSearchResult, error)
SearchFilenameInRepository searches for a filename in a specific repository
func (GitHubClient) SetComment ¶
func (c GitHubClient) SetComment(ctx context.Context, pr *github.PullRequest, botName, content string) error
SetComment adds or replaces a bot comment on the given pull request.
type GitHubClientOption ¶ added in v0.5.156
type GitHubClientOption func(*GitHubClient)
GitHubClientOption configures the client, these are ran after the default setup.
func WithBufferSize ¶ added in v0.5.156
func WithBufferSize(bufSize int) GitHubClientOption
func WithClient ¶ added in v0.5.156
func WithClient(client *github.Client) GitHubClientOption
WithClient sets the inner GitHub client to the given client useful for testing
func WithSecondaryRateLimitWaiter ¶ added in v0.5.156
func WithSecondaryRateLimitWaiter() GitHubClientOption
type IssueCommentHandler ¶ added in v0.5.156
type IssueCommentHandler func(ctx context.Context, ice github.IssueCommentEvent) error
func (IssueCommentHandler) EventType ¶ added in v0.5.156
func (r IssueCommentHandler) EventType() EventType
type IssuesHandler ¶ added in v0.5.156
type IssuesHandler func(ctx context.Context, ice github.IssueEvent) error
func (IssuesHandler) EventType ¶ added in v0.5.156
func (r IssuesHandler) EventType() EventType
type ProjectV2Item ¶ added in v0.5.156
type ProjectV2Item struct { ID int64 `json:"id,omitempty"` NodeID string `json:"node_id,omitempty"` ProjectNodeID string `json:"project_node_id,omitempty"` ContentNodeID string `json:"content_node_id,omitempty"` ContentType string `json:"content_type,omitempty"` CreatedAt *github.Timestamp `json:"created_at,omitempty"` UpdatedAt *github.Timestamp `json:"updated_at,omitempty"` ArchivedAt *github.Timestamp `json:"archived_at,omitempty"` }
https://github.com/google/go-github/blob/v60.0.0/github/event_types.go#L1085
type ProjectsV2ItemEvent ¶ added in v0.5.156
type ProjectsV2ItemEvent struct { Action string `json:"action,omitempty"` Changes json.RawMessage `json:"changes,omitempty"` ProjectV2Item *ProjectV2Item `json:"projects_v2_item,omitempty"` Organization *github.Organization `json:"organization,omitempty"` Sender *github.User `json:"sender,omitempty"` }
https://github.com/google/go-github/blob/v60.0.0/github/event_types.go#L1062
ProjectsV2ItemEvent represents a project_v2_item event. It's copied from go-github since their version only supports the `archived` action.
type ProjectsV2ItemHandler ¶ added in v0.5.156
type ProjectsV2ItemHandler func(ctx context.Context, pie ProjectsV2ItemEvent) error
func (ProjectsV2ItemHandler) EventType ¶ added in v0.5.156
func (r ProjectsV2ItemHandler) EventType() EventType
type PullRequestHandler ¶ added in v0.5.156
type PullRequestHandler func(ctx context.Context, pre github.PullRequestEvent) error
func (PullRequestHandler) EventType ¶ added in v0.5.156
func (r PullRequestHandler) EventType() EventType
type PushHandler ¶ added in v0.5.156
func (PushHandler) EventType ¶ added in v0.5.156
func (r PushHandler) EventType() EventType
type SecondaryRateLimitWaiter ¶ added in v0.5.156
type SecondaryRateLimitWaiter struct {
// contains filtered or unexported fields
}
SecondaryRateLimitWaiter
type WorkflowRunArtifactHandler ¶ added in v0.5.156
type WorkflowRunArtifactHandler func(ctx context.Context, wre github.WorkflowRunEvent) error
func (WorkflowRunArtifactHandler) EventType ¶ added in v0.5.156
func (r WorkflowRunArtifactHandler) EventType() EventType
type WorkflowRunHandler ¶ added in v0.5.156
type WorkflowRunHandler func(ctx context.Context, wre github.WorkflowRunEvent) error
func (WorkflowRunHandler) EventType ¶ added in v0.5.156
func (r WorkflowRunHandler) EventType() EventType
type WorkflowRunLogsHandler ¶ added in v0.5.156
type WorkflowRunLogsHandler func(ctx context.Context, wre github.WorkflowRunEvent) error
func (WorkflowRunLogsHandler) EventType ¶ added in v0.5.156
func (r WorkflowRunLogsHandler) EventType() EventType