2.8 KiB
| title | date | description | tags | categories | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Forgejo Integration, Extension, and Community Collaboration | 2025-11-17 | Summary of the project's work integrating GARM with Forgejo and contributing key features back to the community. |
|
|
🧾 Result short description / cognitions
Here is the management summary of the work package results:
-
📈 Strategic Selection: We chose Forgejo as the project's self-hosted Git service. This decision was based on several key strategic factors:
- EU-Based & Data Sovereignty: The project is stewarded by Codeberg e.V., a non-profit based in Berlin, Germany. This is a massive win for our "funding agency" stakeholders, as it aligns with GDPR, compliance, and data sovereignty goals. It's governed by EU laws, not a US tech entity.
- True Open Source (GPL v3+): Forgejo is a community-driven fork of Gitea, created to guarantee it stays 100% free and open-source (FOSS).
- License Protects Our Contributions: It uses the GPL v3+ "copyleft" license. This is perfect for our collaboration goal. It legally ensures that the features we contribute back (like GARM support) can never be taken and locked into a proprietary, closed-source product by anyone. It protects our work and keeps the community open.
-
⚙️ Core Use Case: Forgejo is used for all project source code versioning and as the backbone for our CI/CD (Continuous Integration/Continuous Deployment) pipelines.
-
🛠️ Key Extension (GARM Support): The main technical achievement was integrating GARM (Git-based Actions Runner Manager). This was not supported by Forgejo out-of-the-box.
-
✨ Required Enhancements: To make GARM work, our team developed and implemented several critical features:
- Webhook support for workflow events (to tell runners when to start).
- Support for ephemeral runners (for secure, clean-slate builds every time).
- GitHub API-compatible endpoints (to allow the runners to register themselves correctly).
-
💖 Community Contribution: We didn't just keep this for ourselves! We contributed all these features directly back to the upstream Forgejo community. This wasn't just a code-dump; we actively collaborated via issues, feature requests, and pull requests (PRs) on codeberg.org.
-
🚀 Bonus Functionality: We also implemented artifact caching. This configures Forgejo to act as a pull-through proxy for remote container registries (like Docker Hub), which seriously speeds up our build times and saves bandwidth.