-
Notifications
You must be signed in to change notification settings - Fork 80
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
Unify Y-build and I-build configurations and their tests #2625
Comments
I am interested in seeing successful Y-builds with useful test result, ideally with no big gaps around the times of release, or infra changes. If unification helps to this end, then surely I fully agree with the goals, and your description looks correct to me. I don't, however, have much insight into the inner workings of I-builds nor Y-builds, so I don't know in which detail discussion I could help. I'm already looking into P-builds, which is about all I can contribute in terms of releng builds. And while it's correct that the matter of master vs BETA_JAVA24 (all of jdt, not just jdt.core) is being discussed widely and for a long time already, it's pretty clear that the mere fact of branching will stay for the foreseeable future, for more than one reason. |
It will simplify the maintenance of the Y-build and will make it quicker to apply changes and it will also mean that the basic configurations that are meant to be equal, stay equal. So I think this could be a contribution to that overall goal.
It's mainly when I encounter differences to the I-build and I have to find out if they are really necessary or not. Then I hope to get an answer from you or somebody else from the JDT-team. But the technical Jenkins details I can hopefully handle by myself.
Yes, I just wanted to mention that option, knowing that it's at the moment not feasible. :) |
This simplifies later additions of new os-arch combinations. Part of eclipse-platform#2625
This simplifies later additions of new os-arch combinations. Part of #2625
and slightly clean-up existing pipeline for linux. Unify numbers like time-outs and numbers of retained builds. Part of eclipse-platform#2625
and slightly clean-up existing pipeline for linux. Unify numbers like time-outs and numbers of retained builds. Part of eclipse-platform#2625
and slightly clean-up existing pipeline for linux. Unify numbers like time-outs and numbers of retained builds. Part of #2625
- Simplify environment variable definitions and tool handling - Remove unnecessary print-outs and whitespace - Remove unused or unnecessary parameters and property definitions Part of eclipse-platform#2625
- Simplify environment variable definitions and tool handling - Remove unnecessary print-outs and whitespace - Remove unused or unnecessary parameters and property definitions Part of #2625
For your information I have now done the following further step to unify Y-build and I-build tests:
The tasks executed respectively the behavior should be the same, but please let me know if you encounter any problem upon the next execution. Respectively if you don't plan to run another Y-build soon, do you mind if I start one? Does the JDT team mind if obsolete Y-build test jobs, i.e. those that are no longer in use, are removed from https://ci.eclipse.org/releng/job/YPBuilds/ or do you need them for some time for reference? |
To me it looks like the first execution after these changes were ok, without regressions due to infrastructure changes. @stephan-herrmann or @jarthana I have two questions about the Y-build setup:
To the JDT-devs: |
IMHO old jobs can be removed once the current set of jobs (build & test) is functional. Let's perhaps just wait for one more +1 from @jarthana or @mpalat |
I'll have to pass this one, as I don't know the reason.
IMHO, the specific JDK version is not relevant here, as long as we have some "good" EA build of the current stream.
No objections from my side. |
No objections from me either.
Just checked with @MohananRahul who says that it's configured but not configured to run automatically.
I agree with Stephan. No problem for me. |
Rahul just dug this up for me, thanks Rahul! |
They are mostly updated on demand. |
For the Linux Y-Build for Java-24 the latest Temurin early-access build is downloaded. Part of eclipse-platform#2625
For the Linux Y-Build for Java-24 the latest Temurin early-access build is downloaded. Part of #2625
Thanks for your agreement, I have unified this with:
Thanks. Then just leave it as it is for now. The load is already high enough. FYI after the I-build and all it's tests have been moved to Java-21 I applied the same change for the Y-build: |
This reduces the number of places to adapt in case the I-/Y-build test-configurations are changed and in general reduces the difference between I-builds and Y-builds. Furthermore it reduces duplication introduced to handle the small difference between I- and Y-builds. Part of #2625
Update 'API_PREV_REF_LABEL' for Y- and P-build to be in sync with the value defined for I-builds. Remove unused 'TESTED_BUILD_TYPE' variable. Part of eclipse-platform#2625
Instead of duplicating the 'buildproperties.txt' template for each build type, keep only variables with common values in the general 'buildproperties.txt' and define differing variables in the Jenkins pipeline and add it dynamically to the generated/derived 'buildproperties.shsource/properties'. Remove unused 'TESTED_BUILD_TYPE' variable. Update 'API_PREV_REF_LABEL' for Y- and P-build to be in sync with the value defined for I-builds. Part of eclipse-platform#2625
Instead of duplicating the 'buildproperties.txt' template for each build type, keep only variables with common values in the general 'buildproperties.txt' and define differing variables in the Jenkins pipeline and add it dynamically to the generated/derived 'buildproperties.shsource/properties'. Remove unused 'TESTED_BUILD_TYPE' variable. Update 'API_PREV_REF_LABEL' for Y- and P-build to be in sync with the value defined for I-builds. Part of eclipse-platform#2625
Instead of duplicating the 'buildproperties.txt' template for each build type, keep only variables with common values in the general 'buildproperties.txt' and define differing variables in the Jenkins pipeline and add it dynamically to the generated/derived 'buildproperties.shsource/properties'. Remove unused 'TESTED_BUILD_TYPE' variable. Update 'API_PREV_REF_LABEL' for Y- and P-build to be in sync with the value defined for I-builds. Part of #2625
Test job https://ci.eclipse.org/releng/job/YPBuilds/job/ep435Y-unit-linux-x86_64-java24/ aborts since 2024-12-31. Error is:
Could this be connected to changes done here? |
I saw that as well, but since the jobs are more and more unified (which is the goal of this issue) and Java-23 respectively I-builds don't show this I was hoping that the cause is an increased memory consumption (or maybe even a memory leak?) with java-24. Is that possible? To help us in finding the cause I replayed the latest build, with Maybe that's something we should enable in general because it has no cost if no OOM error happens and helps to track down memory issues (also for the builds not only the tests)? |
As the error happens while parsing test results, the leak might simply be a flood of failures that blows up memory. But due to the error we cannot see those test failures :-/ I wonder if the memory limit is defined by the executor or as a build parameter? |
Good point. I didn't look at the logs at that detail 😅
For Linux the tests run in a kubernetes pod and we can indeed use a pod with increased resource limits by replacing
with
I have started another replay where I applied this: You can see the exact diff in the job configuration at (you probably have to be logged in into Jenkins): |
It failed again :/ Some of them have multiple MiB, but I don't see an error or failure. And although the number of tests didn't change, the size of Maybe this also leads to an endless loops in the test-result reading step? |
Thanks! This led to a candidate culprit: |
Nice teamwork. 👍 |
The existing differences are not relevant and probably only due to omitted synchronization. Part of eclipse-platform#2625
The existing differences are not relevant and probably only due to omitted synchronization. For the 'dropTemplateFileName' property, rely on the default, which is exactly the new unify filename. Part of eclipse-platform#2625
The existing differences are not relevant and probably only due to omitted synchronization. For the 'dropTemplateFileName' property, rely on the default, which is exactly the new unify filename. Part of #2625
I have just pushed another unification of the result website via: The result shouldn't be really different as before. @stephan-herrmann I'm also reading your thread on the jdt-dev mailing list about how to compile ECJ on the Y-build not with the latest I-build but with the latest Y-build (if I'm not mistaken that's the actual intention isn't it?). |
I think you got me right. There's just two things I'm not 100% sure about:
At the bottom line, the same dog fooding from beta branches, as I-builds do for the master branch would be great (and for the rare use case discussed recently, this would prevent a strange hiccup). |
Recently I have reworked the definition of I-build tests to reduce duplication and to make them more unified and simpler.
This has the effect that the definition of Y-build tests has now significantly diverged from the I-build tests and I intended to apply the same simplifications for Y-build tests as well.
And while looking into all the definitions of I-builds and Y-builds I noticed that they have a lot in common and wonder respectively think we should try to unify their definitions and try to define both pipelines from one source, while considering the points where they are different.
But this leads to the questions what exactly the differences between I-builds and Y-builds are? What I have found so far is
https://download.eclipse.org/eclipse/updates/4.35-Y-builds/
instead of https://download.eclipse.org/eclipse/updates/4.35-I-builds/
Together with #1950 this should to further simplify the overall releng.
Of course a unification would have to happen in multiple steps.
An alternative solution would be to just develop ECJ's support for upcoming java versions on the master branch and stop using another branch. AFAICT this has already been discussed respectively is currently discussed but will not be implemented soon.
The questions I have to the JDT-team:
@jarthana, @stephan-herrmann or @iloveeclipse are you interested in discussing this or can you tell who is interested?
Community
The text was updated successfully, but these errors were encountered: