Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions cmd/ci-operator/main_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -992,7 +992,7 @@ func TestBuildPartialGraph(t *testing.T) {
loggingclient.New(fakectrlruntimeclient.NewFakeClient(&imagev1.ImageStreamTag{ObjectMeta: metav1.ObjectMeta{Name: ":"}})),
nil,
),
steps.SourceStep(api.SourceStepConfiguration{From: api.PipelineImageStreamTagReferenceRoot, To: api.PipelineImageStreamTagReferenceSource}, api.ResourceConfiguration{}, nil, &api.JobSpec{}, nil, nil),
steps.SourceStep(api.SourceStepConfiguration{From: api.PipelineImageStreamTagReferenceRoot, To: api.PipelineImageStreamTagReferenceSource}, api.ResourceConfiguration{}, nil, nil, &api.JobSpec{}, nil, nil),
steps.ProjectDirectoryImageBuildStep(
api.ProjectDirectoryImageBuildStepConfiguration{
From: api.PipelineImageStreamTagReferenceSource,
Expand All @@ -1001,7 +1001,7 @@ func TestBuildPartialGraph(t *testing.T) {
},
To: api.PipelineImageStreamTagReference("oc-bin-image"),
},
&api.ReleaseBuildConfiguration{}, api.ResourceConfiguration{}, nil, nil, nil,
&api.ReleaseBuildConfiguration{}, api.ResourceConfiguration{}, nil, nil, nil, nil,
),
steps.OutputImageTagStep(api.OutputImageTagStepConfiguration{From: api.PipelineImageStreamTagReference("oc-bin-image")}, nil, nil),
steps.ImagesReadyStep(steps.OutputImageTagStep(api.OutputImageTagStepConfiguration{From: api.PipelineImageStreamTagReference("oc-bin-image")}, nil, nil).Creates()),
Expand Down
6 changes: 6 additions & 0 deletions pkg/api/constant.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package api

