Your CI should be disposable

Your CI should have one job: scheduling. It should decide when to do the thing. Your builds itself, should be controlled by you. Use Docker, Nix, a Makefile or what have you. The ideal workflow file looks like this:

steps:
    name: Do the thing
     run: nix build .#

This way, you can always run your CI locally, its just one command after all.

Don't use CI as a way to install packages, compilers, shared libraries, toolchains. Do use it to schedule builds.

The next time GitHub Actions goes down, you'll still be able to deliver your software. Consider an alternative though.