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

ubuntu-24.04 is available, 20.04 may obsolete in the future #4281

Open
badlop opened this issue Sep 23, 2024 · 0 comments
Open

ubuntu-24.04 is available, 20.04 may obsolete in the future #4281

badlop opened this issue Sep 23, 2024 · 0 comments

Comments

@badlop
Copy link
Member

badlop commented Sep 23, 2024

Ubuntu runners

GitHub Actions provides several runners where we can run our workflows:

Now that GitHub is considering ubuntu-24.04 as ubuntu-latest, it is expected that in the near future ubuntu-20.04 will be marked as obsolete. Once that time arrives, we will have to upgrade our actions from ubuntu-20.04 to ubuntu-22.04 or higher.

Erlang/OTP install methods

When the runner doesn't include Erlang/OTP (for example ubuntu-22.0.4 and higher), or we want to use a specific erlang version, our workflows use two alternative methods to install Erlang, depending on the requirements of the workflow:

A) Erlang Docker container, suitable for simple tasks (running rebar3/mix, compiling, testing dialyzer, starting/stopping ejabberd)

jobs:

  tests:
    strategy:
      matrix:
        otp: [20, 25, 26, 27]
    container:
      image: erlang:${{ matrix.otp }}

B) erlef/setup-beam action is suitable for complex tasks (setting up databases and run ejabberd CI), but in ubuntu-22.04 the lower erlang supported is 24.2.

jobs:

  tests:
    name: Tests
    strategy:
      matrix:
        otp: ['23.0', '25', '26', '27']
        elixir: ['1.13', '1.15', '1.16', '1.17']

    steps:

    - name: Get specific Erlang/OTP
      uses: erlef/setup-beam@v1
      with:
        otp-version: ${{matrix.otp}}
        elixir-version: ${{matrix.elixir}}

Our Ubuntu usage

This is a summary of what we are using right now:

repository workflow job runs-on erlang install method
ejabberd ci.yml tests 20.04 ⚠️ setup-beam
ejabberd container.yml container 22.04 not needed
ejabberd installers.yml binaries 22.04 not needed
ejabberd installers.yml release 22.04 not needed
ejabberd runtime.yml rebars 22.04 container
ejabberd runtime.yml rebar3-elixir 20.04 ⚠️ setup-beam
ejabberd runtime.yml mix 20.04 ⚠️ setup-beam
ejabberd-contrib ci.yml tests 20.04 ⚠️ setup-beam
docker-ejabberd tests.yml tests 22.04 not needed
docs ci.yml deploy latest not needed
ejabberd-api build.yml build latest not needed
xmpp ci.yml tests 22.04 container
others (cache_tab, eimp, ...) ci.yml tests 20.04/22.04 ⚠️ container

As ejabberd supports from Erlang/OTP 20.0 up, for complex tests like ejabberd's ci and runtime, we need to use ubuntu-20.04. In ubuntu-22.04 there's no way to install Erlang/OTP older than 24.2 to use it for complex tests.

What to expect in the future

As mentioned in actions/runner-images#10636

We support two latest LTS Ubuntu versions, so Ubuntu 22 will still be available in near future.

In the future when ubuntu-20.04 runner is deleted and we are forced to use ubuntu-22.04, I expect that there will be no way to test ejabberd with Erlang/OTP lower than 24.2. When that time arrives, we may have to raise the Erlang/OTP requirement in ejabberd to 24.2.

@processone processone deleted a comment from Neustradamus Oct 21, 2024
badlop added a commit that referenced this issue Nov 14, 2024
The CI workflow uses ubuntu-24.04 and setup-beam action,
so it can test only Erlang/OTP 24 and higher.

To ensure Dialyzer is also ran with older Erlang versions,
let's add Dialyzer testing to the Runtime workflow,
which uses the erlang container, and that allows
to run Erlang/OTP 20 in ubuntu-24.04.
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

No branches or pull requests

1 participant