-
Notifications
You must be signed in to change notification settings - Fork 2.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
WIP: config: allow init containers if not decorated #15432
WIP: config: allow init containers if not decorated #15432
Conversation
When the decorate is set as false, I think we can allow init containers to be used. This is useful if we want to run prow where we can't rely on gcs. We would still be able to configure our own containers to pull code and ship logs, etc.
Hi @zhouhaibing089. Thanks for your PR. I'm waiting for a kubernetes member to verify that this patch is reasonable to test. If it is, they should reply with Once the patch is verified, the new status will be reflected by the I understand the commands that are listed here. Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: zhouhaibing089 The full list of commands accepted by this bot can be found here.
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
Mark it as WIP as I haven't tested it yet. @stevekuznetsov @fejta: Could you share some thoughts on this change? |
Why is this preferable to changing Prow in order to make it more featureful? I don't necessarily like this change if it means that users will work around Prow to deliver the same features Prow already does. What happens when you end up debugging the differences in how two different code checkout procedures run and bugs come out of having different implementations? That sounds like a headache. |
@stevekuznetsov: Thanks for sharing the thoughts here.
Since
I won't change the current behavior here, if the job is decorated, no other init containers would be allowed. If decorated is false, it means there is nothing to do with the git tools provided by prow. I personally feel it should not be a pain as it is clear where to look at depending on whether |
Cloning code has nothing to do with GCS. Uploading logs of course has to target a storage backend. I am suggesting that instead of letting someone choose to add their own custom implementation by turning off the decoration, let's let them choose which decoration they want. The work to write an uploader that targets a different cloud backend is the same, right? |
@stevekuznetsov: Today, there are four decorations which are being used:
So your preference is to allow users to be able to choose the decorations they want like using |
That's something I'd like to do anyway. I'm just worried about whether the single decoration option is future-proof. Ideally, my preference is to let people choose the abstraction like: presubmits:
foo/bar:
name: pull-bar-build
decorations:
- name: clonerefs
params:
arg1: val1
- name: shiplogs
params:
arg1: val1 |
I would turn the question to you, instead. What are you trying to do that Prow does not support today? As I take it, you do not use GCS. In my mind that implies one of the following:
I think both are valid. It may make sense for someone to run jobs that don't upload anything anywhere. I do not want a solution where the job uploads artifacts to a different provider by turning off uploading and injecting something custom. I agree that configuring how uploads happen (and where they go) should follow the current configuration workflow -- there is a global default, defaults for orgs and repos, and then job-level fields to override. |
@stevekuznetsov: Just list few:
Yeah, I agree. That's not my intention, either. If I can use decoration with another storage provider, that would be the right way to go. |
@stevekuznetsov: Kindly ping.. What is your opinion on the cases I mentioned above where I may need a customized init containers? |
Sorry, missed this one! For your first use-case you could set |
For the second one, I am not sure we have a good solution, and that is kind of on purpose. In general I think we have found that trying to synchronize merges and tests between repositories is really error-prone and hard to work with. We suggest instead an approach where you add your tests (for instance) in a way that they can detect whether the new feature is turned on or not and then run as necessary. This is the same as other components -- when building and deploying decoupled components in a distributed system, make them all tolerant of some version skew to allow for seamless upgrades. |
Issues go stale after 90d of inactivity. If this issue is safe to close now please do so with Send feedback to sig-testing, kubernetes/test-infra and/or fejta. |
@zhouhaibing089: PR needs rebase. Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
Stale issues rot after 30d of inactivity. If this issue is safe to close now please do so with Send feedback to sig-testing, kubernetes/test-infra and/or fejta. |
Rotten issues close after 30d of inactivity. Send feedback to sig-testing, kubernetes/test-infra and/or fejta. |
@fejta-bot: Closed this PR. In response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
When the decorate is set as false, I think we can allow init containers
to be used. This is useful if we want to run prow where we can't rely on
gcs. We would still be able to configure our own containers to pull code
and ship logs, etc.