test-infra: k8s.io/test-infra/prow/config Index | Files | Directories

package config

import "k8s.io/test-infra/prow/config"

Package config knows how to read and parse config.yaml.


Package Files

agent.go branch_protection.go config.go githuboauth.go jobs.go tide.go


const (
    // DefaultJobTimeout represents the default deadline for a prow job.
    DefaultJobTimeout = 24 * time.Hour

    ProwImplicitGitResource = "PROW_IMPLICIT_GIT_REF"
const DefaultConfigPath = "/etc/config/config.yaml"

DefaultConfigPath will be used if a --config-path is unset


var ReProwExtraRef = regexp.MustCompile(`PROW_EXTRA_GIT_REF_(\d+)`)

func BranchRequirements Uses

func BranchRequirements(branch string, jobs []Presubmit) ([]string, []string, []string)

BranchRequirements partitions status contexts for a given org, repo branch into three buckets:

- contexts that are always required to be present
- contexts that are required, _if_ present
- contexts that are always optional

func ClearCompiledRegexes Uses

func ClearCompiledRegexes(presubmits []Presubmit)

ClearCompiledRegexes removes compiled regexes from the presubmits, useful for testing when deep equality is needed between presubmits

func ConfigPath Uses

func ConfigPath(value string) string

ConfigPath returns the value for the component's configPath if provided explicitly or default otherwise.

func DefaultRerunCommandFor Uses

func DefaultRerunCommandFor(name string) string

DefaultRerunCommandFor returns the default rerun command for the job with this name.

func DefaultTriggerFor Uses

func DefaultTriggerFor(name string) string

DefaultTriggerFor returns the default regexp string used to match comments that should trigger the job with this name.

func ReadFileMaybeGZIP Uses

func ReadFileMaybeGZIP(path string) ([]byte, error)

ReadFileMaybeGZIP wraps ioutil.ReadFile, returning the decompressed contents if the file is gzipped, or otherwise the raw contents

func SetPostsubmitRegexes Uses

func SetPostsubmitRegexes(ps []Postsubmit) error

SetPostsubmitRegexes compiles and validates all the regular expressions for the provided postsubmits.

func SetPresubmitRegexes Uses

func SetPresubmitRegexes(js []Presubmit) error

SetPresubmitRegexes compiles and validates all the regular expressions for the provided presubmits.

func ValidateController Uses

func ValidateController(c *Controller) error

ValidateController validates the provided controller config.

func ValidatePipelineRunSpec Uses

func ValidatePipelineRunSpec(jobType prowapi.ProwJobType, extraRefs []prowapi.Refs, spec *pipelinev1alpha1.PipelineRunSpec) error

type Agent Uses

type Agent struct {
    // contains filtered or unexported fields

Agent watches a path and automatically loads the config stored therein.

func (*Agent) Config Uses

func (ca *Agent) Config() *Config

Config returns the latest config. Do not modify the config.

func (*Agent) Set Uses

func (ca *Agent) Set(c *Config)

Set sets the config. Useful for testing.

func (*Agent) Start Uses

func (ca *Agent) Start(prowConfig, jobConfig string) error

Start will begin polling the config file at the path. If the first load fails, Start will return the error and abort. Future load failures will log the failure message but continue attempting to load.

func (*Agent) Subscribe Uses

func (ca *Agent) Subscribe(subscription DeltaChan)

Subscribe registers the channel for messages on config reload. The caller can expect a copy of the previous and current config to be sent down the subscribed channel when a new configuration is loaded.

type Branch Uses

type Branch struct {

Branch holds protection policy overrides for a particular branch.

type BranchProtection Uses

type BranchProtection struct {
    // ProtectTested determines if branch protection rules are set for all repos
    // that Prow has registered jobs for, regardless of if those repos are in the
    // branch protection config.
    ProtectTested bool `json:"protect-tested-repos,omitempty"`
    // Orgs holds branch protection options for orgs by name
    Orgs map[string]Org `json:"orgs,omitempty"`
    // AllowDisabledPolicies allows a child to disable all protection even if the
    // branch has inherited protection options from a parent.
    AllowDisabledPolicies bool `json:"allow_disabled_policies,omitempty"`
    // AllowDisabledJobPolicies allows a branch to choose to opt out of branch protection
    // even if Prow has registered required jobs for that branch.
    AllowDisabledJobPolicies bool `json:"allow_disabled_job_policies,omitempty"`

BranchProtection specifies the global branch protection policy

func (BranchProtection) GetOrg Uses

func (bp BranchProtection) GetOrg(name string) *Org

GetOrg returns the org config after merging in any global policies.

type Brancher Uses

type Brancher struct {
    // Do not run against these branches. Default is no branches.
    SkipBranches []string `json:"skip_branches,omitempty"`
    // Only run against these branches. Default is all branches.
    Branches []string `json:"branches,omitempty"`
    // contains filtered or unexported fields

Brancher is for shared code between jobs that only run against certain branches. An empty brancher runs against all branches.

func (Brancher) Intersects Uses

func (br Brancher) Intersects(other Brancher) bool

Intersects checks if other Brancher would trigger for the same branch.

func (Brancher) RunsAgainstAllBranch Uses

func (br Brancher) RunsAgainstAllBranch() bool

RunsAgainstAllBranch returns true if there are both branches and skip_branches are unset

func (Brancher) ShouldRun Uses

func (br Brancher) ShouldRun(branch string) bool

ShouldRun returns true if the input branch matches, given the whitelist/blacklist.

type Branding Uses

type Branding struct {
    // Logo is the location of the logo that will be loaded in deck.
     string `json:"logo,omitempty"`
    // Favicon is the location of the favicon that will be loaded in deck.
    Favicon string `json:"favicon,omitempty"`
    // BackgroundColor is the color of the background.
    BackgroundColor string `json:"background_color,omitempty"`
    // HeaderColor is the color of the header.
    HeaderColor string `json:"header_color,omitempty"`

Branding holds branding configuration for deck.

type ChangedFilesProvider Uses

type ChangedFilesProvider func() ([]string, error)

ChangedFilesProvider returns a slice of modified files.

func NewGitHubDeferredChangedFilesProvider Uses

func NewGitHubDeferredChangedFilesProvider(client githubClient, org, repo string, num int) ChangedFilesProvider

NewGitHubDeferredChangedFilesProvider uses a closure to lazily retrieve the file changes only if they are needed. We only have to fetch the changes if there is at least one RunIfChanged job that is not being force run (due to a `/retest` after a failure or because it is explicitly triggered with `/test foo`).

type Config Uses

type Config struct {

Config is a read-only snapshot of the config.

func Load Uses

func Load(prowConfig, jobConfig string) (c *Config, err error)

Load loads and parses the config at path.

func (*Config) GetBranchProtection Uses

func (c *Config) GetBranchProtection(org, repo, branch string, presubmits []Presubmit) (*Policy, error)

GetBranchProtection returns the policy for a given branch.

Handles merging any policies defined at repo/org/global levels into the branch policy.

func (*Config) GetPolicy Uses

func (c *Config) GetPolicy(org, repo, branch string, b Branch, presubmits []Presubmit) (*Policy, error)

GetPolicy returns the protection policy for the branch, after merging in presubmits.

func (*Config) GetPresubmits Uses

func (c *Config) GetPresubmits(gc *git.Client, identifier string, baseSHAGetter RefGetter, headSHAGetters ...RefGetter) ([]Presubmit, error)

GetPresubmits will return all presumits for the given identifier. Once https://github.com/kubernetes/test-infra/issues/13370 is resolved, it will also return Presubmits that are versioned inside the tested repo, if that feature is enabled. Consumers that pass in a RefGetter implementation that does a call to GitHub and who also need the result of that GitHub call just keep a pointer to its result, bust must nilcheck that pointer before accessing it.

func (Config) GetTideContextPolicy Uses

func (c Config) GetTideContextPolicy(gitClient *git.Client, org, repo, branch string, baseSHAGetter RefGetter, headSHA string) (*TideContextPolicy, error)

GetTideContextPolicy parses the prow config to find context merge options. If none are set, it will use the prow jobs configured and use the default github combined status. Otherwise if set it will use the branch protection setting, or the listed jobs.

func (*Config) InRepoConfigEnabled Uses

func (c *Config) InRepoConfigEnabled(identifier string) bool

InRepoConfigEnabled returns whether InRepoConfig is enabled. Currently a no-op that always returns false, as the underlying feature is not implemented yet. See https://github.com/kubernetes/test-infra/issues/13370 for a current status.

type ContextPolicy Uses

type ContextPolicy struct {
    // Contexts appends required contexts that must be green to merge
    Contexts []string `json:"contexts,omitempty"`
    // Strict overrides whether new commits in the base branch require updating the PR if set
    Strict *bool `json:"strict,omitempty"`

ContextPolicy configures required github contexts. When merging policies, contexts are appended to context list from parent. Strict determines whether merging to the branch invalidates existing contexts.

type Controller Uses

type Controller struct {
    // JobURLTemplateString compiles into JobURLTemplate at load time.
    JobURLTemplateString string `json:"job_url_template,omitempty"`
    // JobURLTemplate is compiled at load time from JobURLTemplateString. It
    // will be passed a prowapi.ProwJob and is used to set the URL for the
    // "Details" link on GitHub as well as the link from deck.
    JobURLTemplate *template.Template `json:"-"`

    // ReportTemplateString compiles into ReportTemplate at load time.
    ReportTemplateString string `json:"report_template,omitempty"`
    // ReportTemplate is compiled at load time from ReportTemplateString. It
    // will be passed a prowapi.ProwJob and can provide an optional blurb below
    // the test failures comment.
    ReportTemplate *template.Template `json:"-"`

    // MaxConcurrency is the maximum number of tests running concurrently that
    // will be allowed by the controller. 0 implies no limit.
    MaxConcurrency int `json:"max_concurrency,omitempty"`

    // MaxGoroutines is the maximum number of goroutines spawned inside the
    // controller to handle tests. Defaults to 20. Needs to be a positive
    // number.
    MaxGoroutines int `json:"max_goroutines,omitempty"`

    // AllowCancellations enables aborting presubmit jobs for commits that
    // have been superseded by newer commits in GitHub pull requests.
    AllowCancellations bool `json:"allow_cancellations,omitempty"`

Controller holds configuration applicable to all agent-specific prow controllers.

type Cookie struct {
    Secret string `json:"secret,omitempty"`

Cookie holds the secret returned from github that authenticates the user who authorized this app.

type Deck Uses

type Deck struct {
    // Spyglass specifies which viewers will be used for which artifacts when viewing a job in Deck
    Spyglass Spyglass `json:"spyglass,omitempty"`
    // TideUpdatePeriod specifies how often Deck will fetch status from Tide. Defaults to 10s.
    TideUpdatePeriod *metav1.Duration `json:"tide_update_period,omitempty"`
    // HiddenRepos is a list of orgs and/or repos that should not be displayed by Deck.
    HiddenRepos []string `json:"hidden_repos,omitempty"`
    // ExternalAgentLogs ensures external agents can expose
    // their logs in prow.
    ExternalAgentLogs []ExternalAgentLog `json:"external_agent_logs,omitempty"`
    // Branding of the frontend
    Branding *Branding `json:"branding,omitempty"`
    // GoogleAnalytics, if specified, include a Google Analytics tracking code on each page.
    GoogleAnalytics string `json:"google_analytics,omitempty"`
    // RerunAuthConfig specifies who is able to trigger job reruns if that feature is enabled.
    // The permissions here apply to all jobs. GitHub teams are not yet supported
    // for the global Deck config.
    RerunAuthConfig prowapi.RerunAuthConfig `json:"rerun_auth_config,omitempty"`

Deck holds config for deck.

type Delta Uses

type Delta struct {
    Before, After Config

Delta represents the before and after states of a Config change detected by the Agent.

type DeltaChan Uses

type DeltaChan = chan<- Delta

DeltaChan is a channel to receive config delta events when config changes.

type ExternalAgentLog Uses

type ExternalAgentLog struct {
    // Agent is an external prow agent that supports exposing
    // logs via deck.
    Agent string `json:"agent,omitempty"`
    // SelectorString compiles into Selector at load time.
    SelectorString string `json:"selector,omitempty"`
    // Selector can be used in prow deployments where the workload has
    // been sharded between controllers of the same agent. For more info
    // see https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
    Selector labels.Selector `json:"-"`
    // URLTemplateString compiles into URLTemplate at load time.
    URLTemplateString string `json:"url_template,omitempty"`
    // URLTemplate is compiled at load time from URLTemplateString. It
    // will be passed a prowapi.ProwJob and the generated URL should provide
    // logs for the ProwJob.
    URLTemplate *template.Template `json:"-"`

ExternalAgentLog ensures an external agent like Jenkins can expose its logs in prow.

type Gerrit Uses

type Gerrit struct {
    // TickInterval is how often we do a sync with binded gerrit instance
    TickInterval *metav1.Duration `json:"tick_interval,omitempty"`
    // RateLimit defines how many changes to query per gerrit API call
    // default is 5
    RateLimit int `json:"ratelimit,omitempty"`

Gerrit is config for the gerrit controller.

type Getter Uses

type Getter func() *Config

Getter returns the current Config in a thread-safe manner.

type GitHubOAuthConfig Uses

type GitHubOAuthConfig struct {
    ClientID     string   `json:"client_id"`
    ClientSecret string   `json:"client_secret"`
    RedirectURL  string   `json:"redirect_url"`
    Scopes       []string `json:"scopes,omitempty"`

    CookieStore *sessions.CookieStore `json:"-"`

GitHubOAuthConfig is a config for requesting users access tokens from GitHub API. It also has a Cookie Store that retains user credentials deriving from GitHub API.

func (*GitHubOAuthConfig) InitGitHubOAuthConfig Uses

func (gac *GitHubOAuthConfig) InitGitHubOAuthConfig(cookie *sessions.CookieStore)

InitGitHubOAuthConfig creates an OAuthClient using GitHubOAuth config and a Cookie Store to retain user credentials.

type GitHubOptions Uses

type GitHubOptions struct {
    // LinkURLFromConfig is the string representation of the link_url config parameter.
    // This config parameter allows users to override the default GitHub link url for all plugins.
    // If this option is not set, we assume "https://github.com".
    LinkURLFromConfig string `json:"link_url,omitempty"`

    // LinkURL is the url representation of LinkURLFromConfig. This variable should be used
    // in all places internally.
    LinkURL *url.URL

GitHubOptions allows users to control how prow applications display GitHub website links.

type GitHubReporter Uses

type GitHubReporter struct {
    // JobTypesToReport is used to determine which type of prowjob
    // should be reported to github
    // defaults to both presubmit and postsubmit jobs.
    JobTypesToReport []prowapi.ProwJobType `json:"job_types_to_report,omitempty"`

GitHubReporter holds the config for report behavior in github

type InRepoConfig Uses

type InRepoConfig struct {
    // Enabled describes whether InRepoConfig is enabled for a given repository. This can
    // be set globally, per org or per repo using '*', 'org' or 'org/repo' as key. The
    // narrowest match always takes precedence.
    Enabled map[string]*bool

type JenkinsOperator Uses

type JenkinsOperator struct {
    Controller `json:",inline"`
    // LabelSelectorString compiles into LabelSelector at load time.
    // If set, this option needs to match --label-selector used by
    // the desired jenkins-operator. This option is considered
    // invalid when provided with a single jenkins-operator config.
    // For label selector syntax, see below:
    // https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
    LabelSelectorString string `json:"label_selector,omitempty"`
    // LabelSelector is used so different jenkins-operator replicas
    // can use their own configuration.
    LabelSelector labels.Selector `json:"-"`

JenkinsOperator is config for the jenkins-operator controller.

type JenkinsSpec Uses

type JenkinsSpec struct {
    // Job is managed by the GH branch source plugin
    // and requires a specific path
    GitHubBranchSourceJob bool `json:"github_branch_source_job,omitempty"`

JenkinsSpec holds optional Jenkins job config

type JobBase Uses

type JobBase struct {
    // The name of the job. Must match regex [A-Za-z0-9-._]+
    // e.g. pull-test-infra-bazel-build
    Name string `json:"name"`
    // Labels are added to prowjobs and pods created for this job.
    Labels map[string]string `json:"labels,omitempty"`
    // MaximumConcurrency of this job, 0 implies no limit.
    MaxConcurrency int `json:"max_concurrency,omitempty"`
    // Agent that will take care of running this job. Defaults to "kubernetes"
    Agent string `json:"agent,omitempty"`
    // Cluster is the alias of the cluster to run this job in.
    // (Default: kube.DefaultClusterAlias)
    Cluster string `json:"cluster,omitempty"`
    // Namespace is the namespace in which pods schedule.
    //   nil: results in config.PodNamespace (aka pod default)
    //   empty: results in config.ProwJobNamespace (aka same as prowjob)
    Namespace *string `json:"namespace,omitempty"`
    // ErrorOnEviction indicates that the ProwJob should be completed and given
    // the ErrorState status if the pod that is executing the job is evicted.
    // If this field is unspecified or false, a new pod will be created to replace
    // the evicted one.
    ErrorOnEviction bool `json:"error_on_eviction,omitempty"`
    // SourcePath contains the path where this job is defined
    SourcePath string `json:"-"`
    // Spec is the Kubernetes pod spec used if Agent is kubernetes.
    Spec *v1.PodSpec `json:"spec,omitempty"`
    // BuildSpec is the Knative build spec used if Agent is knative-build.
    BuildSpec *buildv1alpha1.BuildSpec `json:"build_spec,omitempty"`
    // PipelineRunSpec is the tekton pipeline spec used if Agent is tekton-pipeline.
    PipelineRunSpec *pipelinev1alpha1.PipelineRunSpec `json:"pipeline_run_spec,omitempty"`
    // Annotations are unused by prow itself, but provide a space to configure other automation.
    Annotations map[string]string `json:"annotations,omitempty"`
    // ReporterConfig provides the option to configure reporting on job level
    ReporterConfig *prowapi.ReporterConfig `json:"reporter_config,omitempty"`
    // RerunAuthConfig specifies who can rerun the job
    RerunAuthConfig *prowapi.RerunAuthConfig `json:"rerun_auth_config,omitempty"`
    // Hidden defines if the job is hidden. If set to `true`, only Deck instances
    // that have the flag `--hiddenOnly=true or `--show-hidden=true` set will show it.
    // Presubmits and Postsubmits can also be set to hidden by
    // adding their repository in Decks `hidden_repo` setting.
    Hidden bool `json:"hidden,omitempty"`


JobBase contains attributes common to all job types

type JobConfig Uses

type JobConfig struct {
    // Presets apply to all job types.
    Presets []Preset `json:"presets,omitempty"`
    // .PresubmitsStatic contains the presubmits in Prows main config.
    // **Warning:** This does not return dynamic Presubmits configured
    // inside the code repo, hence giving an incomplete view. Use
    // `GetPresubmits` instead if possible.
    PresubmitsStatic map[string][]Presubmit `json:"presubmits,omitempty"`
    // Full repo name (such as "kubernetes/kubernetes") -> list of jobs.
    Postsubmits map[string][]Postsubmit `json:"postsubmits,omitempty"`

    // Periodics are not associated with any repo.
    Periodics []Periodic `json:"periodics,omitempty"`

    // AllRepos contains all Repos that have one or more jobs configured or
    // for which a tide query is configured.
    AllRepos sets.String `json:"-"`

    // FakeInRepoConfig is used for tests. Its key is the headSHA.
    FakeInRepoConfig map[string][]Presubmit `json:"-"`

JobConfig is config for all prow jobs

func ReadJobConfig Uses

func ReadJobConfig(jobConfig string) (JobConfig, error)

ReadJobConfig reads the JobConfig yaml, but does not expand or validate it.

func (*JobConfig) AllPeriodics Uses

func (c *JobConfig) AllPeriodics() []Periodic

AllPeriodics returns all prow periodic jobs.

func (*JobConfig) AllPostsubmits Uses

func (c *JobConfig) AllPostsubmits(repos []string) []Postsubmit

AllPostsubmits returns all prow postsubmit jobs in repos. if repos is empty, return all postsubmits.

func (*JobConfig) AllStaticPresubmits Uses

func (c *JobConfig) AllStaticPresubmits(repos []string) []Presubmit

AllStaticPresubmits returns all static prow presubmit jobs in repos. if repos is empty, return all presubmits. Be aware that this does not return Presubmits that are versioned inside the repo via the `inrepoconfig` feature and hence this list may be incomplete.

func (*JobConfig) SetPostsubmits Uses

func (c *JobConfig) SetPostsubmits(jobs map[string][]Postsubmit) error

SetPostsubmits updates c.Postsubmits to jobs, after compiling and validating their regexes.

func (*JobConfig) SetPresubmits Uses

func (c *JobConfig) SetPresubmits(jobs map[string][]Presubmit) error

SetPresubmits updates c.PresubmitStatic to jobs, after compiling and validating their regexes.

type LensConfig Uses

type LensConfig struct {
    // Name is the name of the lens.
    Name string `json:"name"`
    // Config is some lens-specific configuration. Interpreting it is the responsibility of the
    // lens in question.
    Config json.RawMessage `json:"config"`

LensConfig names a specific lens, and optionally provides some configuration for it.

type LensFileConfig Uses

type LensFileConfig struct {
    // RequiredFiles is a list of regexes of file paths that must all be present for a lens to appear.
    // The list entries are ANDed together, i.e. all of them are required. You can achieve an OR
    // by using a pipe in a regex.
    RequiredFiles []string `json:"required_files"`
    // OptionalFiles is a list of regexes of file paths that will be provided to the lens if they are
    // present, but will not preclude the lens being rendered by their absence.
    // The list entries are ORed together, so if only one of them is present it will be provided to
    // the lens even if the others are not.
    OptionalFiles []string `json:"optional_files,omitempty"`
    // Lens is the lens to use, alongside any lens-specific configuration.
    Lens LensConfig `json:"lens"`

LensFileConfig is a single entry under Lenses, describing how to configure a lens to read a given set of files.

type Org Uses

type Org struct {
    Repos map[string]Repo `json:"repos,omitempty"`

Org holds the default protection policy for an entire org, as well as any repo overrides.

func (Org) GetRepo Uses

func (o Org) GetRepo(name string) *Repo

GetRepo returns the repo config after merging in any org policies.

type OwnersDirBlacklist Uses

type OwnersDirBlacklist struct {
    // Repos configures a directory blacklist per repo (or org)
    Repos map[string][]string `json:"repos"`
    // Default configures a default blacklist for all repos (or orgs).
    // Some directories like ".git", "_output" and "vendor/.*/OWNERS"
    // are already preconfigured to be blacklisted, and need not be included here.
    Default []string `json:"default"`
    // By default, some directories like ".git", "_output" and "vendor/.*/OWNERS"
    // are preconfigured to be blacklisted.
    // If set, IgnorePreconfiguredDefaults will not add these preconfigured directories
    // to the blacklist.
    IgnorePreconfiguredDefaults bool `json:"ignore_preconfigured_defaults,omitempty"`

OwnersDirBlacklist is used to configure regular expressions matching directories to ignore when searching for OWNERS{,_ALIAS} files in a repo.

func (OwnersDirBlacklist) DirBlacklist Uses

func (ownersDirBlacklist OwnersDirBlacklist) DirBlacklist(org, repo string) (blacklist []string)

DirBlacklist returns regular expressions matching directories to ignore when searching for OWNERS{,_ALIAS} files in a repo.

type Periodic Uses

type Periodic struct {

    // (deprecated)Interval to wait between two runs of the job.
    Interval string `json:"interval,omitempty"`
    // Cron representation of job trigger time
    Cron string `json:"cron,omitempty"`
    // Tags for config entries
    Tags []string `json:"tags,omitempty"`
    // contains filtered or unexported fields

Periodic runs on a timer.

func (*Periodic) GetInterval Uses

func (p *Periodic) GetInterval() time.Duration

GetInterval returns interval, the frequency duration it runs.

func (*Periodic) SetInterval Uses

func (p *Periodic) SetInterval(d time.Duration)

SetInterval updates interval, the frequency duration it runs.

type Plank Uses

type Plank struct {
    Controller `json:",inline"`
    // PodPendingTimeout is after how long the controller will perform a garbage
    // collection on pending pods. Defaults to one day.
    PodPendingTimeout *metav1.Duration `json:"pod_pending_timeout,omitempty"`
    // PodRunningTimeout is after how long the controller will abort a prowjob pod
    // stuck in running state. Defaults to two days.
    PodRunningTimeout *metav1.Duration `json:"pod_running_timeout,omitempty"`
    // DefaultDecorationConfig are defaults for shared fields for ProwJobs
    // that request to have their PodSpecs decorated.
    // This will be deprecated on April 2020, and it will be replaces with DefaultDecorationConfigs['*'] instead.
    DefaultDecorationConfig *prowapi.DecorationConfig `json:"default_decoration_config,omitempty"`

    // DefaultDecorationConfigs holds the default decoration config for specific values.
    // This config will be used on each Presubmit and Postsubmit's corresponding org/repo, and on Periodics
    // if extraRefs[0] exists. The missing fields will be merged with the DefaultDecorationConfig.
    // Use `org/repo`, `org` or `*` as a key.
    DefaultDecorationConfigs map[string]*prowapi.DecorationConfig `json:"default_decoration_configs,omitempty"`

    // JobURLPrefixConfig is the host and path prefix under which job details
    // will be viewable. Use `org/repo`, `org` or `*`as key and an url as value
    JobURLPrefixConfig map[string]string `json:"job_url_prefix_config,omitempty"`

Plank is config for the plank controller.

func (Plank) GetDefaultDecorationConfigs Uses

func (p Plank) GetDefaultDecorationConfigs(repo string) *prowapi.DecorationConfig

func (Plank) GetJobURLPrefix Uses

func (p Plank) GetJobURLPrefix(refs *prowapi.Refs) string

type Policy Uses

type Policy struct {
    // Protect overrides whether branch protection is enabled if set.
    Protect *bool `json:"protect,omitempty"`
    // RequiredStatusChecks configures github contexts
    RequiredStatusChecks *ContextPolicy `json:"required_status_checks,omitempty"`
    // Admins overrides whether protections apply to admins if set.
    Admins *bool `json:"enforce_admins,omitempty"`
    // Restrictions limits who can merge
    Restrictions *Restrictions `json:"restrictions,omitempty"`
    // RequiredPullRequestReviews specifies github approval/review criteria.
    RequiredPullRequestReviews *ReviewPolicy `json:"required_pull_request_reviews,omitempty"`
    // Exclude specifies a set of regular expressions which identify branches
    // that should be excluded from the protection policy
    Exclude []string `json:"exclude,omitempty"`

Policy for the config/org/repo/branch. When merging policies, a nil value results in inheriting the parent policy.

func (Policy) Apply Uses

func (p Policy) Apply(child Policy) Policy

Apply returns a policy that merges the child into the parent

type Postsubmit Uses

type Postsubmit struct {



    // TODO(krzyzacy): Move existing `Report` into `Skip_Report` once this is deployed

    JenkinsSpec *JenkinsSpec `json:"jenkins_spec,omitempty"`

Postsubmit runs on push events.

func (Postsubmit) CouldRun Uses

func (ps Postsubmit) CouldRun(baseRef string) bool

CouldRun determines if the postsubmit could run against a specific base ref

func (Postsubmit) ShouldRun Uses

func (ps Postsubmit) ShouldRun(baseRef string, changes ChangedFilesProvider) (bool, error)

ShouldRun determines if the postsubmit should run in response to a set of changes. This is evaluated lazily, if necessary.

type Preset Uses

type Preset struct {
    Labels       map[string]string `json:"labels"`
    Env          []v1.EnvVar       `json:"env"`
    Volumes      []v1.Volume       `json:"volumes"`
    VolumeMounts []v1.VolumeMount  `json:"volumeMounts"`

Preset is intended to match the k8s' PodPreset feature, and may be removed if that feature goes beta.

type Presubmit Uses

type Presubmit struct {

    // AlwaysRun automatically for every PR, or only when a comment triggers it.
    AlwaysRun bool `json:"always_run"`

    // Optional indicates that the job's status context should not be required for merge.
    Optional bool `json:"optional,omitempty"`

    // Trigger is the regular expression to trigger the job.
    // e.g. `@k8s-bot e2e test this`
    // RerunCommand must also be specified if this field is specified.
    // (Default: `(?m)^/test (?:.*? )?<job name>(?: .*?)?$`)
    Trigger string `json:"trigger,omitempty"`

    // The RerunCommand to give users. Must match Trigger.
    // Trigger must also be specified if this field is specified.
    // (Default: `/test <job name>`)
    RerunCommand string `json:"rerun_command,omitempty"`




    JenkinsSpec *JenkinsSpec `json:"jenkins_spec,omitempty"`
    // contains filtered or unexported fields

Presubmit runs on PRs.

func (Presubmit) ContextRequired Uses

func (ps Presubmit) ContextRequired() bool

ContextRequired checks whether a context is required from github points of view (required check).

func (Presubmit) CouldRun Uses

func (ps Presubmit) CouldRun(baseRef string) bool

CouldRun determines if the presubmit could run against a specific base ref

func (Presubmit) NeedsExplicitTrigger Uses

func (ps Presubmit) NeedsExplicitTrigger() bool

NeedsExplicitTrigger determines if the presubmit requires a human action to trigger it or not.

func (Presubmit) ShouldRun Uses

func (ps Presubmit) ShouldRun(baseRef string, changes ChangedFilesProvider, forced, defaults bool) (bool, error)

ShouldRun determines if the presubmit should run against a specific base ref, or in response to a set of changes. The latter mechanism is evaluated lazily, if necessary.

func (Presubmit) TriggerMatches Uses

func (ps Presubmit) TriggerMatches(body string) bool

TriggerMatches returns true if the comment body should trigger this presubmit.

This is usually a /test foo string.

func (Presubmit) TriggersConditionally Uses

func (ps Presubmit) TriggersConditionally() bool

TriggersConditionally determines if the presubmit triggers conditionally (if it may or may not trigger).

type ProwConfig Uses

type ProwConfig struct {
    Tide             Tide             `json:"tide,omitempty"`
    Plank            Plank            `json:"plank,omitempty"`
    Sinker           Sinker           `json:"sinker,omitempty"`
    Deck             Deck             `json:"deck,omitempty"`
    BranchProtection BranchProtection `json:"branch-protection,omitempty"`
    Gerrit           Gerrit           `json:"gerrit,omitempty"`
    GitHubReporter   GitHubReporter   `json:"github_reporter,omitempty"`
    SlackReporter    *SlackReporter   `json:"slack_reporter,omitempty"`
    InRepoConfig     InRepoConfig     `json:"in_repo_config"`

    // TODO: Move this out of the main config.
    JenkinsOperators []JenkinsOperator `json:"jenkins_operators,omitempty"`

    // ProwJobNamespace is the namespace in the cluster that prow
    // components will use for looking up ProwJobs. The namespace
    // needs to exist and will not be created by prow.
    // Defaults to "default".
    ProwJobNamespace string `json:"prowjob_namespace,omitempty"`
    // PodNamespace is the namespace in the cluster that prow
    // components will use for looking up Pods owned by ProwJobs.
    // The namespace needs to exist and will not be created by prow.
    // Defaults to "default".
    PodNamespace string `json:"pod_namespace,omitempty"`

    // LogLevel enables dynamically updating the log level of the
    // standard logger that is used by all prow components.
    // Valid values:
    // "debug", "info", "warn", "warning", "error", "fatal", "panic"
    // Defaults to "info".
    LogLevel string `json:"log_level,omitempty"`

    // PushGateway is a prometheus push gateway.
    PushGateway PushGateway `json:"push_gateway,omitempty"`

    // OwnersDirBlacklist is used to configure regular expressions matching directories
    // to ignore when searching for OWNERS{,_ALIAS} files in a repo.
    OwnersDirBlacklist OwnersDirBlacklist `json:"owners_dir_blacklist,omitempty"`

    // Pub/Sub Subscriptions that we want to listen to
    PubSubSubscriptions PubsubSubscriptions `json:"pubsub_subscriptions,omitempty"`

    // GitHubOptions allows users to control how prow applications display GitHub website links.
    GitHubOptions GitHubOptions `json:"github,omitempty"`

    // StatusErrorLink is the url that will be used for jenkins prowJobs that can't be
    // found, or have another generic issue. The default that will be used if this is not set
    // is: https://github.com/kubernetes/test-infra/issues
    StatusErrorLink string `json:"status_error_link,omitempty"`

    // DefaultJobTimeout this is default deadline for prow jobs. This value is used when
    // no timeout is configured at the job level. This value is set to 24 hours.
    DefaultJobTimeout *metav1.Duration `json:"default_job_timeout,omitempty"`

ProwConfig is config for all prow controllers

type PubsubSubscriptions Uses

type PubsubSubscriptions map[string][]string

PubSubSubscriptions maps GCP projects to a list of Topics.

type PushGateway Uses

type PushGateway struct {
    // Endpoint is the location of the prometheus pushgateway
    // where prow will push metrics to.
    Endpoint string `json:"endpoint,omitempty"`
    // Interval specifies how often prow will push metrics
    // to the pushgateway. Defaults to 1m.
    Interval *metav1.Duration `json:"interval,omitempty"`
    // ServeMetrics tells if or not the components serve metrics
    ServeMetrics bool `json:"serve_metrics"`

PushGateway is a prometheus push gateway.

type QueryMap Uses

type QueryMap struct {
    // contains filtered or unexported fields

QueryMap is a struct mapping from "org/repo" -> TideQueries that apply to that org or repo. It is lazily populated, but threadsafe.

func (*QueryMap) ForRepo Uses

func (qm *QueryMap) ForRepo(org, repo string) TideQueries

ForRepo returns the tide queries that apply to a repo.

type RefGetter Uses

type RefGetter = func() (string, error)

RefGetter is used to retrieve a Git Reference. Its purpose is to be able to defer calling out to GitHub in the context of inrepoconfig to make sure its only done when we actually need to have that info.

type RefGetterForGitHubPullRequest Uses

type RefGetterForGitHubPullRequest struct {
    // contains filtered or unexported fields

RefGetterForGitHubPullRequest is used to get the Presubmits for a GitHub PullRequest when that PullRequest wasn't fetched yet. It will only fetch it if someone calls its .PullRequest() func. It is threadsafe.

func NewRefGetterForGitHubPullRequest Uses

func NewRefGetterForGitHubPullRequest(ghc refGetterForGitHubPullRequestClient, org, repo string, number int) *RefGetterForGitHubPullRequest

NewRefGetterForGitHubPullRequest returns a brand new RefGetterForGitHubPullRequest

func (*RefGetterForGitHubPullRequest) BaseSHA Uses

func (rg *RefGetterForGitHubPullRequest) BaseSHA() (string, error)

BaseSHA is a RefGetter that returns the baseRef for the PullRequest

func (*RefGetterForGitHubPullRequest) HeadSHA Uses

func (rg *RefGetterForGitHubPullRequest) HeadSHA() (string, error)

HeadSHA is a RefGetter that returns the headSHA for the PullRequst

func (*RefGetterForGitHubPullRequest) PullRequest Uses

func (rg *RefGetterForGitHubPullRequest) PullRequest() (*github.PullRequest, error)

type RegexpChangeMatcher Uses

type RegexpChangeMatcher struct {
    // RunIfChanged defines a regex used to select which subset of file changes should trigger this job.
    // If any file in the changeset matches this regex, the job will be triggered
    RunIfChanged string `json:"run_if_changed,omitempty"`
    // contains filtered or unexported fields

RegexpChangeMatcher is for code shared between jobs that run only when certain files are changed.

func (RegexpChangeMatcher) CouldRun Uses

func (cm RegexpChangeMatcher) CouldRun() bool

CouldRun determines if its possible for a set of changes to trigger this condition

func (RegexpChangeMatcher) RunsAgainstChanges Uses

func (cm RegexpChangeMatcher) RunsAgainstChanges(changes []string) bool

RunsAgainstChanges returns true if any of the changed input paths match the run_if_changed regex.

func (RegexpChangeMatcher) ShouldRun Uses

func (cm RegexpChangeMatcher) ShouldRun(changes ChangedFilesProvider) (determined bool, shouldRun bool, err error)

ShouldRun determines if we can know for certain that the job should run. We can either know for certain that the job should or should not run based on the matcher, or we can not be able to determine that fact at all.

type Repo Uses

type Repo struct {
    Branches map[string]Branch `json:"branches,omitempty"`

Repo holds protection policy overrides for all branches in a repo, as well as specific branch overrides.

func (Repo) GetBranch Uses

func (r Repo) GetBranch(name string) (*Branch, error)

GetBranch returns the branch config after merging in any repo policies.

type Reporter Uses

type Reporter struct {
    // Context is the name of the GitHub status context for the job.
    // Defaults: the same as the name of the job.
    Context string `json:"context,omitempty"`
    // SkipReport skips commenting and setting status on GitHub.
    SkipReport bool `json:"skip_report,omitempty"`

type Restrictions Uses

type Restrictions struct {
    Users []string `json:"users"`
    Teams []string `json:"teams"`

Restrictions limits who can merge Users and Teams items are appended to parent lists.

type ReviewPolicy Uses

type ReviewPolicy struct {
    // Restrictions appends users/teams that are allowed to merge
    DismissalRestrictions *Restrictions `json:"dismissal_restrictions,omitempty"`
    // DismissStale overrides whether new commits automatically dismiss old reviews if set
    DismissStale *bool `json:"dismiss_stale_reviews,omitempty"`
    // RequireOwners overrides whether CODEOWNERS must approve PRs if set
    RequireOwners *bool `json:"require_code_owner_reviews,omitempty"`
    // Approvals overrides the number of approvals required if set (set to 0 to disable)
    Approvals *int `json:"required_approving_review_count,omitempty"`

ReviewPolicy specifies github approval/review criteria. Any nil values inherit the policy from the parent, otherwise bool/ints are overridden. Non-empty lists are appended to parent lists.

type Sinker Uses

type Sinker struct {
    // ResyncPeriod is how often the controller will perform a garbage
    // collection. Defaults to one hour.
    ResyncPeriod *metav1.Duration `json:"resync_period,omitempty"`
    // MaxProwJobAge is how old a ProwJob can be before it is garbage-collected.
    // Defaults to one week.
    MaxProwJobAge *metav1.Duration `json:"max_prowjob_age,omitempty"`
    // MaxPodAge is how old a Pod can be before it is garbage-collected.
    // Defaults to one day.
    MaxPodAge *metav1.Duration `json:"max_pod_age,omitempty"`

Sinker is config for the sinker controller.

type SlackReporter Uses

type SlackReporter struct {
    JobTypesToReport  []prowapi.ProwJobType  `json:"job_types_to_report"`
    JobStatesToReport []prowapi.ProwJobState `json:"job_states_to_report"`
    Channel           string                 `json:"channel"`
    ReportTemplate    string                 `json:"report_template"`

SlackReporter represents the config for the Slack reporter. The channel can be overridden on the job via the .reporter_config.slack.channel property

func (*SlackReporter) DefaultAndValidate Uses

func (cfg *SlackReporter) DefaultAndValidate() error

type Spyglass Uses

type Spyglass struct {
    // Lenses is a list of lens configurations.
    Lenses []LensFileConfig `json:"lenses,omitempty"`
    // Viewers is deprecated, prefer Lenses instead.
    // Viewers was a map of Regexp strings to viewer names that defines which sets
    // of artifacts need to be consumed by which viewers. It is copied in to Lenses at load time.
    Viewers map[string][]string `json:"viewers,omitempty"`
    // RegexCache is a map of lens regexp strings to their compiled equivalents.
    RegexCache map[string]*regexp.Regexp `json:"-"`
    // SizeLimit is the max size artifact in bytes that Spyglass will attempt to
    // read in entirety. This will only affect viewers attempting to use
    // artifact.ReadAll(). To exclude outlier artifacts, set this limit to
    // expected file size + variance. To include all artifacts with high
    // probability, use 2*maximum observed artifact size.
    SizeLimit int64 `json:"size_limit,omitempty"`
    // GCSBrowserPrefix is used to generate a link to a human-usable GCS browser.
    // If left empty, the link will be not be shown. Otherwise, a GCS path (with no
    // prefix or scheme) will be appended to GCSBrowserPrefix and shown to the user.
    GCSBrowserPrefix string `json:"gcs_browser_prefix,omitempty"`
    // If set, Announcement is used as a Go HTML template string to be displayed at the top of
    // each spyglass page. Using HTML in the template is acceptable.
    // Currently the only variable available is .ArtifactPath, which contains the GCS path for the job artifacts.
    Announcement string `json:"announcement,omitempty"`
    // TestGridConfig is the path to the TestGrid config proto. If the path begins with
    // "gs://" it is assumed to be a GCS reference, otherwise it is read from the local filesystem.
    // If left blank, TestGrid links will not appear.
    TestGridConfig string `json:"testgrid_config,omitempty"`
    // TestGridRoot is the root URL to the TestGrid frontend, e.g. "https://testgrid.k8s.io/".
    // If left blank, TestGrid links will not appear.
    TestGridRoot string `json:"testgrid_root,omitempty"`

Spyglass holds config for Spyglass

type Tide Uses

type Tide struct {
    // SyncPeriod specifies how often Tide will sync jobs with GitHub. Defaults to 1m.
    SyncPeriod *metav1.Duration `json:"sync_period,omitempty"`
    // StatusUpdatePeriod specifies how often Tide will update GitHub status contexts.
    // Defaults to the value of SyncPeriod.
    StatusUpdatePeriod *metav1.Duration `json:"status_update_period,omitempty"`
    // Queries represents a list of GitHub search queries that collectively
    // specify the set of PRs that meet merge requirements.
    Queries TideQueries `json:"queries,omitempty"`

    // A key/value pair of an org/repo as the key and merge method to override
    // the default method of merge. Valid options are squash, rebase, and merge.
    MergeType map[string]github.PullRequestMergeType `json:"merge_method,omitempty"`

    // A key/value pair of an org/repo as the key and Go template to override
    // the default merge commit title and/or message. Template is passed the
    // PullRequest struct (prow/github/types.go#PullRequest)
    MergeTemplate map[string]TideMergeCommitTemplate `json:"merge_commit_template,omitempty"`

    // URL for tide status contexts.
    // We can consider allowing this to be set separately for separate repos, or
    // allowing it to be a template.
    TargetURL string `json:"target_url,omitempty"`

    // PRStatusBaseURL is the base URL for the PR status page.
    // This is used to link to a merge requirements overview
    // in the tide status context.
    PRStatusBaseURL string `json:"pr_status_base_url,omitempty"`

    // BlockerLabel is an optional label that is used to identify merge blocking
    // GitHub issues.
    // Leave this blank to disable this feature and save 1 API token per sync loop.
    BlockerLabel string `json:"blocker_label,omitempty"`

    // SquashLabel is an optional label that is used to identify PRs that should
    // always be squash merged.
    // Leave this blank to disable this feature.
    SquashLabel string `json:"squash_label,omitempty"`

    // RebaseLabel is an optional label that is used to identify PRs that should
    // always be rebased and merged.
    // Leave this blank to disable this feature.
    RebaseLabel string `json:"rebase_label,omitempty"`

    // MergeLabel is an optional label that is used to identify PRs that should
    // always be merged with all individual commits from the PR.
    // Leave this blank to disable this feature.
    MergeLabel string `json:"merge_label,omitempty"`

    // MaxGoroutines is the maximum number of goroutines spawned inside the
    // controller to handle org/repo:branch pools. Defaults to 20. Needs to be a
    // positive number.
    MaxGoroutines int `json:"max_goroutines,omitempty"`

    // TideContextPolicyOptions defines merge options for context. If not set it will infer
    // the required and optional contexts from the prow jobs configured and use the github
    // combined status; otherwise it may apply the branch protection setting or let user
    // define their own options in case branch protection is not used.
    ContextOptions TideContextPolicyOptions `json:"context_options,omitempty"`

    // BatchSizeLimitMap is a key/value pair of an org or org/repo as the key and
    // integer batch size limit as the value. The empty string key can be used as
    // a global default.
    // Special values:
    //  0 => unlimited batch size
    // -1 => batch merging disabled :(
    BatchSizeLimitMap map[string]int `json:"batch_size_limit,omitempty"`

Tide is config for the tide pool.

func (*Tide) BatchSizeLimit Uses

func (t *Tide) BatchSizeLimit(org, repo string) int

func (*Tide) MergeCommitTemplate Uses

func (t *Tide) MergeCommitTemplate(org, repo string) TideMergeCommitTemplate

MergeCommitTemplate returns a struct with Go template string(s) or nil

func (*Tide) MergeMethod Uses

func (t *Tide) MergeMethod(org, repo string) github.PullRequestMergeType

MergeMethod returns the merge method to use for a repo. The default of merge is returned when not overridden.

type TideContextPolicy Uses

type TideContextPolicy struct {
    // whether to consider unknown contexts optional (skip) or required.
    SkipUnknownContexts       *bool    `json:"skip-unknown-contexts,omitempty"`
    RequiredContexts          []string `json:"required-contexts,omitempty"`
    RequiredIfPresentContexts []string `json:"required-if-present-contexts"`
    OptionalContexts          []string `json:"optional-contexts,omitempty"`
    // Infer required and optional jobs from Branch Protection configuration
    FromBranchProtection *bool `json:"from-branch-protection,omitempty"`

TideContextPolicy configures options about how to handle various contexts.

func (*TideContextPolicy) IsOptional Uses

func (cp *TideContextPolicy) IsOptional(c string) bool

IsOptional checks whether a context can be ignored. Will return true if - context is registered as optional - required contexts are registered and the context provided is not required Will return false otherwise. Every context is required.

func (*TideContextPolicy) MissingRequiredContexts Uses

func (cp *TideContextPolicy) MissingRequiredContexts(contexts []string) []string

MissingRequiredContexts discard the optional contexts and only look of extra required contexts that are not provided.

func (*TideContextPolicy) Validate Uses

func (cp *TideContextPolicy) Validate() error

Validate returns an error if any contexts are listed more than once in the config.

type TideContextPolicyOptions Uses

type TideContextPolicyOptions struct {
    // GitHub Orgs
    Orgs map[string]TideOrgContextPolicy `json:"orgs,omitempty"`

TideContextPolicyOptions holds the default policy, and any org overrides.

type TideMergeCommitTemplate Uses

type TideMergeCommitTemplate struct {
    TitleTemplate string `json:"title,omitempty"`
    BodyTemplate  string `json:"body,omitempty"`

    Title *template.Template `json:"-"`
    Body  *template.Template `json:"-"`

TideMergeCommitTemplate holds templates to use for merge commits.

type TideOrgContextPolicy Uses

type TideOrgContextPolicy struct {
    Repos map[string]TideRepoContextPolicy `json:"repos,omitempty"`

TideOrgContextPolicy overrides the policy for an org, and any repo overrides.

type TideQueries Uses

type TideQueries []TideQuery

TideQueries is a TideQuery slice.

func (TideQueries) OrgExceptionsAndRepos Uses

func (tqs TideQueries) OrgExceptionsAndRepos() (map[string]sets.String, sets.String)

OrgExceptionsAndRepos determines which orgs and repos a set of queries cover. Output is returned as a mapping from 'included org'->'repos excluded in the org' and a set of included repos.

func (TideQueries) QueryMap Uses

func (tqs TideQueries) QueryMap() *QueryMap

QueryMap creates a QueryMap from TideQueries

type TideQuery Uses

type TideQuery struct {
    Orgs          []string `json:"orgs,omitempty"`
    Repos         []string `json:"repos,omitempty"`
    ExcludedRepos []string `json:"excludedRepos,omitempty"`

    ExcludedBranches []string `json:"excludedBranches,omitempty"`
    IncludedBranches []string `json:"includedBranches,omitempty"`

    Labels        []string `json:"labels,omitempty"`
    MissingLabels []string `json:"missingLabels,omitempty"`

    Milestone string `json:"milestone,omitempty"`

    ReviewApprovedRequired bool `json:"reviewApprovedRequired,omitempty"`

TideQuery is turned into a GitHub search query. See the docs for details: https://help.github.com/articles/searching-issues-and-pull-requests/

func (TideQuery) ForRepo Uses

func (tq TideQuery) ForRepo(org, repo string) bool

ForRepo indicates if the tide query applies to the specified repo.

func (*TideQuery) Query Uses

func (tq *TideQuery) Query() string

Query returns the corresponding github search string for the tide query.

func (*TideQuery) Validate Uses

func (tq *TideQuery) Validate() error

Validate returns an error if the query has any errors.

Examples include: * an org name that is empty or includes a / * repos that are not org/repo * a label that is in both the labels and missing_labels section * a branch that is in both included and excluded branch set.

type TideRepoContextPolicy Uses

type TideRepoContextPolicy struct {
    Branches map[string]TideContextPolicy `json:"branches,omitempty"`

TideRepoContextPolicy overrides the policy for repo, and any branch overrides.

type UtilityConfig Uses

type UtilityConfig struct {
    // Decorate determines if we decorate the PodSpec or not
    Decorate bool `json:"decorate,omitempty"`

    // PathAlias is the location under <root-dir>/src
    // where the repository under test is cloned. If this
    // is not set, <root-dir>/src/github.com/org/repo will
    // be used as the default.
    PathAlias string `json:"path_alias,omitempty"`
    // CloneURI is the URI that is used to clone the
    // repository. If unset, will default to
    // `https://github.com/org/repo.git`.
    CloneURI string `json:"clone_uri,omitempty"`
    // SkipSubmodules determines if submodules should be
    // cloned when the job is run. Defaults to true.
    SkipSubmodules bool `json:"skip_submodules,omitempty"`
    // CloneDepth is the depth of the clone that will be used.
    // A depth of zero will do a full clone.
    CloneDepth int `json:"clone_depth,omitempty"`

    // ExtraRefs are auxiliary repositories that
    // need to be cloned, determined from config
    ExtraRefs []prowapi.Refs `json:"extra_refs,omitempty"`

    // DecorationConfig holds configuration options for
    // decorating PodSpecs that users provide
    DecorationConfig *prowapi.DecorationConfig `json:"decoration_config,omitempty"`

UtilityConfig holds decoration metadata, such as how to clone and additional containers/etc


secretPackage secret implements an agent to read and reload the secrets.

Package config imports 35 packages (graph) and is imported by 99 packages. Updated 2019-10-18. Refresh now. Tools for package owners.