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!

  1. Make changes in a Godot game
  2. git push
  3. Manually deploy from GitHub or GitLab (this can be automated)
  4. 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

alt text

Did you get confused and make edits in the wrong one sometimes?

Also yes

alt text

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, and zip already installed which makes me think it’s not using the same ubuntuL: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
  • 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:

alt text

And thanks Craiyon for the silly featured image! The prompt was:

tanuki and an octopus in a fight

alt text

Just in case you didn’t know, GitLab’s icon is a tanuki not a fox. I didn’t know–all these years.