Devops for Indie Games
I’d like to acknowledging a preference for GitLab over GitHub. Obviously GitHub is the popular choice, but I have a soft spot for the underdog… especially the open source optionally self-hosted underdog.
My evidence is anecdotal, but Github Actions is a gentle learning curve compared to GitLab’s CI. It could be because I learned GitLab first and had new concepts to wrap the ol brain round. The option to use other people’s reusable elements in GitHub is sweet.
All that said, they’re both fine choices for this task! If/when Microsoft makes a change that pisses everyone off GitLab will be there. If/when GitLab has some dramatic open source fallout and split… self hosted Gitea will be there!
What Are We Even Doing Here?
We want to push changes to a remote repository and have it deploy to Itch.io!
- Make changes in a Godot game
git push
- Manually deploy from GitHub or GitLab (this can be automated)
- Go to itch.io and play
- Bonus: be downloadable for Linux, MacOs, and Windows
This post is not to deep dive into how this works. The README’s for the projects do that. This post is a comparison of the similarities and differences between the projects.
Was it confusing to work on two projects with long names only differentiated by 2 characters?
Yes
Did you get confused and make edits in the wrong one sometimes?
Also yes
Compare and Contrast
Pipeline Setup
- Both have a single job for each stage
- GitHub allows for named steps in each job
- GitLab is basically one long script for each job
- The “stages” are comments and they parallel the GitHub version
- GitLab doesn’t need to checkout out the repository the pipeline is running with
- GitLab doesn’t have to do anything special to get artifacts from one job to the next
- GitHub’s actions are sweet, but what would happen if they were removed
- All the ones used here are maintained by GitHub
- But one could be build for building a godot game, then the author decided to stop supporting it and then everyone’s pipeline stops working? I’m not sure ¯\(ツ)/¯
Container Image
- GitHub is called
ubuntu-latest
- GitLab uses the “more appropriate” name and tag:
ubuntu:24.04
- GitHub’s image has
curl
,unzip
, andzip
already installed which makes me think it’s not using the sameubuntuL:latest
from docker- It would be better to use a versioned image on GitHub, maybe a future update
- Building the images in the script uses more free minutes than necessary
- GitLab has image repositories built in, It would be cool to make use of that in a future version of this project
Other
- Chose to keep the pipelines manual
- For both platforms it’s easy to automate this when there is a push or MR/PR merge into
main
- For both platforms it’s easy to automate this when there is a push or MR/PR merge into
- Butler, had no idea it was a thing and it was easy to get started
Conclusion
GitLab is more technically correct in my opinion, but GitHub is easier to get started continuously deploying.
Thanks for this laugh Codium:
And thanks Craiyon for the silly featured image! The prompt was:
tanuki and an octopus in a fight
Just in case you didn’t know, GitLab’s icon is a tanuki not a fox. I didn’t know–all these years.