-
Notifications
You must be signed in to change notification settings - Fork 292
ci-operator: allow users to depend on images in steps #1044
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
ci-operator: allow users to depend on images in steps #1044
Conversation
|
Need more unit & e2e testing but otherwise ready for review @bbguimaraes @petr-muller @droslean |
|
/retest |
646c5c3 to
3dcc798
Compare
|
This is updated with all testing, need to write a help page doc next. Code is ready for review. |
and .... amazing |
bbguimaraes
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The PR looks really good, just some minor comments about the implementation.
I also don't see anything for container tests and steps in the registry. Are we planning to add those later or only support literal steps for now?
|
For my own TODO:
|
3dcc798 to
89b6e1e
Compare
|
@bbguimaraes PTAL |
89b6e1e to
8ef79b4
Compare
ef18178 to
32b83a5
Compare
|
/retest |
| <table> | ||
| <tr> | ||
| <th style="white-space: nowrap"><code>ImageStream</code></th> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Having the title as code looks weird IMHO
petr-muller
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nothing really substantial, just the HTML in the docs needs a bit of cleanup. The code looks fine.
|
|
||
| func TestReleaseBuildConfiguration_ImageStreamFor(t *testing.T) { | ||
|
|
||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
![]()
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
haha holy crap what a brain fart
|
|
||
| func TestReleaseBuildConfiguration_DependencyParts(t *testing.T) { | ||
|
|
||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Plan to fill these in? If not then they should be removed.
| } | ||
|
|
||
| // IsReleasePayloadStream determines if the ImageStream holds | ||
| // release paylaod images. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: payload
|
@alvaroaleman @petr-muller @bbguimaraes responded to comments |
|
/lgtm Hmm, the |
|
/hold cancel |
There was a lot of confusion about these constants, even leading to one of them being called a stream, when it wasn't. These are the names of implicit releases, latest and initial, that we create from the tag specification if a user provides it. Signed-off-by: Steve Kuznetsov <[email protected]>
These functions operate on ImageStreams that hold the images that make up a release, they happen to be prefixed with "stable" but that is not a great name for them. Signed-off-by: Steve Kuznetsov <[email protected]>
Users may not expect to find the pull spec for an image created at some other point in the pipeline fed to their step via an environment variable that they specify. The ci-operator will ensure that their step only runs once the image is available. Signed-off-by: Steve Kuznetsov <[email protected]>
We can detect a large swath of errors in dependency declarations during static validation, which is preferrable to waiting for dynamic step graph build failure as it allows us to be specific about what is wrong, why, and to do so at config check-in time and not at run time. Signed-off-by: Steve Kuznetsov <[email protected]>
Signed-off-by: Steve Kuznetsov <[email protected]>
Signed-off-by: Steve Kuznetsov <[email protected]>
Signed-off-by: Steve Kuznetsov <[email protected]>
8f69eb2 to
f7ceb5c
Compare
|
/lgtm |
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: bbguimaraes, stevekuznetsov The full list of commands accepted by this bot can be found here. The pull request process is described here DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
Tests generally install one OpenShift release, and then perform some actions to validate that release. Sometimes the actions include updating to a different release, or a series of different releases. With this commit, I'm pivoting to dependency naming that more clearly reflects these goals, instead of "RELEASE_IMAGE_LATEST", which was a reflection of the default release:latest value, and not an expression of the intended semantics. I've shifted to explicitly declaring these image dependencies, taking advantage of openshift/ci-tools@782008c873 (ci-operator: allow users to depend on images in steps, 2020-07-30, openshift/ci-tools#1044), instead of relying on the implicit RELEASE_IMAGE_LATEST and similar. I've dropped explicit dependencies that were not used in a step's associated commands, like RELEASE_IMAGE_LATEST in ipi-install since eb8eb32 (step-registry: add upgrade workflows, 2020-08-25, openshift#11247). I've dropped explicit dependency overrides that set the same value as the default. For example, there was no need to set: OPENSHIFT_UPGRADE_RELEASE_IMAGE: "release:latest" in openshift-upgrade-aws-loki, because release:latest is already the default in all steps that consume OPENSHIFT_UPGRADE_RELEASE_IMAGE. I've dropped the _OVERRIDE suffix from the dependencies, because while we may set that suffix when communicating with the openshift-install command, it's a legitimate knob and not a strange override in each steps' public API.
Users may not expect to find the pull spec for an image created at some
other point in the pipeline fed to their step via an environment
variable that they specify. The ci-operator will ensure that their step
only runs once the image is available.
Signed-off-by: Steve Kuznetsov [email protected]