prowgen

package
v0.0.0-...-b055cc3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 3, 2024 License: Apache-2.0 Imports: 30 Imported by: 0

Documentation

Index

Constants

View Source
const (
	CIRegistry   = "registry.ci.openshift.org"
	QuayRegistry = "quay.io/openshift-knative"

	QuayMirroringSuffix = "_quay"

	ImageMirroringConfigPath       = "core-services/image-mirroring/knative"
	ImageMirroringConfigFilePrefix = "mapping_knative"
)

Variables

View Source
var (
	ProductionContext imageContext = ""
	TestContext       imageContext = "test"
)

Functions

func Branches

func Branches(ctx context.Context, r Repository) ([]string, error)

func CmpBranches

func CmpBranches(a string, b string) int

func DeleteExistingReleaseBuildConfigurationForBranch

func DeleteExistingReleaseBuildConfigurationForBranch(outConfig *string, r Repository, branch string) error

func GetJobConfig

func GetJobConfig(match string) (*prowconfig.JobConfig, error)

func GitCheckout

func GitCheckout(ctx context.Context, r Repository, branch string) error

func GitClone

func GitClone(ctx context.Context, r Repository) error

func GitDiffNameOnly

func GitDiffNameOnly(ctx context.Context, r Repository, sha string) ([]string, error)

func GitFetch

func GitFetch(ctx context.Context, r Repository, sha string) error

func GitMerge

func GitMerge(ctx context.Context, r Repository, sha string) error

func GitMirror

func GitMirror(ctx context.Context, r Repository) error

func InitializeOpenShiftReleaseRepository

func InitializeOpenShiftReleaseRepository(ctx context.Context, openShiftRelease Repository, inConfig *Config, outputConfig *string) error

InitializeOpenShiftReleaseRepository clones openshift/release and clean up existing jobs for the configured branches

func Main

func Main()

func PushBranch

func PushBranch(ctx context.Context, release Repository, remote *string, branch string, config string) error

func ReconcileImageMirroringConfig

func ReconcileImageMirroringConfig(mirroring ImageMirroringConfig) error

func RunOpenShiftReleaseGenerator

func RunOpenShiftReleaseGenerator(ctx context.Context, openShiftRelease Repository) error

func SaveJobConfig

func SaveJobConfig(match string, jobConfig *prowconfig.JobConfig) error

func SaveReleaseBuildConfiguration

func SaveReleaseBuildConfiguration(outConfig *string, cfg ReleaseBuildConfiguration) error

func ToName

func ToName(r Repository, test *Test, openShiftVersion string) string

ToName creates a test name for the given Test following the constraints in openshift/release. - name cannot be longer than maxNameLength characters.

func ToRegexp

func ToRegexp(s []string) []*regexp.Regexp

Types

type Branch

type Branch struct {
	OpenShiftVersions      []OpenShift `json:"openShiftVersions,omitempty" yaml:"openShiftVersions,omitempty"`
	SkipE2EMatches         []string    `json:"skipE2EMatches,omitempty" yaml:"skipE2EMatches,omitempty"`
	SkipDockerFilesMatches []string    `json:"skipDockerFilesMatches,omitempty" yaml:"skipDockerFilesMatches,omitempty"`
}

type CommonConfig

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

type Config

type Config struct {
	Repositories []Repository `json:"repositories,omitempty" yaml:"repositories,omitempty"`

	Config CommonConfig `json:"config,omitempty" yaml:"config,omitempty"`
}

Config is the prowgen configuration file struct.

func LoadConfig

func LoadConfig(path string) (*Config, error)

type CustomConfigs

type CustomConfigs struct {
	// Name will be used together with OpenShift version to generate a specific variant.
	Name string `json:"name,omitempty" yaml:"name,omitempty"`
	// ReleaseBuildConfiguration allows defining configuration manually. The final configuration
	// is extended with images and test steps with dependencies.
	ReleaseBuildConfiguration cioperatorapi.ReleaseBuildConfiguration `json:"releaseBuildConfiguration,omitempty" yaml:"releaseBuildConfiguration,omitempty"`
}

type Dockerfiles

type Dockerfiles struct {
	Matches []string `json:"matches,omitempty" yaml:"matches,omitempty"`
}

type E2ETest

type E2ETest struct {
	Match        string `json:"match,omitempty" yaml:"match,omitempty"`
	OnDemand     bool   `json:"onDemand,omitempty" yaml:"onDemand,omitempty"`
	IgnoreError  bool   `json:"ignoreError,omitempty" yaml:"ignoreError,omitempty"`
	RunIfChanged string `json:"runIfChanged,omitempty" yaml:"runIfChanged,omitempty"`
	// SkipCron ensures that no periodic job will be generated for the given test.
	SkipCron   bool              `json:"skipCron,omitempty" yaml:"skipCron,omitempty"`
	SkipImages []string          `json:"skipImages,omitempty" yaml:"skipImages,omitempty"`
	Timeout    *prowapi.Duration `json:"timeout,omitempty" yaml:"timeout,omitempty"`
}

type IgnoreConfigs

type IgnoreConfigs struct {
	Matches []string `json:"matches,omitempty" yaml:"matches,omitempty"`
}

type ImageInput

type ImageInput struct {
	Context        imageContext
	DockerfilePath string
	Inputs         map[string]cioperatorapi.ImageBuildInputs
}

