-
Notifications
You must be signed in to change notification settings - Fork 37.9k
ci: Turn CentOS config into Alpine musl config #33480
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
base: master
Are you sure you want to change the base?
Conversation
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers. Code Coverage & BenchmarksFor details see: https://corecheck.dev/bitcoin/bitcoin/pulls/33480. ReviewsSee the guideline for information on the review process.
If your review is incorrectly listed, please react with 👎 to this comment and the bot will ignore it on the next update. ConflictsReviewers, this pull request conflicts with the following ones:
If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first. |
Concept ACK |
Interesting side note: Looks like most unit tests are minimally faster on Alpine, except for the secp tests: https://github.com/bitcoin/bitcoin/actions/runs/18007497948/job/51231174310?pr=33480#step:9:3415:
https://github.com/bitcoin/bitcoin/actions/runs/18007193787/job/51230198016#step:9:2625 :
|
So Centos as CI task was not added to give good RHEL distro / Enterprise Linux support ? |
No, as mentioned in the pull description. For reference, the history was:
|
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.
Concept ACK fa6b2e9
This PR introduces more libc diversity in the CI pipeline (in the form of using Alpine), which is welcome.
Not completely agreeing with this PR sentence;
"So basically, the centos task is similar to all the Ubuntu/Debian CI tasks, possibly with some packages named slightly differently. "
Yes and No; (Risk of being too much of a nitpicker.)
-
Yes from a Libc perspective; Centos is glibc and Debian is also glibc
-
No from a distro philosophy; Ubuntu/Debian and RHEL distro's are different in philosophy REHL is slower, more enterprise-focused. But do we need it as a CI step ? no as you mentioned, it does not give us new information.
There for this seems like a good improvement.
Also thanks for the extensive answer.
No worries. Happy to adjust the pull description, if you have any suggestions I could take over. |
Also confirmed that the gcc debug mode works on alpine: https://github.com/maflcko/bitcoin-core-with-ci/actions/runs/18013008390/job/51250509812#step:8:2473 :
|
How about something like this: The CentOS task aligns with Ubuntu/Debian CI tasks in terms of libc usage, but (slightly) differs in package naming and update philosophy. I am not aware of the task ever discovering a centos-related issue, so it seems fine to recycle it into an Alpine Linux task. |
thx, edited description |
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.
ACK fa6b2e9
This PR introduces more libc diversity in the CI pipeline (in the form of using Alpine), which is welcome.
Concept ACK |
tACK It may be worth mentioning that this change fixed an issue (I was unable to isolate) on CentOS using HexStr() formatting a custom signetchallenge to display in the rpcconsole. |
That is unrelated to both this pull request and your pull request, see #33293. |
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.
ACK fa6b2e9
Alpine/musl feels much more useful to me than a frozen-in-time CentOS build.
Not tested locally as I'm a bit bandwidth-contrained at the moment, but the code changes and CI look good to me.
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.
reACK 444409f
changes since last ACK:
- changed container size to md. CI still works with this size. ✅
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.
ACK 444409f
This took 29 minutes for an alpine depends, gui build, with no docker/ccache/depends caches (as no merges to master yet) which seems in line with other jobs.
Another (tiny) benefit of this pull request is that the task will now finally be able to run on my riscv64 box (modulo the two python wheels) |
Concept ACK |
Fixes #33437
Historically, the centos task was added to add CI coverage for old packages and 32-bit depends builds, but both are now covered by different tasks.
The CentOS task aligns with Ubuntu/Debian CI tasks in terms of libc usage, but (slightly) differs in package naming and update philosophy. I am not aware of the task ever discovering a centos-related issue, so it seems fine to recycle it into an Alpine Linux task.
The main difference would be that musl libc is now used. Also, busybox is used in Alpine, so in theory the busybox install could be removed from the arm CI task in the future.
Packaging considerations: All packages should roughly be the same (gcc remains at version 14, python remains at version 3.12, etc). Also, all packages are from the Alpine main track, coming with 2 years of support. The only exception is the py3-pip package (https://pkgs.alpinelinux.org/packages?name=py3-pip&branch=v3.22&repo=&arch=riscv64) from the community track, however, I don't expect any issues arising from that.