After losing GitLab as described in the previous article I can now say, that I actually won Forgejo, or rather SI-Forge, as I named it.
SI-Forge is a Forgejo instance, where I started to host my source code. The recovery of all source repositories is still ongoing and there are some changes to how I previously used GitLab.
Mirroring Repositories
The first major change is that I don’t plan to bring back all the mirrored repositories. Only those that I actually reference somewhere. While the original idea of mirroring repositories was nice and noble, the reality was that the mirror process was breaking all the time due to force pushes, renamed branches and overwritten git tags. The benefit it generated for me was miniscule.
The second major change is that I stop using GitLab-CI to run the mirroring task. Mainly because Forgejo supports pull-mirrors without buying a premium license.
Snippets
Snippets are the main feature I miss in Forgejo. I often have these ultra tiny projects that are just a script or two and a README. In GitLab is was easy to store them in a snippet and then publish them immediately or after a while. Forgejo doesn’t have snippets, so I’ll have to come up with an alternative for that. Maybe I’ll just have a repository that is called snippets.
One-click SSO
My pet peeve with Forgejo is, of course, SSO. The fact that I need to click twice for an OIDC login is slightly annoying. Apparently Forgejo hasn’t implemented the ability to directly redirect to the Identity Provider instead of going to the Forgejo Login Page first. But there is an issue for it, so I’m not alone..
But the good news is that the SSO implementation of Forgejo seems to be much quicker than the GitLab one, making the redirects often so quick that I double check, if I’m actually logged in. Nice!
Managed/Hosted Forgejo with PikaPods
As mentioned in the previous article, I used PikaPods as a hosting provider for the new Forgejo instance. The benefit it, that PikaPods takes care of updates and keeping the instance online. That’s wonderful, but there is a major drawback: No SSH for git.
First that irritated me and I had to switch to git-credential-oauth, which was a bit more involved on Fedora Silverblue than I would like it to be. But after getting used to it, I don’t think it’s much worse than SSH. One benefit is that the home directory doesn’t store any long-term credentials that could be used to authenticate to SI-Forge from a backup. The issue is of course, you have to authenticate at least once a day.
Another struggle is the mail integration. Since the PikaPods instance is not part of my internal network, it can’t reach my internal mail server for sending mails, which means currently it doesn’t send any emails. There are ways to solve that, but I’ll explore them in the future.
Recovery of previous repositories
Not all repositories were mirrors of course, there were a bunch of original repositories. With SI-Forge running and the remnants of SI-GitLab on my disk, the challenge was to find the right repositories and were they have been located on SI-GitLab. A while ago GitLab migrated to a hashed format for the on-disk repositories, and as a result, non of the repositories contained any standardised info about the name or location. This is all stored in the database.
The solution was to read the README’s of the repositories and guess the right remote of check the local copy of the repositories and get the remote URL from there. I’ll probably publish the relevant script once I resolved the snippets situation.
CI/CD
Finally one of the biggest challenges is getting rid of GitLab-CI. I used it quite extensively in all projects and it’s biting me back now. I was lucky enough to be already working on migration from GitLab-CI to Tekton, which I now speed up quite a bit. But the way Tekton works is so fundamentally different from GitLab-CI, that it really takes quite a while to migrate. I hope the result will be better, even though CI pipelines and repositories become less bound to each other.
One major benefit of using Tekton as CI is the snappiness of the Tekton Dashboard. There is basically no loading time to get the results of a CI task and that just feels amazing. It shows how quick things can be, if you don’t put a ton of Ruby in-between.
Conclusion
After a few days of using Forgejo, I can say I’m mostly happy. Especially the snappiness and the built-in features feel nice. I do miss my snippets, but there will be a solution for that.
I think it really turned from losing SI-GitLab to winning SI-Forge, a step that I always pushed away, and now was forced to do. And it was good.

Comments
Nothing yet. Say the first thing.
Sign in to join the conversation.