Skip to content
Merged
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
14 changes: 7 additions & 7 deletions pkg/defaults/defaults.go
Original file line number Diff line number Diff line change
Expand Up @@ -248,19 +248,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)
} 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
4 changes: 2 additions & 2 deletions pkg/kubernetes/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ func WaitForConditionOnObject(ctx context.Context, client ctrlruntimeclient.With

type PodClient interface {
loggingclient.LoggingClient
PendingTimeout() time.Duration
GetPendingTimeout() time.Duration
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

If I've understood it correctly this gets the value from --pod-pending-timeout and it controls a pod lifecycle regardless its nature: being it a test pod, a build, etc. Is it enough? Do we need it to be more fine-grained (I mean, having more than one value)?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Yes, that is correct, this is the same period as is used for pods in general.

The causes for scheduling delays are for the most part the same for all types of pods, so I don't see the need to add a separate value for builds.

// WithNewLoggingClient returns a new instance of the PodClient that resets
// its LoggingClient.
WithNewLoggingClient() PodClient
Expand All @@ -95,7 +95,7 @@ type podClient struct {
pendingTimeout time.Duration
}

func (c podClient) PendingTimeout() time.Duration { return c.pendingTimeout }
func (c podClient) GetPendingTimeout() time.Duration { return c.pendingTimeout }

func (c podClient) Exec(namespace, pod string, opts *coreapi.PodExecOptions) (remotecommand.Executor, error) {
u := c.client.Post().Resource("pods").Namespace(namespace).Name(pod).SubResource("exec").VersionedParams(opts, scheme.ParameterCodec).URL()
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 handleBuilds(ctx, s.client, *build)
return handleBuilds(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 handleBuilds(ctx, s.buildClient, *buildFromSource(s.jobSpec, "", api.PipelineImageStreamTagReferenceRoot, buildapi.BuildSource{
return handleBuilds(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 @@ -16,6 +16,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 @@ -25,6 +26,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 @@ -121,7 +123,7 @@ func (s *indexGeneratorStep) run(ctx context.Context) error {
s.pullSecret,
nil,
)
err = handleBuilds(ctx, s.client, *build)
err = handleBuilds(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 @@ -195,12 +197,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
5 changes: 4 additions & 1 deletion pkg/steps/multi_stage/run_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,10 @@ func TestRun(t *testing.T) {
},
}
jobSpec.SetNamespace("ns")
client := &testhelper_kube.FakePodClient{FakePodExecutor: crclient}
client := &testhelper_kube.FakePodClient{
PendingTimeout: 30 * time.Minute,
FakePodExecutor: crclient,
}
step := MultiStageTestStep(api.TestStepConfiguration{
As: name,
MultiStageTestConfigurationLiteral: &api.MultiStageTestConfigurationLiteral{
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 handleBuilds(ctx, s.client, *build)
return handleBuilds(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 handleBuilds(ctx, s.client, *buildFromSource(
return handleBuilds(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