-
Notifications
You must be signed in to change notification settings - Fork 86
SuSE/RPM merge specfiles and only build a single rpm for RH/SuSE #430
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
Conversation
basil
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.
This looks really great! To get rid of the suse.publish target in the Makefile, the suse/publish/publish.sh script, and the SUSE_URL, SUSEDIR, and SUSE_WEBDIR environment variables, we just need to get rid of the SUSE stage from https://github.com/jenkins-infra/release/blob/8951254c4a415d24d81b8b9c351b9bb6a07408f8/Jenkinsfile.d/core/package#L226-L248 and rename the existing "Red Hat" stage to something more generic like "RPM", as well as doing the same thing in https://github.com/jenkinsci/jenkins/blob/ba4690c5a461d3c7b4f375912c6c7ff7b02323ee/.github/workflows/publish-release-artifact.yml#L177-L211. Note that while the jenkinsci/jenkins and jenkinsci/packaging repositories have unstable weekly (e.g., master) and stable LTS (e.g., stable-2.414) branches, jenkins-infra/release only has a single branch that is used for all releases, implying that for jenkins-infra/release we should either retain the SUSE stage for LTS releases but skip it on weekly releases (doable, but requires some conditional logic) or backport this PR to the stable-2.414 of jenkinsci/packaging and then remove SUSE entirely from jenkins-infra/release and both the master and stable-2.414 branches of jenkinsci/jenkins. I have no strong preference either way, but it seems like less work in the long term to do the backport and be done with this SUSE stuff sooner rather than later.
A final (but very minor) point is that there was previously a nonsensical "1.2" version for the jenkins-2.373-1.2.noarch.rpm (SUSE) RPM, which seemed to exist only to differentiate it from the "1.1" version used by the jenkins-2.373-1.1.noarch.rpm (Red Hat) RPM. Since we're now combining these into one product, I wonder if it wouldn't be too hard to remove the "-1.1" from the (sole remaining) RPM, which would make it match our Debian product (e.g. jenkins_2.373_all.deb). The "1.1" has no meaning in terms of Jenkins versioning. See #345.
An RPM is required to have a release number, so we cannot skip it completely. I changed it simply to "1" now. |
Sounds good.
the redhat rpm installed without problems. But isn't the suse publisher still needed for the |
Yes, that would work just fine. The more we can simplify things, the better, and having one fewer variant to maintain sounds like a great simplification. |
|
Disclaimer: work-in-progress-commit, I expect it to break some tests. Also some things still need a little polish. The build and publish scripts of openSUSE and Red Hat have been merged into a common Notable changes for openSUSE:
Notable changes for Red Hat:
As the Tested with: # remove previous docroot
rm -rf pkg.jenkins.io
# import the rpm signing key and announce it to rpm
gpg --import credentials/test.secret.gpg
echo '%_gpg_name Bogus Test (This is test only key) <[email protected]>' > ~/.rpmmacros
# get the war
export ver="2.414.1"
wget -c https://get.jenkins.io/war-stable/${ver}/jenkins.war
# build the rpm and publish
WAR=${PWD}/jenkins.war MSI=/dev/null \
make rpm.publish \
BRAND=./branding/jenkins.mk VERSION=${ver} \
GPG_KEYNAME="Bogus Test" CREDENTIAL=${PWD}/credentials/test.mk PKGSERVER=${USER}@localhost \
WEBSERVER=localhost
# run test webserver
WAR=/dev/null MSI=/dev/null make test.local.setup |
beb61a6 to
cd7d47d
Compare
|
Hello @philfry , are you still willing to work on this contribution? |
|
Oh, I completely forgot about this one. |
- merge openSUSE and Red Hat build scripts as well as their spec files and only build a single rpm - merge openSUSE and Red Hat publish scripts for a common rpm repository and a common web page - always gpg sign repomd.xml and set repo_gpgcheck for the common repo file - set releasever from 1.1 to 1 - (gitignore test-webroot)
|
The PR should be fine, even all checks have passed (yay!). Feel free to test. |
|
Many thanks @philfry! We are on huge infra changes (jenkins-infra/helpdesk#4774 and then jenkins-infra/helpdesk#3705 for info) which might predates your PR here (unless we deem this PR helpful to simplify the current publishing process). Mentioning in case you have no feedback in the upcoming weeks.
Thanks for detailing this! We'll have to coordinate on the jenkins-infra side with this PR, but that helps a lot. I believe we'll prepare draft PR on the infra as code to prepare these redirects setups ahead of time. |
|
As described in jenkins-infra/helpdesk#4774 (comment), we'll integrate this change first (before any other changes) as it greatly simplifies and helps us on our packaging work on the infrastructure. The prerequisites on the infrastructure side:
|
@timja @basil @daniel-beck @MarkEWaite I propose to try with an empty I'm wondering what strategy to adopt for LTS though (on 10 december): should we do the same (at the risk of users complaining they don't see the .3 LTS until they change their RPM package URL)? Or should we, instead, make things breaks explicitly to push forward? |
…RH/SuSE Ref. jenkinsci/packaging#430 for details this change updates the artifacts upload GHA workflow to merge the Redhat and OpenSuse packages into a single unified RPM package
|
Is it possible to redirect requests for both to the new one? or at least redhat? Would be better if users were transparently upgraded. We can try with empty weekly initially anyway |
Yes, it would be the same as putting a symlink (except redirect is better as the client is informed of the redirect). I can prepare to have both.
Yup, transparent upgrade looks better for me as well. But at the expense of installations with a pinned version if they reinstall the pinned old version since the new index might be regenerated without the "old" packages.
I think we are inline: packaging change can always be reverted tomorrow (and RH/SuSe packages regenerated) without any consequence. I'm taking care of backuping the current @timja WDYT if we keep providing the "old" endpoints under a new name to cover the users with "pinned" versions so they can always change their repo. URL if they do not want to upgrade? That would looks like the following:
=> I propose we "try" for tomorrow's release, see the result, and we'll discuss for LTS. Does it look good? |
|
Yes sounds good |
See jenkins-infra/helpdesk#4774 (comment). I'm finishing all PRs and I'll proceed to merge |
|
Lets roll: jenkins-infra/helpdesk#4774 (comment) |
…RH/SuSE (#11299) * chore(GHA/publish-release-artifacts) merge into a single package for RH/SuSE Ref. jenkinsci/packaging#430 for details this change updates the artifacts upload GHA workflow to merge the Redhat and OpenSuse packages into a single unified RPM package * Update .github/workflows/publish-release-artifact.yml
|
Released with success! Note: 3 (hot)fixes were required, but they were hard to be tested until the publication (mainly due to the infrastructure legacy complexity):
|
|
Many thanks @philfry for your contribution! |
|
Additional discovery: this PR did implicitly brought #409 to openSUSE installers (ref. https://issues.jenkins.io/browse/JENKINS-76296) |
This PR contains the following changes:
%dir %{_datadir}/%{name}I'm not sure how the publishing works, though. Probably I'll need a little help here.
Testing done
Fixes: #419