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
2 changes: 1 addition & 1 deletion cmd/ci-operator/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -431,7 +431,7 @@ func bindOptions(flag *flag.FlagSet) *options {

// what we will run
flag.StringVar(&opt.nodeName, "node", "", "Restrict scheduling of pods to a single node in the cluster. Does not afffect indirectly created pods (e.g. builds).")
flag.DurationVar(&opt.podPendingTimeout, "pod-pending-timeout", 30*time.Minute, "Maximum amount of time created containers can spend before the running state")
flag.DurationVar(&opt.podPendingTimeout, "pod-pending-timeout", 30*time.Minute, "Maximum amount of time created pods can spend before the running state. For test pods, this applies to each container. For builds, it applies to the build execution as a whole.")
flag.StringVar(&opt.leaseServer, "lease-server", leaseServerAddress, "Address of the server that manages leases. Required if any test is configured to acquire a lease.")
flag.StringVar(&opt.leaseServerCredentialsFile, "lease-server-credentials-file", "", "The path to credentials file used to access the lease server. The content is of the form <username>:<password>.")
flag.DurationVar(&opt.leaseAcquireTimeout, "lease-acquire-timeout", leaseAcquireTimeout, "Maximum amount of time to wait for lease acquisition")
Expand Down
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
// 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