On Thu, Oct 8, 2026 at 5:53 PM Mark Michelson <[email protected]> wrote:
> Thanks Ales, for both patches > > Acked-by: Mark Michelson <[email protected]> > > I pushed both patches to main. Should these be backported to other > branches, too? > Thank you Mark, yes, I took care of that. > > On Thu, Oct 8, 2026 at 6:41 AM Ales Musil via dev > <[email protected]> wrote: > > > > The Ubuntu 26.04 is the new LTS, GitHub Actions have images > > available. Move our CI and containers to Ubuntu 26.04. > > Compatibility changes required: > > - Change the linux-modules-extra to linux-modules only as the > > extra doesn't exist anymore in 26.04. > > - Adjust apparmor fix to allow rootless containers. > > - Make sure we preserve env variables for sudo as the -E > > is no longer allowed. > > - Install bsdextrautils as rev is no longer available by default. > > > > Signed-off-by: Ales Musil <[email protected]> > > --- > > .ci/linux-util.sh | 13 +++++++++ > > .github/workflows/containers.yml | 2 +- > > .../workflows/ovn-fake-multinode-tests.yml | 28 ++++++++++++------- > > .github/workflows/ovn-kubernetes.yml | 6 ++-- > > .github/workflows/ovn-upgrade-tests.yml | 11 ++++++-- > > .github/workflows/test-arm.yml | 11 ++++++-- > > .github/workflows/test.yml | 15 ++++++---- > > .readthedocs.yaml | 2 +- > > Documentation/internals/release-process.rst | 2 +- > > utilities/containers/ubuntu/Dockerfile | 3 +- > > 10 files changed, 65 insertions(+), 28 deletions(-) > > > > diff --git a/.ci/linux-util.sh b/.ci/linux-util.sh > > index 3b98bdfc4..e2937f3b4 100755 > > --- a/.ci/linux-util.sh > > +++ b/.ci/linux-util.sh > > @@ -48,6 +48,7 @@ function disable_apparmor() > > # https://bugs.launchpad.net/ubuntu/+source/apparmor/+bug/2093797 > > sudo aa-teardown || true > > sudo systemctl disable --now apparmor.service > > + sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0 > > } > > > > # XXX This should be removed when the following issue is fixed and the > > @@ -62,3 +63,15 @@ function fixup_crun() > > sudo chmod +x /usr/bin/crun > > echo "New crun version: "$(crun --version) > > } > > + > > +function sudo_preserve_env() > > +{ > > + sudo sh -c 'cat > /etc/sudoers.d/ovn-ci-env' << EOF > > +# ovn-fake-multinode > > +Defaults env_keep += "RUNC_CMD OS_IMAGE CENTRAL_IMAGE CHASSIS_IMAGE > RELAY_IMAGE GW_IMAGE ENABLE_SSL" > > +# ovn-ci > > +Defaults env_keep += "ARCH CC DPDK LIBS OPTS TESTSUITE TEST_RANGE > SANITIZERS UNSTABLE BASE_VERSION" > > +EOF > > + sudo chmod 0440 /etc/sudoers.d/ovn-ci-env > > + sudo visudo -cf /etc/sudoers.d/ovn-ci-env > > +} > > diff --git a/.github/workflows/containers.yml > b/.github/workflows/containers.yml > > index 05875bcaf..42d6027b1 100644 > > --- a/.github/workflows/containers.yml > > +++ b/.github/workflows/containers.yml > > @@ -17,7 +17,7 @@ env: > > jobs: > > container: > > if: github.repository_owner == 'ovn-org' > > - runs-on: ubuntu-24.04 > > + runs-on: ubuntu-26.04 > > strategy: > > matrix: > > distro: [ fedora, ubuntu ] > > diff --git a/.github/workflows/ovn-fake-multinode-tests.yml > b/.github/workflows/ovn-fake-multinode-tests.yml > > index 05f3b0661..b3ae69752 100644 > > --- a/.github/workflows/ovn-fake-multinode-tests.yml > > +++ b/.github/workflows/ovn-fake-multinode-tests.yml > > @@ -14,7 +14,7 @@ jobs: > > build: > > name: Build ovn-fake-multinode image > > if: github.repository_owner == 'ovn-org' || github.event_name != > 'schedule' > > - runs-on: ubuntu-24.04 > > + runs-on: ubuntu-26.04 > > strategy: > > matrix: > > cfg: > > @@ -25,8 +25,6 @@ jobs: > > PREINSTALLED_DEPENDENCIES: podman > > RUNC_CMD: podman > > OS_IMAGE: "fedora:42" > > - # https://github.com/actions/runner-images/issues/6282 > > - XDG_RUNTIME_DIR: '' > > steps: > > - name: Check out ovn-fake-multi-node > > uses: actions/checkout@v6 > > @@ -83,10 +81,16 @@ jobs: > > fixup_crun > > working-directory: ovn-fake-multinode/ovn > > > > + - name: Preserve env > > + run: | > > + . .ci/linux-util.sh > > + sudo_preserve_env > > + working-directory: ovn-fake-multinode/ovn > > + > > - name: Build ovn-fake-multi-node ${{ matrix.cfg.branch }} image > > run: | > > set -x > > - sudo -E ./ovn_cluster.sh build > > + sudo ./ovn_cluster.sh build > > mkdir -p /tmp/_output > > sudo podman tag ovn/ovn-multi-node:latest > ovn/ovn-multi-node:${{ matrix.cfg.branch }} > > sudo podman save --format oci-archive ovn/ovn-multi-node:${{ > matrix.cfg.branch }} > /tmp/_output/ovn_${{ matrix.cfg.branch }}_image.tar > > @@ -98,7 +102,7 @@ jobs: > > path: /tmp/_output/ovn_${{ matrix.cfg.branch }}_image.tar > > > > multinode-tests: > > - runs-on: ubuntu-24.04 > > + runs-on: ubuntu-26.04 > > timeout-minutes: 60 > > needs: [build] > > strategy: > > @@ -132,7 +136,6 @@ jobs: > > openvswitch-switch libunbound-dev libunwind-dev > > # https://github.com/actions/runner-images/issues/6282 > > PREINSTALLED_DEPENDENCIES: podman > > - XDG_RUNTIME_DIR: '' > > > > steps: > > - name: Check out ovn > > @@ -149,7 +152,7 @@ jobs: > > if [ -n "${{ env.DEPENDENCIES }}" ]; then > > sudo apt install -y ${{ env.DEPENDENCIES }} > > fi > > - sudo apt install -y linux-modules-extra-$(uname -r) > > + sudo apt install -y linux-modules-$(uname -r) > > > > - name: Fix /etc/hosts file > > run: | > > @@ -166,6 +169,11 @@ jobs: > > . .ci/linux-util.sh > > fixup_crun > > > > + - name: Preserve env > > + run: | > > + . .ci/linux-util.sh > > + sudo_preserve_env > > + > > - name: Free up disk space > > run: | > > . .ci/linux-util.sh > > @@ -203,7 +211,7 @@ jobs: > > > > - name: Start basic cluster > > run: | > > - sudo -E CHASSIS_COUNT=4 GW_COUNT=4 INLINE_BR_EX=${{ > matrix.inline_br_ex }} ./ovn_cluster.sh start > > + sudo CHASSIS_COUNT=4 GW_COUNT=4 INLINE_BR_EX=${{ > matrix.inline_br_ex }} ./ovn_cluster.sh start > > sudo podman exec -it ovn-central-az1 ovn-nbctl show > > sudo podman exec -it ovn-central-az1 ovn-appctl -t ovn-northd > version > > sudo podman exec -it ovn-chassis-1 ovn-appctl -t ovn-controller > version > > @@ -240,7 +248,7 @@ jobs: > > > > - name: Run fake-multinode system tests > > run: | > > - if ! sudo -E make check-multinode TESTSUITEFLAGS="${{ > matrix.cfg.testsuiteflags }}"; then > > + if ! sudo make check-multinode TESTSUITEFLAGS="${{ > matrix.cfg.testsuiteflags }}"; then > > sudo podman exec -it ovn-central-az1 ovn-nbctl show || : > > sudo podman exec -it ovn-central-az1 ovn-sbctl show || : > > sudo podman exec -it ovn-chassis-1 ovs-vsctl show || : > > @@ -274,5 +282,5 @@ jobs: > > > > - name: Stop cluster > > run: | > > - sudo -E ./ovn_cluster.sh stop > > + sudo ./ovn_cluster.sh stop > > working-directory: ovn-fake-multinode > > diff --git a/.github/workflows/ovn-kubernetes.yml > b/.github/workflows/ovn-kubernetes.yml > > index 025514274..7448a1f37 100644 > > --- a/.github/workflows/ovn-kubernetes.yml > > +++ b/.github/workflows/ovn-kubernetes.yml > > @@ -25,7 +25,7 @@ jobs: > > build: > > name: Build > > if: github.repository_owner == 'ovn-org' || github.event_name != > 'schedule' > > - runs-on: ubuntu-24.04 > > + runs-on: ubuntu-26.04 > > steps: > > - name: Enable Docker experimental features > > run: | > > @@ -69,7 +69,7 @@ jobs: > > > > e2e: > > name: e2e > > - runs-on: ubuntu-24.04 > > + runs-on: ubuntu-26.04 > > timeout-minutes: 220 > > strategy: > > fail-fast: false > > @@ -139,7 +139,7 @@ jobs: > > run: | > > set -x > > sudo apt update > > - sudo apt-get install linux-modules-extra-$(uname -r) -y > > + sudo apt-get install linux-modules-$(uname -r) -y > > sudo modprobe vrf > > > > - name: Free up disk space > > diff --git a/.github/workflows/ovn-upgrade-tests.yml > b/.github/workflows/ovn-upgrade-tests.yml > > index c03444d54..bffd29b57 100644 > > --- a/.github/workflows/ovn-upgrade-tests.yml > > +++ b/.github/workflows/ovn-upgrade-tests.yml > > @@ -14,7 +14,7 @@ jobs: > > upgrade-tests: > > name: upgrade-test ${{ matrix.cfg.base_version }} ${{ > matrix.cfg.test_range }} > > if: (github.repository_owner == 'ovn-org' && github.event_name == > 'schedule' && github.ref_name == 'main') || github.event_name == > 'workflow_dispatch' > > - runs-on: ubuntu-24.04 > > + runs-on: ubuntu-26.04 > > timeout-minutes: 120 > > > > strategy: > > @@ -44,7 +44,7 @@ jobs: > > - name: system-level-dependencies > > run: | > > sudo apt update > > - sudo apt -y install linux-modules-extra-$(uname -r) > > + sudo apt -y install linux-modules-$(uname -r) > > > > - name: checkout > > uses: actions/checkout@v6 > > @@ -66,6 +66,11 @@ jobs: > > . .ci/linux-util.sh > > fixup_crun > > > > + - name: Preserve env > > + run: | > > + . .ci/linux-util.sh > > + sudo_preserve_env > > + > > - name: Download container > > run: sudo podman pull ghcr.io/ovn-org/ovn-tests:ubuntu > > > > @@ -81,7 +86,7 @@ jobs: > > echo "name=logs-upgrade-test-${BRANCH_NAME}-${{ > matrix.cfg.test_range }}" >> $GITHUB_OUTPUT > > > > - name: build > > - run: sudo -E ./.ci/ci.sh --archive-logs --timeout=2h > > + run: sudo ./.ci/ci.sh --archive-logs --timeout=2h > > > > - name: upload logs on failure > > if: failure() || cancelled() > > diff --git a/.github/workflows/test-arm.yml > b/.github/workflows/test-arm.yml > > index 64bec214f..ed693713b 100644 > > --- a/.github/workflows/test-arm.yml > > +++ b/.github/workflows/test-arm.yml > > @@ -27,7 +27,7 @@ jobs: > > > > name: linux ${{ join(matrix.cfg.*, ' ') }} > > if: (github.repository_owner == 'ovn-org' && github.event_name == > 'schedule' && github.ref_name == 'main') || github.event_name == > 'workflow_dispatch' > > - runs-on: ubuntu-24.04-arm > > + runs-on: ubuntu-26.04-arm > > > > strategy: > > fail-fast: false > > @@ -74,7 +74,7 @@ jobs: > > - name: system-level-dependencies > > if: ${{ startsWith(matrix.cfg.testsuite, 'system-test') }} > > run: | > > - sudo apt -y install linux-modules-extra-$(uname -r) > > + sudo apt -y install linux-modules-$(uname -r) > > > > - name: checkout > > uses: actions/checkout@v6 > > @@ -96,6 +96,11 @@ jobs: > > . .ci/linux-util.sh > > fixup_crun > > > > + - name: Preserve env > > + run: | > > + . .ci/linux-util.sh > > + sudo_preserve_env > > + > > - name: Download container > > run: | > > podman pull ghcr.io/ovn-org/ovn-tests:ubuntu > > @@ -108,7 +113,7 @@ jobs: > > > > - name: build > > if: ${{ startsWith(matrix.cfg.testsuite, 'system-test') }} > > - run: sudo -E ./.ci/ci.sh --archive-logs --timeout=2h > > + run: sudo ./.ci/ci.sh --archive-logs --timeout=2h > > > > - name: build > > if: ${{ !startsWith(matrix.cfg.testsuite, 'system-test') }} > > diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml > > index f1a2cd1f7..28deb99ba 100644 > > --- a/.github/workflows/test.yml > > +++ b/.github/workflows/test.yml > > @@ -27,7 +27,7 @@ jobs: > > PREINSTALLED_DEPENDENCIES: podman > > name: Prepare container > > if: github.repository_owner == 'ovn-org' || github.event_name != > 'schedule' > > - runs-on: ubuntu-24.04 > > + runs-on: ubuntu-26.04 > > > > steps: > > - uses: actions/checkout@v6 > > @@ -105,7 +105,7 @@ jobs: > > UNSTABLE: ${{ matrix.cfg.unstable }} > > > > name: linux ${{ join(matrix.cfg.*, ' ') }} > > - runs-on: ubuntu-24.04 > > + runs-on: ubuntu-26.04 > > > > strategy: > > fail-fast: false > > @@ -142,7 +142,7 @@ jobs: > > if: ${{ startsWith(matrix.cfg.testsuite, 'system-test') }} > > run: | > > sudo apt update > > - sudo apt -y install linux-modules-extra-$(uname -r) > > + sudo apt -y install linux-modules-$(uname -r) > > > > - name: checkout > > if: github.event_name == 'push' || github.event_name == > 'pull_request' > > @@ -188,6 +188,11 @@ jobs: > > . .ci/linux-util.sh > > fixup_crun > > > > + - name: Preserve env > > + run: | > > + . .ci/linux-util.sh > > + sudo_preserve_env > > + > > - name: image cache > > id: image_cache > > uses: actions/cache@v5 > > @@ -203,7 +208,7 @@ jobs: > > > > - name: build > > if: ${{ startsWith(matrix.cfg.testsuite, 'system-test') }} > > - run: sudo -E ./.ci/ci.sh --archive-logs --timeout=2h > > + run: sudo ./.ci/ci.sh --archive-logs --timeout=2h > > > > - name: build > > if: ${{ !startsWith(matrix.cfg.testsuite, 'system-test') }} > > @@ -278,7 +283,7 @@ jobs: > > build-linux-rpm: > > name: linux rpm fedora > > if: github.repository_owner == 'ovn-org' || github.event_name != > 'schedule' > > - runs-on: ubuntu-24.04 > > + runs-on: ubuntu-26.04 > > container: fedora:42 > > timeout-minutes: 30 > > > > diff --git a/.readthedocs.yaml b/.readthedocs.yaml > > index 8c451663a..9f7b0cbd5 100644 > > --- a/.readthedocs.yaml > > +++ b/.readthedocs.yaml > > @@ -7,7 +7,7 @@ version: 2 > > > > # Set the OS, Python version, etc. > > build: > > - os: ubuntu-22.04 > > + os: ubuntu-26.04 > > tools: > > python: "3.12" > > > > diff --git a/Documentation/internals/release-process.rst > b/Documentation/internals/release-process.rst > > index f5a3ec1fa..79cd94e36 100644 > > --- a/Documentation/internals/release-process.rst > > +++ b/Documentation/internals/release-process.rst > > @@ -67,7 +67,7 @@ Scheduling`_ for the timing of each stage: > > > > In order to keep the CI stable on the new release branch, the Ubuntu > > container should be pinned to the LTS version used by the project's > > - container Dockerfile, e.g. > registry.hub.docker.com/library/ubuntu:24.04. > > + container Dockerfile, e.g. > registry.hub.docker.com/library/ubuntu:26.04. > > > > 3. When committers come to rough consensus that the release is ready, > they > > release the .0 release on its branch, e.g. 25.09.0 for > branch-25.09. To > > diff --git a/utilities/containers/ubuntu/Dockerfile > b/utilities/containers/ubuntu/Dockerfile > > index bf64974de..7e9090050 100755 > > --- a/utilities/containers/ubuntu/Dockerfile > > +++ b/utilities/containers/ubuntu/Dockerfile > > @@ -1,4 +1,4 @@ > > -FROM registry.hub.docker.com/library/ubuntu:24.04 > > +FROM registry.hub.docker.com/library/ubuntu:26.04 > > > > ARG CONTAINERS_PATH > > > > @@ -10,6 +10,7 @@ RUN apt update -y \ > > apt install -y \ > > automake \ > > bc \ > > + bsdextrautils \ > > clang \ > > curl \ > > ethtool \ > > -- > > 2.55.0 > > > > _______________________________________________ > > dev mailing list > > [email protected] > > https://mail.openvswitch.org/mailman/listinfo/ovs-dev > > > > _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
