website-and-documentation/content/en/docs/documentation/forgejo.md

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.
Forgejo
GARM
CI/CD
OSS
Community
Project Report
Workpackage Results

🧾 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.