As someone who deals with this every single day - frankly, it's at best painful, at worst nonexistent.. There is no CI that properly behaves in M1 land, if it exists at all. Sure, I can use the gcc to create a binary - but create and execute tests within the environment - nope, sorry. I can't get machines with any major cloud provider.
My current answer is to use Scaleway nodes. But due to their licensing constraints, each node must be up for 24 hours. This in turn becomes problematic when you opt to use Terraform as part of a GitHub Action to provision an M1 environment that you can debug against - or heck, Circle.
So now - I leave machines on that aren't guaranteed clean. We write jobs with Fabric and invoke, in order to execute them on remote nodes, and do the best we can. Tooling on the M1 makes it the thing I dislike the most.