Skip to content
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

test/system: Update Ubuntu versions used for tests (16.04, 18.04, 20.04 -> 20.04, 22.04, 24.04) #1535

Merged
merged 2 commits into from
Nov 17, 2024

Conversation

pennbauman
Copy link
Contributor

The Ubuntu versions used for testing are updated from 16.04, 18.04, and 20.04 to 20.04, 22.04, and 24.04. This brings all Ubuntu releases used into the current standard support window, and removes tests using Ubuntu 16.04 and 18.04 which have failed on every machine I've tried them on.

It may also/alternatively make sense to reduce the number of Ubuntu versions tested (probably to just 24.04), as no other distro is tested with multiple releases. Other distros could also have the versions used updated, for example Fedora 34 is used which is far out of date.

Copy link

Build succeeded.
https://softwarefactory-project.io/zuul/t/local/buildset/969349b778504b238c9a83a4830441c4

✔️ unit-test SUCCESS in 4m 55s
✔️ unit-test-migration-path-for-coreos-toolbox SUCCESS in 3m 34s
✔️ unit-test-restricted SUCCESS in 4m 48s
✔️ system-test-fedora-rawhide SUCCESS in 1h 39m 02s
✔️ system-test-fedora-40 SUCCESS in 1h 39m 59s
✔️ system-test-fedora-39 SUCCESS in 1h 41m 52s

Copy link

Build succeeded.
https://softwarefactory-project.io/zuul/t/local/buildset/ed09d9070f174222ac2f6d8e8ce9ddb5

✔️ unit-test SUCCESS in 5m 19s
✔️ unit-test-migration-path-for-coreos-toolbox SUCCESS in 3m 36s
✔️ unit-test-restricted SUCCESS in 5m 05s
✔️ system-test-fedora-rawhide SUCCESS in 1h 38m 05s
✔️ system-test-fedora-40 SUCCESS in 1h 35m 48s
✔️ system-test-fedora-39 SUCCESS in 1h 37m 44s

Copy link
Member

@debarshiray debarshiray left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for working on this, @pennbauman ! My apologies for not responding sooner. I was caught up with getting a new release out.

I see that the pull request has two commits that are somewhat unrelated. So, let me start with a high level comment before getting into too many details.

The test/system: Fix create tests for host distro/version commit is certainly welcome. As we add built-in support for more and more distributions, the combinatorial explosion of host and container operating system pairs makes it important to run the tests on as many different host OSes as possible. Some months ago, I had made an aborted attempt at this. I am hoping that your effort will finally push this over the finishing line.

So, thanks for that.

The test/system: Update Ubuntu versions used for tests commit makes me curious. Were you experiencing failures from the tests for Ubuntus 16.04 and 18.04? The tests seem to be passing when run on the CI.

Other than the need to test as many host and container pairs as possible, there's one technical need to test containers with older operating systems. The toolbox(1) binary has a weird runtime ABI requirement. Binaries built on newer host OSes must run on containers with older OSes, so must binaries across different distributions. This is because toolbox(1) from the host is bind mounted into the containers as their entry point.

The toolbox-create(1) and toolbox-init-container(1) manuals talk about this in further detail. I once wrote a blog to describe the other options that we had explored.

This is generally unsupported - the inverse is supported.

So, we do various tricks when building the toolbox(1) binary to ensure that it will meet the above requirements. See commit 6063eb2 for the full details.

While this was implemented after discussion with the glibc developers, it's also not something that's officially supported by them. Toolbx is clearly pushing the boundaries here. So, it's important to keep testing against containers with older OSes to ensure that it still works. This is the main reason for still testing against fedora-toolbox:34.

Now, specifically about Ubuntus 16.04 and 18.04, I see that they are still covered by the Pro subscription. So, they are not completely unsupported. They could be useful as representatives of other similarly old OSes out there, like Debian. However, if they are causing some real problems that would be too expensive to solve given the benefits, then we can consider dropping them too.

debarshiray pushed a commit to debarshiray/toolbox that referenced this pull request Nov 15, 2024
The VERSION_ID field in os-release(5) is optional [1].  It's absent on
Arch Linux, which follows a rolling-release model and uses the BUILD_ID
field instead:
  BUILD_ID=rolling

A subsequent commit will run the CI on Arch Linux.  Hence, the code to
get the default release from the host operating system can no longer
assume the presence of the VERSION_ID field in os-release(5).

Note that the arch-toolbox image is tagged with 'latest', in accordance
with OCI conventions, not 'rolling' [2,3], which is the os-release(5)
BUILD_ID.

A similar change was made to toolbox(1) in commits 2ee82af and
d14fd7b.

[1] https://www.freedesktop.org/software/systemd/man/os-release.html

[2] Commit 2568528
    containers@2568528cb7f52663
    containers#861

[3] Commit a4e5861
    containers@a4e5861ae5c93625
    containers#1308

containers#1438
containers#1535
debarshiray pushed a commit to debarshiray/toolbox that referenced this pull request Nov 15, 2024
This is a step towards running the CI on Arch Linux.

containers#1438
containers#1535
The VERSION_ID field in os-release(5) is optional [1].  It's absent on
Arch Linux, which follows a rolling-release model and uses the BUILD_ID
field instead:
  BUILD_ID=rolling

A subsequent commit will run the CI on Arch Linux.  Hence, the code to
get the default release from the host operating system can no longer
assume the presence of the VERSION_ID field in os-release(5).

Note that the arch-toolbox image is tagged with 'latest', in accordance
with OCI conventions, not 'rolling' [2,3], which is the os-release(5)
BUILD_ID.

A similar change was made to toolbox(1) in commits 2ee82af and
d14fd7b.

[1] https://www.freedesktop.org/software/systemd/man/os-release.html

[2] Commit 2568528
    containers@2568528cb7f52663
    containers#861

[3] Commit a4e5861
    containers@a4e5861ae5c93625
    containers#1308

containers#1438
containers#1535
This is a step towards running the CI on Arch Linux.

containers#1438
containers#1535
@@ -551,6 +551,11 @@ function get_system_id() (
function get_system_version() (
local os_release

if [ "$(get_system_id)" = "arch" ]; then
echo "latest"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I needed to solve the same problem that this hunk addresses for #1438 which reminded me again of this pull request.

Instead of calling get_system_id, we can directly use VERSION_ID because we also source os-release(5) here.

@debarshiray
Copy link
Member

The test/system: Fix create tests for host distro/version commit is certainly welcome. As we add built-in support for more and more distributions, the combinatorial explosion of host and container operating system pairs makes it important to run the tests on as many different host OSes as possible.

We need this commit for #1438

So, let me try to rebase this pull request, so that we can get this commit merged.

@debarshiray debarshiray merged commit fead837 into containers:main Nov 17, 2024
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants