-
-
Notifications
You must be signed in to change notification settings - Fork 10
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
Require Java 11 infrastructure thread #2945
Comments
For the packaging bits It should work just fine on Java 11 I don’t think we need to do both, but for the highest safety sure that’s the way to go. for stable docker we can probably just push a temporary branch and update the release docs for the existing LTS line? |
WDYT about using the docker bake HCL logic to implement the condition (specifying the |
sure that would be nicer if someone has time to work on it 👍 |
I guess the script would set a |
I volunteer as I'm interested. still need to decide if doing it as part of my SRE job or as contributor (depends on team priorities). |
That is the idea (at least superficial idea). |
Not clear to me what "it" or "both" are referring to in this sentence. |
refers to the above. |
Still not clear to me. The above is a long paragraph with dozens of nouns. "It" must be referring to a single noun, but I cannot figure out which one. "Both" must referring to two nouns, but I cannot figure out which two. |
|
So which noun does the pronoun "it" refer to in the above sentence? If it refers to "the job that compiles Jenkins core and performs the core release", then no, we cannot keep it frozen on Java 8. If it refers to "the job that builds packaging and invokes Kohsuke's Maven FTP archive plugin", then yes, we could keep it frozen on Java 8. So to avoid ambiguity and help me understand your points, please be precise and avoid pronouns without a clear antecedent. |
Here's my summary of the discussion about the packaging image, the release job, and the packaging job. I have not yet read and thought about the discussion about Proposal A
Pros of Proposal A:
Cons of Proposal A:
Proposal B
Pros of Proposal B:
Cons of Proposal B:
Can we take a decision regarding Proposal A vs Proposal B? (Or feel free to ask me to modify Proposal A or Proposal B, or to create a new Proposal C.) My vote would be: be bold and attempt Proposal A. If, on the day of release, the If there is consensus regarding this, I will file the PR for Proposal A (in draft state until June 21, 2022). Then I will read through the discussion about |
A is fine with me 👍 |
Great! If Damien agrees I will take the action item to file the PR. |
A is fine with me (thanks for taking time to exchange and propose these choices folks!) |
I created jenkins-infra/release#233. |
Docker changesI don't have access to Proposal A
Calling this "Proposal A", I think I understand the proposal: To create a temporary branch, remove all references to (Conversely, we could remove all references to Pros of Proposal A: Easy to implement in the short term, as is common with branching-based solutions. Cons of Proposal A: Not the most elegant solution in the long term. The branch needs to be kept up-to-date. On the other hand, it is throwaway code that will not be needed after fall when the LTS release switches to Java 11. So it might not be so bad. Proposal BInstead of creating a temporary branch, implement a good long-term solution: add a new Pros of Proposal B: More elegant solution as it eliminates the need to maintain a separate branch. Cons of Proposal B: Nontrivial to implement, at least for me. Could probably be done efficiently over a night/weekend by someone familiar with this logic, or a bit longer than that by someone like me who would need to learn it from scratch. DecisionCan we take a decision on this as well? My vote is as follows: I would normally insist on the long-term solution over a short-term workaround, but in this particular case the short-term workaround doesn't seem so bad because it truly is short-term: until the fall LTS starts requiring Java 11. Compounding the issue is my own lack of familiarity with the Docker Bake HCL logic, which precludes me from quickly and efficiently implementing Proposal B. I highly appreciate Damien's offer to work on Proposal B, but I understand it might not be possible to implement such a solution in a short amount of time. So my vote would be to use an implementation of Proposal B if someone other than me offers it by the June 21, 2022 weekly switchover date, or otherwise to fall back to Proposal A. If Proposal A is selected I am happy to create the PR to remove the JDK 8 variants from whichever branch we want to remove them from (either the main branch as in Proposal A, or a stable branch as in Proposal A2). Regarding A vs A2 (i.e., which branch should the Java 8 variants be deleted from, I have no strong preference.) If you do have a preference, please let me know. Open Questions
I looked at the documentation here and here but did not find any references to Java 8, so I do not understand what this is referring to. I have already filed JENKINS-68564, JENKINS-68565, JENKINS-68566, and JENKINS-68567 to cover all the documentation updates I know of that need to occur. If there is a documentation update that needs to occur but is not covered by one of the above tickets, please let me know and I will file a separate ticket for it. |
It's a multi-branch pipeline that currently just builds the master branch (but it is configured to pickup any origin branches) which will publish both LTS and weekly versions This line of the publish script fetches the last 30 versions and checks if they are published looping through each version: Based on the version number format it determines if it's a weekly or LTS release and then runs
Correct they are mutually exclusive.
Documentation I was referring to is https://github.com/jenkins-infra/release/blob/master/.github/ISSUE_TEMPLATE/1-lts-release-checklist.md specifically "Run trusted.ci.jenkins.io Docker image creation job." Which may be updated to refer to a non master branch if proposal A is implemented Both proposal A and B are fine with me |
I created jenkinsci/docker#1356 to cover the quick and dirty implementation of Proposal A in case we do not get an implementation of Proposal B. |
That is correct.
Please note that we assume that |
Circling back to this thread. I believe the following action items remain:
Is anyone interested in taking these tasks? |
I don't think this is needed, the job checks if images are published and if so does nothing. |
Taking it |
Started
[Sat Jun 25 12:01:30 UTC 2022] Starting branch indexing...
> JGit ls-remote # timeout=10
Setting origin to https://github.com/jenkinsci/docker
Fetching & pruning origin...
Listing remote references...
> JGit ls-remote # timeout=10
> JGit fetch # timeout=10
Checking branches...
Checking branch stable-2.346
‘Jenkinsfile’ found
Met criteria
Scheduled build for branch: stable-2.346
Checking branch master
‘Jenkinsfile’ found
Met criteria
Changes detected: master (423973bd21d330557102e6038600bc00f42a7975 → 2951760f5a10a95588044fe8cb8b9949ac0d1fa6)
Scheduled build for branch: master
Processed 7 branches
[Sat Jun 25 12:01:32 UTC 2022] Finished branch indexing. Indexing took 1.8 sec
Finished: SUCCESS First job is running, Linux part happenned successfully and the publish part confirms the expected behavior (e.g. no image published):
|
I assume there isn't anything else to do ? |
The stable branch may try to produce java 8 builds for weekly in its current state? I think that should be checked the publish check may protect it but I think there’s an all variants checks too |
Are we confident the |
No but it won’t be triggered in the short term, we have a couple of weeks to solve it I believe |
With the release of Jenkins 2.357 and 2.361.1 LTS, I think our work here is done. If we all agree, please close this ticket. And a HUGE thank you to everyone involved in this effort! |
+1, thanks for taking care of this issue and driving the topic. Many thanks to everyone involved! |
Service(s)
release.ci.jenkins.io
Summary
With the announcement that weekly releases will require Java 11 as of June 21, 2022, I have begun preparing for this major change from an infrastructure perspective. My goal in this thread is to identify all the work that needs to be done on the infrastructure side when weeklies begin requiring Java 11. Note that weeklies will require Java 11 before LTS releases do (in September).
The
jenkinsciinfra/packaging:latest
Docker image contains Java 8 in/opt/jdk-8
and Java 11 in/opt/jdk-11
. However, the default Java command is Java 8, and this is also the version of Java used for Maven. Althoughjenkins-infra/release/PodTemplates.d/release-linux.yaml
definesJENKINS_JAVA_BIN
to use Java 11 for the agent connection to the controller (and I confirmed this is set by examining the console output in the release job), the Maven commands seem to be using Java 8 to actually compile Jenkins and perform the release. We will want to continue using Java 8 for LTS releases, but not for weekly releases. I think the solution here is to modify the job to set thePATH
andJAVA_HOME
environment variables to the Java 11 versions when building/releasing a weekly.The job for
jenkinsci/packaging
, which is executed in the same Docker image, invokesmvn org.kohsuke:apt-ftparchive-merge:1.6:merge
in the variouspublish.sh
scripts, currently with Java 8. I think this should work when Maven is invoked using Java 11 with no code changes, but I do not believe it has been tested, nor do I see any practical way of testing it outside of production.jenkinsci/docker
currently produces Java 8 and Java 11 Docker images for weekly releases. This needs to be changed to produce only Java 11 Docker images for weekly releases but to produce Java 8 and Java 11 Docker images for LTS releases. I foresee this being a challenge, because as I understand it this repository has no stable branch, i.e. the main branch is used for both weekly and LTS releases. So I think we will have to add conditional logic in the repository to skip Java 8 when building/releasing weeklies.I could not find any Java 8 references in
jenkinsci/helm-charts
. This repository looks ready to go for Java 11.If something comes to mind that I have missed, I would greatly appreciate it if you could bring it up now so that we can do proper planning. My goal is to come to a consensus on the set of tasks prior to the delivery date.
Reproduction steps
Try to release Jenkins with Java 11. 😄
The text was updated successfully, but these errors were encountered: