I think it’s very generous of Gitlab to provide free runners, however, I’m finding rather unusable.
First we tried to create pipelines with multiple stages to break up the build (the build takes 1-2 minutes locally including integrated tests), but we found that gitlab was swapping the runners between stages and we were caching the artifacts in cache.zip which became unretrievable when gitlab swapped the runner.
Then we looked at using artifacts but couldn’t work out how to retrieve a built artifact between stages.
Then we decided to chuck everything into a single stage, which builds for some of our apps, but the bigger one fails consistently. It takes about 2 mins locally and over 2 hours on the gitlab shared runner. It fails repeatedly with timeouts.
I don’t know if we’re configuring something incorrectly or if the shared runners are so overloaded that they can take a 1 minute build and turn it into a 1 hour build.
We would be happy to pay for the builds, but I don’t want Digital Ocean instances just sitting there idle most of the time, I’d rather have a DO instance pop into existence for the build then kill itself. I can’t find any information how to do this though. It seems that you have to have a DO instance sitting there idle while it waits for a build to kick off.
What do we need to do to get all this running?