import (
"fmt"
"time"

"k8s.io/apimachinery/pkg/util/sets"
)
Expand Down Expand Up @@ -51,6 +52,11 @@ const (

APPCIKubeAPIURL = "https://api.ci.l2s4.p1.openshiftapps.com:6443"

// PodStartTimeout is the maximum amount of time for pods to begin running.
// It causes builds and tests to fail if their pods cannot be scheduled for
// whatever reason, instead of failing due to the Prow job timeout, which is
// much longer and generates errors that are less descriptive.
PodStartTimeout = 30 * time.Minute
// CliEnv if the env we use to expose the path to the cli
CliEnv = "CLI_DIR"
DefaultLeaseEnv = "LEASED_RESOURCE"
Expand Down
14 changes: 7 additions & 7 deletions pkg/defaults/defaults.go
Original file line number Diff line number Diff line change
Expand Up @@ -244,19 +244,19 @@ func fromConfig(
step = steps.InputImageTagStep(&conf, client, jobSpec)
inputImages[conf.InputImage] = struct{}{}
} else if rawStep.PipelineImageCacheStepConfiguration != nil {
step = steps.PipelineImageCacheStep(*rawStep.PipelineImageCacheStepConfiguration, config.Resources, buildClient, jobSpec, pullSecret)
step = steps.PipelineImageCacheStep(*rawStep.PipelineImageCacheStepConfiguration, config.Resources, buildClient, podClient, jobSpec, pullSecret)
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thoughts for food... We should really need to implement a stepFactory or something similar. I hate the fact that we keep passing clients everywhere.

} else if rawStep.SourceStepConfiguration != nil {
step = steps.SourceStep(*rawStep.SourceStepConfiguration, config.Resources, buildClient, jobSpec, cloneAuthConfig, pullSecret)
step = steps.SourceStep(*rawStep.SourceStepConfiguration, config.Resources, buildClient, podClient, jobSpec, cloneAuthConfig, pullSecret)
} else if rawStep.BundleSourceStepConfiguration != nil {
step = steps.BundleSourceStep(*rawStep.BundleSourceStepConfiguration, config, config.Resources, buildClient, jobSpec, pullSecret)
step = steps.BundleSourceStep(*rawStep.BundleSourceStepConfiguration, config, config.Resources, buildClient, podClient, jobSpec, pullSecret)
} else if rawStep.IndexGeneratorStepConfiguration != nil {
step = steps.IndexGeneratorStep(*rawStep.IndexGeneratorStepConfiguration, config, config.Resources, buildClient, jobSpec, pullSecret)
step = steps.IndexGeneratorStep(*rawStep.IndexGeneratorStepConfiguration, config, config.Resources, buildClient, podClient, jobSpec, pullSecret)
} else if rawStep.ProjectDirectoryImageBuildStepConfiguration != nil {
step = steps.ProjectDirectoryImageBuildStep(*rawStep.ProjectDirectoryImageBuildStepConfiguration, config, config.Resources, buildClient, jobSpec, pullSecret)
step = steps.ProjectDirectoryImageBuildStep(*rawStep.ProjectDirectoryImageBuildStepConfiguration, config, config.Resources, buildClient, podClient, jobSpec, pullSecret)
} else if rawStep.ProjectDirectoryImageBuildInputs != nil {
step = steps.GitSourceStep(*rawStep.ProjectDirectoryImageBuildInputs, config.Resources, buildClient, jobSpec, cloneAuthConfig, pullSecret)
step = steps.GitSourceStep(*rawStep.ProjectDirectoryImageBuildInputs, config.Resources, buildClient, podClient, jobSpec, cloneAuthConfig, pullSecret)
} else if rawStep.RPMImageInjectionStepConfiguration != nil {
step = steps.RPMImageInjectionStep(*rawStep.RPMImageInjectionStepConfiguration, config.Resources, buildClient, jobSpec, pullSecret)
step = steps.RPMImageInjectionStep(*rawStep.RPMImageInjectionStepConfiguration, config.Resources, buildClient, podClient, jobSpec, pullSecret)
} else if rawStep.RPMServeStepConfiguration != nil {
step = steps.RPMServerStep(*rawStep.RPMServeStepConfiguration, client, jobSpec)
} else if rawStep.OutputImageTagStepConfiguration != nil {
Expand Down
15 changes: 13 additions & 2 deletions pkg/steps/bundle_source.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import (
buildapi "github.com/openshift/api/build/v1"

"github.com/openshift/ci-tools/pkg/api"
"github.com/openshift/ci-tools/pkg/kubernetes"
"github.com/openshift/ci-tools/pkg/results"
"github.com/openshift/ci-tools/pkg/steps/utils"
)
Expand All @@ -22,6 +23,7 @@ type bundleSourceStep struct {
releaseBuildConfig *api.ReleaseBuildConfiguration
resources api.ResourceConfiguration
client BuildClient
podClient kubernetes.PodClient
jobSpec *api.JobSpec
pullSecret *coreapi.Secret
}
Expand Down Expand Up @@ -75,7 +77,7 @@ func (s *bundleSourceStep) run(ctx context.Context) error {
s.pullSecret,
nil,
)
return handleBuild(ctx, s.client, *build)
return handleBuild(ctx, s.client, s.podClient, *build)
}

func replaceCommand(pullSpec, with string) string {
Expand Down Expand Up @@ -129,12 +131,21 @@ func (s *bundleSourceStep) Description() string {
return fmt.Sprintf("Build image %s from the repository", api.PipelineImageStreamTagReferenceBundleSource)
}

func BundleSourceStep(config api.BundleSourceStepConfiguration, releaseBuildConfig *api.ReleaseBuildConfiguration, resources api.ResourceConfiguration, client BuildClient, jobSpec *api.JobSpec, pullSecret *coreapi.Secret) api.Step {
func BundleSourceStep(
config api.BundleSourceStepConfiguration,
releaseBuildConfig *api.ReleaseBuildConfiguration,
resources api.ResourceConfiguration,
client BuildClient,
podClient kubernetes.PodClient,
jobSpec *api.JobSpec,
pullSecret *coreapi.Secret,
) api.Step {
return &bundleSourceStep{
config: config,
releaseBuildConfig: releaseBuildConfig,
resources: resources,
client: client,
podClient: podClient,
jobSpec: jobSpec,
pullSecret: pullSecret,
}
Expand Down
15 changes: 13 additions & 2 deletions pkg/steps/git_source.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,15 @@ import (
buildapi "github.com/openshift/api/build/v1"

"github.com/openshift/ci-tools/pkg/api"
"github.com/openshift/ci-tools/pkg/kubernetes"
"github.com/openshift/ci-tools/pkg/results"
)

type gitSourceStep struct {
config api.ProjectDirectoryImageBuildInputs
resources api.ResourceConfiguration
buildClient BuildClient
podClient kubernetes.PodClient
jobSpec *api.JobSpec
cloneAuthConfig *CloneAuthConfig
pullSecret *coreapi.Secret
Expand All @@ -42,7 +44,7 @@ func (s *gitSourceStep) run(ctx context.Context) error {
secretName = s.cloneAuthConfig.Secret.Name
}

return handleBuild(ctx, s.buildClient, *buildFromSource(s.jobSpec, "", api.PipelineImageStreamTagReferenceRoot, buildapi.BuildSource{
return handleBuild(ctx, s.buildClient, s.podClient, *buildFromSource(s.jobSpec, "", api.PipelineImageStreamTagReferenceRoot, buildapi.BuildSource{
Type: buildapi.BuildSourceGit,
Dockerfile: s.config.DockerfileLiteral,
ContextDir: s.config.ContextDir,
Expand Down Expand Up @@ -99,11 +101,20 @@ func determineRefsWorkdir(refs *prowapi.Refs, extraRefs []prowapi.Refs) *prowapi
}

// GitSourceStep returns gitSourceStep that holds all the required information to create a build from a git source.
func GitSourceStep(config api.ProjectDirectoryImageBuildInputs, resources api.ResourceConfiguration, buildClient BuildClient, jobSpec *api.JobSpec, cloneAuthConfig *CloneAuthConfig, pullSecret *coreapi.Secret) api.Step {
func GitSourceStep(
config api.ProjectDirectoryImageBuildInputs,
resources api.ResourceConfiguration,
buildClient BuildClient,
podClient kubernetes.PodClient,
jobSpec *api.JobSpec,
cloneAuthConfig *CloneAuthConfig,
pullSecret *coreapi.Secret,
) api.Step {
return &gitSourceStep{
config: config,
resources: resources,
buildClient: buildClient,
podClient: podClient,
jobSpec: jobSpec,
cloneAuthConfig: cloneAuthConfig,
pullSecret: pullSecret,
Expand Down
15 changes: 13 additions & 2 deletions pkg/steps/index_generator.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (
buildapi "github.com/openshift/api/build/v1"

"github.com/openshift/ci-tools/pkg/api"
"github.com/openshift/ci-tools/pkg/kubernetes"
"github.com/openshift/ci-tools/pkg/results"
"github.com/openshift/ci-tools/pkg/steps/utils"
)
Expand All @@ -20,6 +21,7 @@ type indexGeneratorStep struct {
releaseBuildConfig *api.ReleaseBuildConfiguration
resources api.ResourceConfiguration
client BuildClient
podClient kubernetes.PodClient
jobSpec *api.JobSpec
pullSecret *coreapi.Secret
}
Expand Down Expand Up @@ -79,7 +81,7 @@ func (s *indexGeneratorStep) run(ctx context.Context) error {
s.pullSecret,
nil,
)
err = handleBuild(ctx, s.client, *build)
err = handleBuild(ctx, s.client, s.podClient, *build)
if err != nil && strings.Contains(err.Error(), "error checking provided apis") {
return results.ForReason("generating_index").WithError(err).Errorf("failed to generate operator index due to invalid bundle info: %v", err)
}
Expand Down Expand Up @@ -153,12 +155,21 @@ func (s *indexGeneratorStep) Objects() []ctrlruntimeclient.Object {
return s.client.Objects()
}

func IndexGeneratorStep(config api.IndexGeneratorStepConfiguration, releaseBuildConfig *api.ReleaseBuildConfiguration, resources api.ResourceConfiguration, buildClient BuildClient, jobSpec *api.JobSpec, pullSecret *coreapi.Secret) api.Step {
func IndexGeneratorStep(
config api.IndexGeneratorStepConfiguration,
releaseBuildConfig *api.ReleaseBuildConfiguration,
resources api.ResourceConfiguration,
buildClient BuildClient,
podClient kubernetes.PodClient,
jobSpec *api.JobSpec,
pullSecret *coreapi.Secret,
) api.Step {
return &indexGeneratorStep{
config: config,
releaseBuildConfig: releaseBuildConfig,
resources: resources,
client: buildClient,
podClient: podClient,
jobSpec: jobSpec,
pullSecret: pullSecret,
}
Expand Down
14 changes: 12 additions & 2 deletions pkg/steps/pipeline_image_cache.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (
buildapi "github.com/openshift/api/build/v1"

"github.com/openshift/ci-tools/pkg/api"
"github.com/openshift/ci-tools/pkg/kubernetes"
"github.com/openshift/ci-tools/pkg/results"
"github.com/openshift/ci-tools/pkg/steps/utils"
)
Expand All @@ -24,6 +25,7 @@ type pipelineImageCacheStep struct {
config api.PipelineImageCacheStepConfiguration
resources api.ResourceConfiguration
client BuildClient
podClient kubernetes.PodClient
jobSpec *api.JobSpec
pullSecret *coreapi.Secret
}
Expand All @@ -44,7 +46,7 @@ func (s *pipelineImageCacheStep) run(ctx context.Context) error {
if err != nil {
return err
}
return handleBuild(ctx, s.client, *buildFromSource(
return handleBuild(ctx, s.client, s.podClient, *buildFromSource(
s.jobSpec, s.config.From, s.config.To,
buildapi.BuildSource{
Type: buildapi.BuildSourceDockerfile,
Expand Down Expand Up @@ -85,11 +87,19 @@ func (s *pipelineImageCacheStep) Objects() []ctrlruntimeclient.Object {
return s.client.Objects()
}

func PipelineImageCacheStep(config api.PipelineImageCacheStepConfiguration, resources api.ResourceConfiguration, client BuildClient, jobSpec *api.JobSpec, pullSecret *coreapi.Secret) api.Step {
func PipelineImageCacheStep(
config api.PipelineImageCacheStepConfiguration,
resources api.ResourceConfiguration,
client BuildClient,
podClient kubernetes.PodClient,
jobSpec *api.JobSpec,
pullSecret *coreapi.Secret,
) api.Step {
return &pipelineImageCacheStep{
config: config,
resources: resources,
client: client,
podClient: podClient,
jobSpec: jobSpec,
pullSecret: pullSecret,
}
Expand Down
15 changes: 13 additions & 2 deletions pkg/steps/project_image.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import (
imagev1 "github.com/openshift/api/image/v1"

"github.com/openshift/ci-tools/pkg/api"
"github.com/openshift/ci-tools/pkg/kubernetes"
"github.com/openshift/ci-tools/pkg/results"
"github.com/openshift/ci-tools/pkg/steps/utils"
)
Expand All @@ -23,6 +24,7 @@ type projectDirectoryImageBuildStep struct {
releaseBuildConfig *api.ReleaseBuildConfiguration
resources api.ResourceConfiguration
client BuildClient
podClient kubernetes.PodClient
jobSpec *api.JobSpec
pullSecret *coreapi.Secret
}
Expand Down Expand Up @@ -61,7 +63,7 @@ func (s *projectDirectoryImageBuildStep) run(ctx context.Context) error {
s.pullSecret,
s.config.BuildArgs,
)
return handleBuild(ctx, s.client, *build)
return handleBuild(ctx, s.client, s.podClient, *build)
}

type workingDir func(tag string) (string, error)
Expand Down Expand Up @@ -161,12 +163,21 @@ func (s *projectDirectoryImageBuildStep) Objects() []ctrlruntimeclient.Object {
return s.client.Objects()
}

func ProjectDirectoryImageBuildStep(config api.ProjectDirectoryImageBuildStepConfiguration, releaseBuildConfig *api.ReleaseBuildConfiguration, resources api.ResourceConfiguration, buildClient BuildClient, jobSpec *api.JobSpec, pullSecret *coreapi.Secret) api.Step {
func ProjectDirectoryImageBuildStep(
config api.ProjectDirectoryImageBuildStepConfiguration,
releaseBuildConfig *api.ReleaseBuildConfiguration,
resources api.ResourceConfiguration,
buildClient BuildClient,
podClient kubernetes.PodClient,
jobSpec *api.JobSpec,
pullSecret *coreapi.Secret,
) api.Step {
return &projectDirectoryImageBuildStep{
config: config,
releaseBuildConfig: releaseBuildConfig,
resources: resources,
client: buildClient,
podClient: podClient,
jobSpec: jobSpec,
pullSecret: pullSecret,
}
Expand Down
14 changes: 12 additions & 2 deletions pkg/steps/rpm_injection.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (
routev1 "github.com/openshift/api/route/v1"

"github.com/openshift/ci-tools/pkg/api"
"github.com/openshift/ci-tools/pkg/kubernetes"
"github.com/openshift/ci-tools/pkg/results"
)

Expand All @@ -23,6 +24,7 @@ type rpmImageInjectionStep struct {
config api.RPMImageInjectionStepConfiguration
resources api.ResourceConfiguration
client BuildClient
podClient kubernetes.PodClient
jobSpec *api.JobSpec
pullSecret *coreapi.Secret
}
Expand All @@ -48,7 +50,7 @@ func (s *rpmImageInjectionStep) run(ctx context.Context) error {
if err != nil {
return err
}
return handleBuild(ctx, s.client, *buildFromSource(
return handleBuild(ctx, s.client, s.podClient, *buildFromSource(
s.jobSpec, s.config.From, s.config.To,
buildapi.BuildSource{
Type: buildapi.BuildSourceDockerfile,
Expand Down Expand Up @@ -84,11 +86,19 @@ func (s *rpmImageInjectionStep) Objects() []ctrlruntimeclient.Object {
return s.client.Objects()
}

func RPMImageInjectionStep(config api.RPMImageInjectionStepConfiguration, resources api.ResourceConfiguration, buildClient BuildClient, jobSpec *api.JobSpec, pullSecret *coreapi.Secret) api.Step {
func RPMImageInjectionStep(
config api.RPMImageInjectionStepConfiguration,
resources api.ResourceConfiguration,
buildClient BuildClient,
podClient kubernetes.PodClient,
jobSpec *api.JobSpec,
pullSecret *coreapi.Secret,
) api.Step {
return &rpmImageInjectionStep{
config: config,
resources: resources,
client: buildClient,
podClient: podClient,
jobSpec: jobSpec,
pullSecret: pullSecret,
}
Expand Down
Loading