type ImageMirroringConfig

type ImageMirroringConfig struct {
	Path    string
	Content string
	Release string

	Metadata cioperatorapi.Metadata
}

func GenerateImageMirroringConfigs

func GenerateImageMirroringConfigs(openshiftRelease Repository, cfgs []ReleaseBuildConfiguration) []ImageMirroringConfig

type JobConfigInjector

type JobConfigInjector struct {
	Type   JobConfigType
	Update func(r *Repository, b *Branch, branchName string, jobConfig *prowconfig.JobConfig) error
}

func AlwaysRunInjector

func AlwaysRunInjector() JobConfigInjector

type JobConfigInjectors

type JobConfigInjectors []JobConfigInjector

func (JobConfigInjectors) Inject

func (jcis JobConfigInjectors) Inject(inConfig *Config, openShiftRelease Repository) error

type JobConfigType

type JobConfigType string
const (
	Periodic   JobConfigType = "periodics"
	PreSubmit  JobConfigType = "presubmits"
	PostSubmit JobConfigType = "postsubmits"
)

type OpenShift

type OpenShift struct {
	Version string `json:"version,omitempty" yaml:"version,omitempty"`
	Cron    string `json:"cron,omitempty" yaml:"cron,omitempty"`
	// SkipCron ensures that no periodic jobs are generated for tests running on the given OpenShift version.
	SkipCron              bool `json:"skipCron,omitempty" yaml:"skipCron,omitempty"`
	OnDemand              bool `json:"onDemand,omitempty" yaml:"onDemand,omitempty"`
	GenerateCustomConfigs bool `json:"generateCustomConfigs,omitempty" yaml:"generateCustomConfigs,omitempty"`
	CandidateRelease      bool `json:"candidateRelease,omitempty" yaml:"candidateRelease,omitempty"`
}

type ProjectDirectoryImageBuildStepConfigurationFunc

type ProjectDirectoryImageBuildStepConfigurationFunc func() (cioperatorapi.ProjectDirectoryImageBuildStepConfiguration, error)

func ProjectDirectoryImageBuildStepConfigurationFuncFromImageInput

func ProjectDirectoryImageBuildStepConfigurationFuncFromImageInput(r Repository, input ImageInput) ProjectDirectoryImageBuildStepConfigurationFunc

type Promotion

type Promotion struct {
	Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty"`
}

type ReleaseBuildConfiguration

type ReleaseBuildConfiguration struct {
	cioperatorapi.ReleaseBuildConfiguration

	Path   string
	Branch string
}

type ReleaseBuildConfigurationOption

type ReleaseBuildConfigurationOption func(cfg *cioperatorapi.ReleaseBuildConfiguration) error

func DependenciesForTestSteps

func DependenciesForTestSteps() ReleaseBuildConfigurationOption

func DiscoverImages

func DiscoverImages(r Repository, skipDockerFiles []string) ReleaseBuildConfigurationOption

func DiscoverTests

func DiscoverTests(r Repository, openShift OpenShift, sourceImageName string, skipE2ETestMatch []string, random *rand.Rand) ReleaseBuildConfigurationOption

type Repository

type Repository struct {
	Org                   string                                                      `json:"org,omitempty" yaml:"org,omitempty"`
	Repo                  string                                                      `json:"repo,omitempty" yaml:"repo,omitempty"`
	Promotion             Promotion                                                   `json:"promotion,omitempty" yaml:"promotion,omitempty"`
	ImagePrefix           string                                                      `json:"imagePrefix,omitempty" yaml:"imagePrefix,omitempty"`
	ImageNameOverrides    map[string]string                                           `json:"imageNameOverrides,omitempty" yaml:"imageNameOverrides,omitempty"`
	SlackChannel          string                                                      `json:"slackChannel,omitempty" yaml:"slackChannel,omitempty"`
	CanonicalGoRepository *string                                                     `json:"canonicalGoRepository,omitempty" yaml:"canonicalGoRepository,omitempty"`
	E2ETests              []E2ETest                                                   `json:"e2e,omitempty" yaml:"e2e,omitempty"`
	Dockerfiles           Dockerfiles                                                 `json:"dockerfiles,omitempty" yaml:"dockerfiles,omitempty"`
	IgnoreConfigs         IgnoreConfigs                                               `json:"ignoreConfigs,omitempty" yaml:"ignoreConfigs,omitempty"`
	CustomConfigs         []CustomConfigs                                             `json:"customConfigs,omitempty" yaml:"customConfigs,omitempty"`
	Images                []cioperatorapi.ProjectDirectoryImageBuildStepConfiguration `json:"images,omitempty" yaml:"images,omitempty"`
	Tests                 []cioperatorapi.TestStepConfiguration                       `json:"tests,omitempty" yaml:"tests,omitempty"`
	Resources             cioperatorapi.ResourceConfiguration                         `json:"resources,omitempty" yaml:"resources,omitempty"`
}

func (Repository) RepositoryDirectory

func (r Repository) RepositoryDirectory() string

type Test

type Test struct {
	Command      string
	OnDemand     bool
	IgnoreError  bool
	RunIfChanged string
	SkipCron     bool
	SkipImages   []string
	Timeout      *prowapi.Duration
}

func (*Test) HexSha

func (t *Test) HexSha() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL