Documentation
¶
Overview ¶
Package publish delivers rendered reports (report.Artifact) to destinations. A Publisher is the "where" of reporting, separate from the Reporter (the "what", pkg/report). So a scan can render several formats once and deliver them to several destinations.
Each publisher is configured from a saga.PublisherConfig and named by its kind; Kinds lists the built-in set.
Index ¶
- Constants
- func Distinguishes(kind string) string
- func DistinguishingValue(cfg saga.PublisherConfig) string
- func IssueKind(kind string) bool
- func Kinds() []string
- func Local(kind string) bool
- func Renders(kind string) []string
- func Run(ctx context.Context, publishers []saga.PublisherConfig, data report.Data) error
- func Untracked(model *saga.Model) []string
- type Publisher
- type RunPublisher
Constants ¶
const DiffMarker = defaultDiffPRMarker
DiffMarker identifies the sticky comment `draugr diff --publish` maintains.
Exported so the diff command asks for it by name rather than restating the string. It is deliberately not the marker a Saga's PR-comment publisher uses: a run that posts both a report and a delta wants two comments, not one that overwrites the other.
const ReportMarker = defaultPRMarker
ReportMarker identifies the sticky comment a Saga's PR-comment publisher maintains.
Variables ¶
This section is empty.
Functions ¶
func Distinguishes ¶ added in v0.117.0
Distinguishes returns the field that makes a second entry of kind a second destination, empty for a kind this build does not have.
func DistinguishingValue ¶ added in v0.117.0
func DistinguishingValue(cfg saga.PublisherConfig) string
DistinguishingValue returns what cfg wrote in the field that tells two entries of its kind apart.
What the descriptor wrote, not what it resolves to. `repo`, `pr` and `url` all default from the environment, so two entries that write nothing are the same entry twice however they resolve, and that is the case worth catching.
func IssueKind ¶ added in v0.140.0
IssueKind reports whether kind keeps a tracking item, and so reads `label`, `branches`, `select`, `split`, `minPriority` and `item`.
func Local ¶ added in v0.135.0
Local reports whether kind delivers to this machine. A kind this build does not have is not local.
func Renders ¶ added in v0.118.0
Renders returns the formats kind produces for itself, nil for a kind with none and for one this build does not have.
func Run ¶
Run renders each configured report format once, then delivers every rendered artifact to every configured publisher. It returns the first error encountered; a publisher that fails does not prevent the others from being attempted.
func Untracked ¶ added in v0.140.0
Untracked lists the declared components that no issue entry's selection covers, in declaration order, and nil when the descriptor has no issue entry or every entry covers every component.
A component left out of every selection has findings that fail the gate and open no item, which looks the same from the forge as a component with nothing to report.
Types ¶
type Publisher ¶
type Publisher interface {
// Kind is the publisher's config selector, e.g. "file".
Kind() string
// Publish delivers the artifacts. A publisher may use only the artifacts it cares about
// (e.g. a code-scanning publisher would take the SARIF one), ignoring the rest.
Publish(ctx context.Context, artifacts []report.Artifact) error
}
Publisher delivers rendered report artifacts to one destination.
type RunPublisher ¶ added in v0.140.0
type RunPublisher interface {
Publisher
// PublishRun delivers from the run's data, with the same artifacts Publish would receive.
PublishRun(ctx context.Context, data report.Data, artifacts []report.Artifact) error
}
RunPublisher is a Publisher whose delivery depends on the run itself, not only on what was rendered from it. An issue publisher is one: whether to open, update or close an item follows the gate, and what the item lists follows the findings.
Run calls PublishRun in place of Publish when the built publisher implements it.