Skip to content

Multiple updates for our CI workflows - #223

Merged
edgar-bonet merged 6 commits into
tenox7:masterfrom
edgar-bonet:update-ci
Oct 4, 2026
Merged

edgar-bonet merged 6 commits into
tenox7:masterfrom
edgar-bonet:update-ci

Conversation

@edgar-bonet

@edgar-bonet edgar-bonet commented Sep 23, 2026 •

Copy link
Copy Markdown
Collaborator

This pull request updates the tooling used in our CI workflows, in order to keep it updated as old components get deprecated and new ones are made available:

  • actions-codespell is bumped from 2.2 to 2.4.3

  • clang-format is bumped from 17 to 20

  • "Enforce codespell-clean spelling" is moved from an ubuntu-22.04 runner to ubuntu-24.04

  • "Enforce clang-format" is moved from Ubuntu 22.04 to ubuntu-slim, which is a slim version of Ubuntu 24.04

  • "Build on Linux/macOS" has multiple updates on the runner images and compilers (see below)

  • in "Build on Linux/macOS", bsdmake (which is deprecated) has been removed as a make implementation to test against, remake has been added

The change in version coverage of "Build on Linux/macOS" is the following (changes in bold):

component currently this PR
Ubuntu 22.04, 24.04 22.04, 24.04, 26.04
macOS 14, 15, 26 15, 26, 27
gcc 13, 14, 15 11, 13, 15
clang 18, 20 18, 20, 22

I have successfully tested this updated CI on my fork. There are just a couple of warnings:

These runners use less resources, and are well suited for this kind of
lightweight workflows. The codespell workflow cannot use these runners
though, as it depends on Docker, which does not work on the slim
runners.
Bump to ubuntu-24.04, which is the current ubuntu-latest.
We do not need to add the LLVM repositories anymore, as clang-format-20
is available on the standard repositories of Ubuntu 24.04, which is the
base distro of the ubuntu-slim image. It is also available on
Ubuntu 26.04, which should make this safe vs. a future upgrade of the
image base.
@edgar-bonet

Copy link
Copy Markdown
Collaborator Author

Yesterday, GitHub issued an update about the deprecation of macOS 14: GitHub Actions: macOS 14 runner image retirement.

The macOS 14 runner image will be retired on November 2, 2026. To raise awareness of the upcoming removal, jobs using macOS 14 will temporarily fail during the following scheduled brownout periods: [...]

If left as is, our “Build on Linux/macOS” workflow will start failing soon.

@edgar-bonet
edgar-bonet requested review from hartwork and tenox7 October 2, 2026 08:37
@hartwork

hartwork commented Oct 2, 2026 •

Copy link
Copy Markdown
Collaborator

Hi @edgar-bonet, just a three quick notes from a quick look:

  • The first four commits look good 👍
  • Commit 5 CI: upgrade tooling on "Build on Linux/macOS" does too many things at once, which makes review hard
  • Commit 6: bsdmake was used for a make not supporting GNU make syntax. Replacing by GNU remake does not preserve that idea.

@edgar-bonet

Copy link
Copy Markdown
Collaborator Author

Hi @hartwork, and thanks for the review!

I made a couple of changes to the pull request and force-pushed:

  1. Split commit 5 into two commits:

    • 8591455 CI: upgrade tooling on "Build on Linux/macOS"
    • 092a47d CI: remove unneeded steps

    The first of these commits only deals with reassigning OS and compiler versions to the matrix jobs. It is still a fairly large commit, but there is no natural way of splitting it further. It certainly is possible to split it further, but doing so would feel like splitting a “sort” into individual transpositions.

    Note that if we take only the first of the two commits above, the job “Build (clang-22/bmake on ubuntu-26.04)” fails on the step “Add Clang/LLVM repositories” because the command apt-key, which has been deprecated for a while, is not installed on Ubuntu 26.04. This does not fail the workflow though, as I set experimental: true on the job, because Ubuntu 26.04 is pretty new.

  2. Dropped the last commit (adc1766 "CI: replace bsdmake with remake")

    I am still a bit annoyed that we are using a deprecated make here. I was under the impression that bmake was fulfilling the role of a ‘make’ with no GNU extensions. Also, I could find no other ‘make’ available from either apt or homebrew. Maybe we could find an alternative that we build from sources?

    Anyway, updating our choice of ‘make’ implementations could be left for another PR.

@hartwork

hartwork commented Oct 3, 2026

Copy link
Copy Markdown
Collaborator

@edgar-bonet thanks for the adjustments but the new version still does three or more things in one commit (and it drops clang_repo_suffix while that's still being used at that point).

There have been some changes in the GitHub runner images since our last
big bump:

 * Ubuntu 26.04 is available as public preview
 * macOS 14 has being deprecated
 * macOS 26 has reached general availability
 * macOS 27 is available as public preview as "xcode-27"

Update the set of images we use: remove the deprecated macOS 14 and add
the newly available images. Update also the range of compilers,
including for each of them versions n, n−2 and n−4, where n is the
latest available version.

The version coverage of our CI workflow is changed as follows:

   Ubuntu: 22.04,24.04 → 22.04–26.04
   macOS:  14–26       → 15–27
   gcc:    13–15       → 11,13,15
   clang:  18,20       → 18,20,22
Remove the steps "Add Clang/LLVM repositories" and "Install build
dependency Clang <version>", as the required clang versions are already
installed on the GitHub-supplied images.
@edgar-bonet

Copy link
Copy Markdown
Collaborator Author

Oops! Fixed the clang_repo_suffix item. Thanks!

Regarding “the new version still does three or more things in one commit”, do you have any suggestion on how to split the commit in a way that makes sense and is not just splitting for the sake of splitting? Keep in mind that the choice of OS and the choice of compiler are interrelated: I cannot just update the choice of OSes in one commit and the choice of compilers in another commit. I could try to build a path from the initial state to the final state that doesn't break the builds, but that would be overly complicated, more or less the equivalent of solving a 15 puzzle. That being said, if you have a sensible suggestion, I am open to trying it.

@hartwork hartwork left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

@edgar-bonet thanks for the adjustments!

@edgar-bonet
edgar-bonet merged commit d4a4db3 into tenox7:master Oct 4, 2026
8 checks passed
@edgar-bonet
edgar-bonet deleted the update-ci branch October 4, 2026 10:10
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