prowgen

package
v0.0.0-...-be59ca2 Latest Latest
Warning

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

Go to latest
Published: Feb 26, 2025 License: Apache-2.0 Imports: 36 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"
)
View Source
const (
	KonfluxBranchPrefix = "sync-konflux-"
)

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 GenerateKonflux

func GenerateKonflux(ctx context.Context, openshiftRelease Repository, configs []*Config) error

func GenerateKonfluxServerlessOperator

func GenerateKonfluxServerlessOperator(ctx context.Context, openshiftRelease Repository, r Repository, config *Config) 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, inConfigs []*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, commitMsg string) error

func ReconcileImageMirroringConfig

func ReconcileImageMirroringConfig(cfg *Config, mirroring ImageMirroringConfig) error

func Run

func Run(ctx context.Context, r Repository, name string, args ...string) ([]byte, 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 SemverFromReleaseBranch

func SemverFromReleaseBranch(b string) (*semver.Version, error)

func ServerlessOperatorKonfluxVersions

func ServerlessOperatorKonfluxVersions(ctx context.Context) (map[string]string, error)

func ToName

func ToName(r Repository, test *Test) string

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

Types

type Branch

type Branch struct {
	Prowgen                *Prowgen    `json:"prowgen,omitempty" yaml:"prowgen,omitempty"`
	OpenShiftVersions      []OpenShift `json:"openShiftVersions,omitempty" yaml:"openShiftVersions,omitempty"`
	SkipE2EMatches         []string    `json:"skipE2EMatches,omitempty" yaml:"skipE2EMatches,omitempty"`
	SkipDockerFilesMatches []string    `json:"skipDockerFilesMatches,omitempty" yaml:"skipDockerFilesMatches,omitempty"`
	Konflux                *Konflux    `json:"konflux,omitempty" yaml:"konflux,omitempty"`

	// DependabotEnabled enabled if `nil`.
	DependabotEnabled *bool `json:"dependabotEnabled,omitempty" yaml:"dependabotEnabled,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)

func UnmarshalConfig

func UnmarshalConfig(yaml []byte) (*Config, error)

type CustomConfigs

type CustomConfigs struct {
	// Name will be used 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 CustomConfigsEnablement

type CustomConfigsEnablement struct {
	Enabled  bool     `json:"enabled,omitempty" yaml:"enabled,omitempty"`
	Includes []string `json:"includes,omitempty" yaml:"includes,omitempty"`
	Excludes []string `json:"excludes,omitempty" yaml:"excludes,omitempty"`
}

type Dockerfiles

type Dockerfiles struct {
	Matches  []string `json:"matches,omitempty" yaml:"matches,omitempty"`
	Excludes []string `json:"excludes,omitempty" yaml:"excludes,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"`
	JobTimeout *prowapi.Duration `json:"jobTimeout,omitempty" yaml:"jobTimeout,omitempty"`
}

type IgnoreConfigs

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

type Image

type Image struct {
	Name     string `json:"name" yaml:"name"`
	PullSpec string `json:"pullSpec" yaml:"pullSpec"`
}

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 Konflux

type Konflux struct {
	Enabled bool `json:"enabled,omitempty" yaml:"enabled,omitempty"`

	Nudges []string `json:"nudges,omitempty" yaml:"nudges,omitempty"`

	Excludes       []string `json:"excludes,omitempty" yaml:"excludes,omitempty"`
	ExcludesImages []string `json:"excludesImages,omitempty" yaml:"excludesImages,omitempty"`

	JavaImages []string `json:"javaImages,omitempty" yaml:"javaImages,omitempty"`

	ImageOverrides []Image `json:"imageOverrides,omitempty" yaml:"imageOverrides,omitempty"`
}

type OpenShift

type OpenShift struct {
	Version        string `json:"version,omitempty" yaml:"version,omitempty"`
	UseClusterPool bool   `json:"useClusterPool,omitempty" yaml:"useClusterPool,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"`
	CustomConfigs    *CustomConfigsEnablement `json:"customConfigs,omitempty" yaml:"customConfigs,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"`
	Template  string `json:"template,omitempty" yaml:"template,omitempty"`
}

type Prowgen

type Prowgen struct {
	Disabled bool `json:"disabled,omitempty" yaml:"disabled,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) IsEKB

func (r Repository) IsEKB() bool

func (Repository) IsEventPlugin

func (r Repository) IsEventPlugin() bool

func (Repository) IsFunc

func (r Repository) IsFunc() bool

func (Repository) IsServerlessOperator

func (r Repository) IsServerlessOperator() bool

func (Repository) RepositoryDirectory

func (r Repository) RepositoryDirectory() string

func (Repository) RunCodegenCommand

func (r Repository) RunCodegenCommand() string

func (Repository) RunDockefileGenCommand

func (r Repository) RunDockefileGenCommand() string

type Test

type Test struct {
	Command      string
	OnDemand     bool
	IgnoreError  bool
	RunIfChanged string
	SkipCron     bool
	SkipImages   []string
	Timeout      *prowapi.Duration
	JobTimeout   *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