# GitHub Actions still using ubuntu-20.04

**URL:** <https://forum.ansible.com/t/github-actions-still-using-ubuntu-20-04/40187>\
**Category:** Get Help\
**Tags:** news-for-maintainers, github, mind, ubuntu, ci, community-wg\
**Created:** [February 11, 2025, 6:25pm UTC](https://forum.ansible.com/t/github-actions-still-using-ubuntu-20-04/40187 "2025-02-11T18:25:45Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![gundalow](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/gundalow/32/99_2.png) [@gundalow](https://forum.ansible.com/u/gundalow)\
**Post date:** [February 11, 2025, 6:25pm UTC](https://forum.ansible.com/t/github-actions-still-using-ubuntu-20-04/40187/1 "2025-02-11T18:25:45Z")

</div>

GiHub are deprecating the `ubuntu-20.04` runner, seems like we still have this in use in a lot of places.

1. Do we want to move to `ubuntu-latest` (unpinned, so might all break when GitHub update in the future, though saves us from having to do this again)
2. What do we want to do with “cgroups v2”, or has this been [fixed already](https://github.com/ansible-collections/news-for-maintainers/issues/28)? See code snippit below

These GitHub searches show we are using this in:

- [collections](https://github.com/search?q=ubuntu-20.04+AND+user%3Aansible-collections++AND+path%3A.github%2Fworkflows%2F+AND+NOT+is%3Aarchived&type=code&ref=advsearch)
- [various community tools](https://github.com/search?q=ubuntu-20.04+AND+%28+user%3Aansible-community+%29+AND+path%3A.github%2Fworkflows%2F+AND+NOT+is%3Aarchived&type=code&ref=advsearch)

> **[Build software better, together](https://github.com/search?q=ubuntu-20.04%2BAND%2B%28%2Buser%3Aansible-collections%2BOR%2Buser%3Aansible-community%2BOR%2Buser%3Aansible%2B%29%2BAND%2Bpath%3A.github%2Fworkflows%2F&type=code&ref=advsearch)**
>
> GitHub is where people build software. More than 150 million people use GitHub to discover, fork, and contribute to over 420 million projects.

How do we handle this case

> <https://github.com/ansible-collections/community.internal_test_tools/blob/e2b34bc1e806ed78599dc1515d1535ab053fefac/.github/workflows/ansible-test.yml#L39-L47>

> The Ubuntu 20.04 runner image will be fully unsupported by April 1, 2025. To raise awareness of the upcoming removal, we will temporarily fail jobs using Ubuntu 20.04. Builds that are scheduled to run during the brownout periods will fail. The brownouts are scheduled for the following dates and times:
> 
> - March 4 14:00 UTC – 22:00 UTC
> - March 11 13:00 UTC – 21:00 UTC
> - March 18 13:00 UTC – 21:00 UTC
> - March 25 13:00 UTC – 21:00 UTC
> 
> **What you need to do**
> 
> Jobs using the ubuntu-20.04 YAML workflow label should be updated to ubuntu-22.04, ubuntu-24.04 or ubuntu-latest. You can always get up-to-date information on our tools by reading about the software in the [runner images repository](https://app.github.media/e/er?s=88570519&lid=3455&elqTrackId=1befe7689f3c4a1a9cba67758d7c6fa0&elq=6cdd8e353e5b4a4bbeccb49edc5c1e54&elqaid=4309&elqat=1&elqak=8AF512931A9D3060F4A93E1FC36635281ABFACBE0B96446A3C6AB5FDC4B254BF6889). Please contact GitHub [Support](https://app.github.media/e/er?s=88570519&lid=3338&elqTrackId=51ced43500f64a46924167a4a536829b&elq=6cdd8e353e5b4a4bbeccb49edc5c1e54&elqaid=4309&elqat=1&elqak=8AF5D818E42E3357A6143F29D23F7AD3B3C1ACBE0B96446A3C6AB5FDC4B254BF6889) if you run into any problems or need help.

---

<div class="post-metadata">

**Author:** ![felixfontein](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/felixfontein/32/7530_2.png) [@felixfontein](https://forum.ansible.com/u/felixfontein)\
**Post date:** [February 11, 2025, 9:40pm UTC](https://forum.ansible.com/t/github-actions-still-using-ubuntu-20-04/40187/2 "2025-02-11T21:40:49Z")

</div>

In the repositories I’m involved, in all cases where `ubuntu-20.04` is explicitly used, it is also explicitly needed, and newer Ubuntu containers will simply not work. GitHub broke setting up Python 3.6 via [actions/setup-python](https://github.com/actions/setup-python) on `ubuntu-22.04`, so basically if you need to test something on Python 3.6 (without using a container), you **have** to use `ubuntu-20.04`. (Unless they fixed it.)

Also for testing with Ansible 2.9, ansible-base 2.10, and ansible-core 2.11, you really need `ubuntu-20.04` for the containers to still work. ([GHA ubuntu-latest image will break `ansible-test --docker` for many stable branches · Issue #28 · ansible-collections/news-for-maintainers · GitHub](https://github.com/ansible-collections/news-for-maintainers/issues/28)) Maybe some specific things (sanity tests? unit tests?) still work, since they don’t need fancy stuff like an init system or SSH, though - I don’t remember whether I explicitly tried that back then.

If GitHub drops support for `ubuntu-20.04`, we probably cannot test against Ansible 2.9, ansible-base 2.10, ansible-core 2.11, and Python 3.6 in GHA anymore.

---

<div class="post-metadata">

**Author:** ![chris](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/chris/32/293_2.png) [@chris](https://forum.ansible.com/u/chris)\
**Post date:** [February 11, 2025, 10:09pm UTC](https://forum.ansible.com/t/github-actions-still-using-ubuntu-20-04/40187/3 "2025-02-11T22:09:08Z")

</div>

April 2025 is [the end of standard support for Ubuntu 20.04](https://ubuntu.com/about/release-cycle) , pro (paid) support is available until April 2030… would [self hosted runners](https://docs.github.com/en/actions/hosting-your-own-runners/managing-self-hosted-runners/adding-self-hosted-runners) with Ubuntu 20.04 be an option? 🤷

---

<div class="post-metadata">

**Author:** ![mattclay](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/mattclay/32/268_2.png) [@mattclay](https://forum.ansible.com/u/mattclay)\
**Post date:** [February 11, 2025, 11:20pm UTC](https://forum.ansible.com/t/github-actions-still-using-ubuntu-20-04/40187/4 "2025-02-11T23:20:05Z")

</div>

Use Ubuntu 22.04 or 24.04 GitHub runners for ansible-test. Support for cgroups v2 is available in ansible-core 2.12 and later. Unless you’re testing EOL versions of ansible-core, there’s no reason to be using Ubuntu 20.04 to run ansible-test.

---

<div class="post-metadata">

**Author:** ![gundalow](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/gundalow/32/99_2.png) [@gundalow](https://forum.ansible.com/u/gundalow)\
**Post date:** [February 12, 2025, 9:06am UTC](https://forum.ansible.com/t/github-actions-still-using-ubuntu-20-04/40187/5 "2025-02-12T09:06:57Z")

</div>

> [@mattclay](#):
>
> Support for cgroups v2 is available in ansible-core 2.12 and later

Matt, thanks for confirming.

---

<div class="post-metadata">

**Author:** ![mariolenz](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/mariolenz/32/108_2.png) [@mariolenz](https://forum.ansible.com/u/mariolenz)\
**Post date:** [February 12, 2025, 6:06pm UTC](https://forum.ansible.com/t/github-actions-still-using-ubuntu-20-04/40187/6 "2025-02-12T18:06:35Z")

</div>

For the record, I think I can remove it from three collections (the ones I’m most interested in):

- [comunity.vmware](https://github.com/ansible-collections/community.vmware/pull/2312)
- [vmware.vmware](https://github.com/ansible-collections/vmware.vmware/pull/116)
- [vmware.vmware\_rest](https://github.com/ansible-collections/vmware.vmware_rest/pull/582)

`ubuntu-20.04` would be used or `<stable-2.12` there. But since those collections neither support nor test with those versions, we could simply drop it.

Maybe we should try to address low hanging fruit like this first, and then discuss the rest? Just an idea…

BTW if it hasn’t been done yet, I think this should be mentioned on Bullhorn.

---

<div class="post-metadata">

**Author:** ![mariolenz](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/mariolenz/32/108_2.png) [@mariolenz](https://forum.ansible.com/u/mariolenz)\
**Post date:** [February 13, 2025, 4:11pm UTC](https://forum.ansible.com/t/github-actions-still-using-ubuntu-20-04/40187/7 "2025-02-13T16:11:14Z")

</div>

> [@gundalow](#):
>
> - [38 Collections](https://github.com/search?q=ubuntu-20.04+AND+user%3Aansible-collections++AND+path%3A.github%2Fworkflows%2F&type=code&ref=advsearch&p=2)
> - [Various community tools](https://github.com/search?q=ubuntu-20.04+AND+%28+user%3Aansible-community+%29+AND+path%3A.github%2Fworkflows%2F&type=code&ref=advsearch)

It looks like some collections (6 or 7?) already worked on this. Let’s wait a few more days and then have another look.

BTW some of the repos are archived. I think we should ignore them. As far as I can see, we can remove them by adding `AND NOT is:archived`:

- [collections](https://github.com/search?q=ubuntu-20.04+AND+user%3Aansible-collections++AND+path%3A.github%2Fworkflows%2F+AND+NOT+is%3Aarchived&type=code&ref=advsearch)
- [various community tools](https://github.com/search?q=ubuntu-20.04+AND+%28+user%3Aansible-community+%29+AND+path%3A.github%2Fworkflows%2F+AND+NOT+is%3Aarchived&type=code&ref=advsearch)

Other repos look a little bit inactive. For example, the last commit to [ibm.ds8000](https://github.com/ansible-collections/ibm.ds8000) has been 2023, and the last release even 2022. And [community.proxmox](https://github.com/ansible-collections/community.proxmox) only hast the initial commit from @Andersson007. No more commits, no release, no issues and no PRs. This looks a little bit weird, too.

But, as I’ve said, let’s wait a few days. Maybe some maintainers remove `ubuntu-20.04` and then it would be less work to have a look at the rest.

---

<div class="post-metadata">

**Author:** ![gundalow](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/gundalow/32/99_2.png) [@gundalow](https://forum.ansible.com/u/gundalow)\
**Post date:** [February 14, 2025, 9:20am UTC](https://forum.ansible.com/t/github-actions-still-using-ubuntu-20-04/40187/8 "2025-02-14T09:20:43Z")

</div>

> [@mariolenz](#):
>
> BTW some of the repos are archived. I think we should ignore them. As far as I can see, we can remove them by adding `AND NOT is:archived`:

Good spot. I’ve updated my original post to include `AND NOT is:archived`

---

<div class="post-metadata">

**Author:** ![mariolenz](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/mariolenz/32/108_2.png) [@mariolenz](https://forum.ansible.com/u/mariolenz)\
**Post date:** [February 14, 2025, 3:22pm UTC](https://forum.ansible.com/t/github-actions-still-using-ubuntu-20-04/40187/9 "2025-02-14T15:22:59Z")

</div>

I think `community.routeros` and `community.sops` don’t use `ubuntu-20.04` anywhere, but it turns up in a comment.

---

<div class="post-metadata">

**Author:** ![felixfontein](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/felixfontein/32/7530_2.png) [@felixfontein](https://forum.ansible.com/u/felixfontein)\
**Post date:** [February 14, 2025, 9:00pm UTC](https://forum.ansible.com/t/github-actions-still-using-ubuntu-20-04/40187/10 "2025-02-14T21:00:14Z")

</div>

Both collections’ previous stable branch are stil using `ubuntu-20.04`, since these branches still support Ansible 2.9.

---

<div class="post-metadata">

**Author:** ![mariolenz](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/mariolenz/32/108_2.png) [@mariolenz](https://forum.ansible.com/u/mariolenz)\
**Post date:** [March 4, 2025, 6:42pm UTC](https://forum.ansible.com/t/github-actions-still-using-ubuntu-20-04/40187/11 "2025-03-04T18:42:01Z")

</div>

This might be really hard to track. What I mean is: If some older release still needs this, there should be a branch for this release. But, on the other hand, if an older branch still mentions `ubuntu-20.04` we have no way to know if this branch / release is still maintained. At least not automatically.

Or do we?

---

<div class="post-metadata">

**Author:** ![russoz](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/russoz/32/127_2.png) [@russoz](https://forum.ansible.com/u/russoz)\
**Post date:** [March 9, 2025, 10:15pm UTC](https://forum.ansible.com/t/github-actions-still-using-ubuntu-20-04/40187/12 "2025-03-09T22:15:44Z")

</div>

I think it boils down to how much (and for how long) we (Ansible community) want to **commit** to support our releases. If we really want to stick to the current plans, then we should be committing time to support our claim independently from the support time frames of these other players, be it Github, Canonical, or any other party this project relies on. Which is a problem for a mostly volunteer-based project.

Maybe lay the cards on the table with the general public, saying “hey, support for Ubuntu 20.04 has dropped from GH, so if you the public want to have that, someone needs to step up and commit to maintain a base image”. I don’t know, just an idea.

---

<div class="post-metadata">

**Author:** ![felixfontein](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/felixfontein/32/7530_2.png) [@felixfontein](https://forum.ansible.com/u/felixfontein)\
**Post date:** [March 11, 2025, 8:34pm UTC](https://forum.ansible.com/t/github-actions-still-using-ubuntu-20-04/40187/13 "2025-03-11T20:34:39Z")

</div>

It seems that for collection tests, the `ubuntu-20.04` image is no longer needed. I’ve tried `ubuntu-22.04` and then `ubuntu-latest` in [[WIP] CI: Try out ubuntu22.04 for 2.9, 2.10, and 2.11 by felixfontein · Pull Request #145 · ansible-collections/community.internal\_test\_tools · GitHub](https://github.com/ansible-collections/community.internal_test_tools/pull/145), and for both everything passed. It might be related to me using the patched versions of 2.9, 2.10, 2.11 from [GitHub - ansible-community/eol-ansible: CI helpers for End of Life Ansible/ansible-base/ansible-core versions](https://github.com/ansible-community/eol-ansible/), or some other issue no longer being there…

---

<div class="post-metadata">

**Author:** ![felixfontein](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/felixfontein/32/7530_2.png) [@felixfontein](https://forum.ansible.com/u/felixfontein)\
**Post date:** [March 11, 2025, 8:54pm UTC](https://forum.ansible.com/t/github-actions-still-using-ubuntu-20-04/40187/14 "2025-03-11T20:54:46Z")

</div>

I also tried this for other collections, it worked there as well:

- [[WIP] CI: Try out ubuntu22.04 for 2.9, 2.10, and 2.11 by felixfontein · Pull Request #145 · ansible-collections/community.internal\_test\_tools · GitHub](https://github.com/ansible-collections/community.internal_test_tools/pull/145)
- [CI: Remove usage of ubuntu-20.04 by felixfontein · Pull Request #349 · ansible-collections/community.routeros · GitHub](https://github.com/ansible-collections/community.routeros/pull/349)
- [CI: Remove usage of ubuntu-20.04 by felixfontein · Pull Request #853 · ansible-collections/community.crypto · GitHub](https://github.com/ansible-collections/community.crypto/pull/853)
- [CI: Remove usage of ubuntu-20.04 by felixfontein · Pull Request #25 · ansible-collections/community.library\_inventory\_filtering · GitHub](https://github.com/ansible-collections/community.library_inventory_filtering/pull/25)

---

<div class="post-metadata">

**Author:** ![gundalow](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/gundalow/32/99_2.png) [@gundalow](https://forum.ansible.com/u/gundalow)\
**Post date:** [March 11, 2025, 9:04pm UTC](https://forum.ansible.com/t/github-actions-still-using-ubuntu-20-04/40187/15 "2025-03-11T21:04:13Z")

</div>

> [@felixfontein](#):
>
> It seems that for collection tests, the `ubuntu-20.04` image is no longer needed

That’s great news

> [@felixfontein](#):
>
> It might be related to me using the patched versions of 2.9, 2.10, 2.11 from [GitHub - ansible-community/eol-ansible: CI helpers for End of Life Ansible/ansible-base/ansible-core versions](https://github.com/ansible-community/eol-ansible/), or some other issue no longer being there…

Do all the updates mentioned in your following post use that patched version?

---

<div class="post-metadata">

**Author:** ![felixfontein](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/felixfontein/32/7530_2.png) [@felixfontein](https://forum.ansible.com/u/felixfontein)\
**Post date:** [March 12, 2025, 5:43am UTC](https://forum.ansible.com/t/github-actions-still-using-ubuntu-20-04/40187/16 "2025-03-12T05:43:14Z")

</div>

> [@gundalow](#):
>
> > [@felixfontein](#):
> >
> > It might be related to me using the patched versions of 2.9, 2.10, 2.11 from [GitHub - ansible-community/eol-ansible: CI helpers for End of Life Ansible/ansible-base/ansible-core versions](https://github.com/ansible-community/eol-ansible/), or some other issue no longer being there…
> 
> Do all the updates mentioned in your following post use that patched version?

Yes. The Docker images for the original stable-x branches completely stopped working some time ago; the fix was to re-push them in another container image format. That needed an update of the code (because Core didn’t want to do it, so the image names changed). Maybe the updated container format also solved the other problems that were originally there - or it was another unrelated change in the newer `ubuntu` images… 🤷

---

<div class="post-metadata">

**Author:** ![felixfontein](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/felixfontein/32/7530_2.png) [@felixfontein](https://forum.ansible.com/u/felixfontein)\
**Post date:** [March 12, 2025, 6:39pm UTC](https://forum.ansible.com/t/github-actions-still-using-ubuntu-20-04/40187/17 "2025-03-12T18:39:35Z")

</div>

Regarding the other projects:

- [Drop support for Python \< 3.9, modernize code by felixfontein · Pull Request #68 · ansible-community/antsibull-docs-parser · GitHub](https://github.com/ansible-community/antsibull-docs-parser/pull/68)
- [Require Python 3.9+; add Python 3.12 and 3.13 to CI by felixfontein · Pull Request #64 · ansible-community/ansible-pygments · GitHub](https://github.com/ansible-community/ansible-pygments/pull/64)
- I’ve pinged folks for the `ppa` and `community-website` repos

---

<div class="post-metadata">

**Author:** ![felixfontein](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/felixfontein/32/7530_2.png) [@felixfontein](https://forum.ansible.com/u/felixfontein)\
**Post date:** [March 23, 2025, 9:56am UTC](https://forum.ansible.com/t/github-actions-still-using-ubuntu-20-04/40187/18 "2025-03-23T09:56:26Z")

</div>

This is unrelated to GHA, but AZP is also showing a warning “The Ubuntu-20.04 image for the Microsoft-hosted “Azure Pipelines” pool is deprecated and will be retired April 1st.”. Does anyone know whether this affects AZP used for Ansible collections? It is totally unclear to me whether this warning is simply shown to _everyone_, or only to affected repos (it does show up for all collections I maintain, and also for [https://dev.azure.com/ansible/microsoft.iis/\_build/results?buildId=140869&view=results](https://dev.azure.com/ansible/microsoft.iis/_build/results?buildId=140869&view=results) and [https://dev.azure.com/ansible/ansible/\_build/results?buildId=140864&view=results](https://dev.azure.com/ansible/ansible/_build/results?buildId=140864&view=results)). I don’t know where that image might be configured (maybe somewhere where I cannot see it?)… CC @mattclay

---

<div class="post-metadata">

**Author:** ![mattclay](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/mattclay/32/268_2.png) [@mattclay](https://forum.ansible.com/u/mattclay)\
**Post date:** [March 23, 2025, 7:21pm UTC](https://forum.ansible.com/t/github-actions-still-using-ubuntu-20-04/40187/19 "2025-03-23T19:21:52Z")

</div>

The AZP warning is for projects which are using free Microsoft-hosted agents, not the ones paid for by Red Hat. Some collections use a mix of both, possibly unintentionally.

For example, here’s a reference to a Microsoft-hosted agent:

> <https://github.com/ansible-collections/community.postgresql/blob/1317e056bf1415d91f0f5afdf0c8b7a1fa0bd19c/.azure-pipelines/azure-pipelines.yml#L49-L50>

Here’s one in the same collection for an agent provided by Red Hat:

> <https://github.com/ansible-collections/community.postgresql/blob/1317e056bf1415d91f0f5afdf0c8b7a1fa0bd19c/.azure-pipelines/azure-pipelines.yml#L40-L42>

Collections should avoid using the `ubuntu-20.04` image, as it will be retired soon.

---

<div class="post-metadata">

**Author:** ![felixfontein](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/felixfontein/32/7530_2.png) [@felixfontein](https://forum.ansible.com/u/felixfontein)\
**Post date:** [March 26, 2025, 7:42pm UTC](https://forum.ansible.com/t/github-actions-still-using-ubuntu-20-04/40187/20 "2025-03-26T19:42:38Z")

</div>

So basically if I don’t see `vmImage:` anywhere, I should be on the safe side? I can’t find anything like that in the AZP definitions for community.general, community.crypto, and community.docker.

[Next page](https://forum.ansible.com/t/github-actions-still-using-ubuntu-20-04/40187.md?page=2)
