mirror of
https://github.com/RayLabsHQ/gitea-mirror.git
synced 2026-10-18 05:11:53 +02:00
* feat(releases): mirror releases from Gitea and Forgejo sources (#440) Release mirroring was GitHub only. The list-and-reconcile loop in gitea.ts now works on a normalized release shape that a per-source lister fills, so Gitea, Forgejo and Codeberg repositories mirror their releases and assets the same way GitHub ones do. - GiteaSourceProvider gains listReleases(owner, repo, limit), paginating with limit/page and stopping at x-total-count. listReleases is optional on the SourceProvider interface; GitLab does not implement it. - mirrorGitHubReleasesToGitea keeps its signature and its behaviour, with the "Originally published on GitHub:" header line unchanged byte for byte so existing mirrored bodies are not PATCHed on the next sync. Gitea and Forgejo releases get the same shape with their own label. - mirrorGiteaSourceReleasesToGitea is the new entry point. It honours the same release limit, asset limit, per-destination lock, tag-exists check, retention pruning and asset reconciliation. - reconcileReleaseAssets takes the download Authorization from the caller instead of always sending the primary config's GitHub token: the GitHub path sends its token, a Gitea source sends that instance's token, and a tokenless public source sends no header at all. One host's token can no longer reach another host. - mirrorReleases left GITHUB_ONLY_METADATA_KEYS and is gated on the new sourceKindSupportsReleases instead. Issues, pull requests, labels, milestones and the metadata master switch stay GitHub only, and GitLab still has releases forced off. - The three call sites pick the path: a GitHub source with a client goes through Octokit, a Gitea source through its own API, anything else logs and is skipped. - The release switch and its two limits follow the release-capable check in the settings UI, and the docs, the site and the capability tables say what is true now. * test(releases): run the source aware release suite in an isolated child Other test files replace the HTTP client and related modules with mock.module, which is process-wide in bun and depends on file order. On CI the new suite ran after one of them and every case failed on a mocked destination lookup. Same harness as gitea-org-mirror-destination.test.ts.
Gitea Mirror Documentation
This folder contains engineering and operations references for the open-source Gitea Mirror project. Each guide focuses on the parts of the system that still require bespoke explanation beyond the in-app help and the main README.md.
Available Guides
Core workflow
- DEVELOPMENT_WORKFLOW.md – Set up a local environment, run scripts, and understand the repo layout (app + marketing site).
- ENVIRONMENT_VARIABLES.md – Complete reference for every configuration flag supported by the app and Docker images.
- NIX_DEPLOYMENT.md – User-facing deployment guide for Nix and NixOS.
- NIX_DISTRIBUTION.md – Maintainer notes for packaging, releases, and distribution strategy.
Reliability & recovery
- GRACEFUL_SHUTDOWN.md – How signal handling, shutdown coordination, and job persistence work in v3.
- RECOVERY_IMPROVEMENTS.md – Deep dive into the startup recovery workflow and supporting scripts.
Authentication
- SSO-OIDC-SETUP.md – Configure OIDC/SSO providers through the admin UI.
- SSO_TESTING.md – Recipes for local and staging SSO testing (Google, Keycloak, mock providers).
API
- API.md – Create API keys and call the app from scripts, CI pipelines and workflow tools.
Sources and destinations
- SOURCE_PROVIDERS.md – GitHub, GitLab and Gitea/Forgejo as sources: tokens, what each can mirror, the source lock.
- PUSH_TARGETS.md – GitHub and GitLab as destinations: how the push engine works, token scopes, disk usage, what is not mirrored.
The user-facing documentation lives on the website at https://gitea-mirror.raylabs.io/docs/, with its sources under www/src/pages/docs/. If you are looking for playbooks, see the MDX use cases under www/src/pages/use-cases/.
Quick start for local development
git clone https://github.com/RayLabsHQ/gitea-mirror.git
cd gitea-mirror
bun run setup # installs deps and seeds the SQLite DB
bun run dev # starts the Astro/Bun app on http://localhost:4321
The first user you create locally becomes the administrator. All other configuration—GitHub owners, Gitea targets, scheduling, cleanup—is done through the Configuration screen in the UI.
Contributing & support
- 🎯 Contribution guide: ../CONTRIBUTING.md
- 🐞 Issues & feature requests: https://github.com/RayLabsHQ/gitea-mirror/issues
- 💬 Discussions: https://github.com/RayLabsHQ/gitea-mirror/discussions
- 🔐 Security policy & advisories: https://github.com/RayLabsHQ/gitea-mirror/security