Future of Codeberg CI #843
Labels
No labels
accessibility
bug
bug
infrastructure
Codeberg
contributions welcome
docs
duplicate
enhancement
infrastructure
legal
licence / ToS
please chill
we are volunteers
public relations
question
question
user support
s/Forgejo
s/Forgejo/migration
s/Pages
s/Weblate
s/Woodpecker
security
service
upstream
wontfix
No milestone
No project
No assignees
7 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Codeberg/Community#843
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
As you mey all know, Codeberg uses Woodoecker for the CI, which is currently in Beta. Gitea is now working on a integrated CI. The new builtin CI will be based on act and is compatible with GitHub Actions. Another benefit of this work, is that existing external CI (like Woodpecker) will be better integrated into Gitea.
This rises one Question: Which CI system will Codeberg use? Will it stay on Woodpecker or will it switch to the new one?
Benefits of the new one:
Benefits of staying with Woodpecker:
I don't think Codeberg is willing to waste resources to keep 2 CI systems running, so a decission has to be made.
I know, this is a little bit early to talk about this, as I think it will take at leat one Year to be ready, but I think it's better to clarify things directly.
Having both as an option wouldn't necessarily need to be wasteful if both can share the same runner resources. Or I'd there any fundamental reason this cannot work?
This leaves the task of having to maintain multiple CI systems, which doesn't sound too appealing either. We'll have to see further down the line if this has little enough maintenance requirements to make this feasible. Woodpecker still lacks a bunch of features that would allow opening this to more users (i.e. resource limits per users/orgs). Maybe that will be available in the gitea ci?
I'd postpone this debate until the Gitea Actions is something more visible and we know how to deploy it.
I think we can have both options next to each other.
Having both options would mean that they have to be maintained both. If Codeberg ant to do this and have the mainpower, thats good. I asked, because I don't want to spend too much time migrating to Woodpecker, when it is bsoltee in one Year. SO let's keep this open until Gitea actions are in a more polished state.
Let me phrase it this way: We need more maintainers (also see https://codeberg.org/Codeberg/Projects). But if someone (better two) step(s) up to maintain the new Actions Runner and the necessary config, having multiple CI options is probably a bonus.
The actions runner has had serious security issues. If you want to learn about its security implications, this is a good starting point for reading: https://gitea.com/gitea/act/pulls/52#issuecomment-739310
Other than that, if someone steps up to track the progress and implement everything necessary on Codeberg's side, nothing holds against providing Actions compatible CI hosting at Codeberg.
I had a quick review. Upstream was closed the issue and Gitea stays open. The purpose of upstream project is running locally, so there is a different perspective if using the project for online services. I have no expertise on security, but question for you, is this security issue is a block for moving Actions adoption forword? If it is, stay for Woodoecker, because no solution for now and don't know how long gonna wait, and might be another security issues will come out in the future. Again, upstream is running locally, which don't care much about security.
Codeberg based on Forgejo, Forgejo forked Gitea, which is a chain. How to jump in the codebase on Codeberg side?
A view from a user perspective: we moved our repo from Github to Codeberg. We had a CI enabled that tested functionality every night against a modified toolchain. Now I was able to implement this with Woodpecker and my experience with it has been very good. The only thing I missed is a description of how it works in general, supported by a block diagram or something else. But for me the big advantage is that I can do most of my work on my PC. After finishing the Docker container that automatically installs the toolchain, all I had to do was upload the Dockerfile to a codeberg repo and create a yaml file for the nightly build. It sounds simple and generally it was. I'll try to write a small tutorial in the next few weeks, but I don't think I'd want to go back to github actions. I think this flexibility and control is much better.
If you license your tutorial with a license that is compatible to https://codeberg.org/Codeberg/Documentation (or otherwise libre, like a Creative Commons license), this could be integrated into our docs eventually (with a backlink if needed or if obligated by the license, of course).
One of the things that seems to be missing from the Woodpecker CI is caching (between runs), see https://github.com/LemmyNet/lemmy/issues/2652.
There is a drone plugin for it https://plugins.drone.io/plugins/volume-cache (using volumes somehow)
There is a Forgejo Actions plugin for it https://code.forgejo.org/actions/cache
I can't see any mention on the Woodpecker CI docs about caching. This might end up the dealbreaker for me, as it leads to a significant speed increase to be able to cache dependencies between runs.
Happy for any insight here, maybe I missed something! Otherwise it's a +1 towards moving towards Forgejo Actions from me!
I created a feature request about caching some years ago, no progress, indeed. https://github.com/woodpecker-ci/woodpecker/discussions/2295
I managed a solution at least, by building an image that already has the app dependencies installed, then the ci run only has to sync what has changed, and I can periodically update the ci base image.
Test run time in CircleCI (with caching):
Test run time in Codeberg CI (using aforementioned preinstalling):
... although the non-preinstall test run is only another 40s slower, so maybe not worth the fuss :)
Most of this issue was clarified in https://codeberg.org/actions/meta/