src/webhooks/dispatch.rs:48 Aperto
La revisione sul diff
Un commento resta legato alla sua riga. Chi revisiona può scrivere un suggerimento che l'autore applica con un clic, come commit. Le approvazioni vengono contate, i conflitti rilevati.
Repository, merge request con revisione in linea, ticket, wiki, release, webhook firmati e un motore CI/CD. Un processo, un PostgreSQL, sul tuo server.
$docker compose up -d --buildUn solo binario e un database. Nessun account presso terzi, nessuna telemetria inviata da nessuna parte. Guarda com'è fatto.
Illustrazione di una merge request in FerrisGit, dal push al merge: un push su HTTPS crea la richiesta, una revisora suggerisce una modifica su una riga, l'autore la applica con un clic, la revisora approva, la richiesta viene unita. Il merge avvia la pipeline del repository: format e clippy vengono eseguiti, poi test, e tutti e tre riescono.
/api, ciascuna documentataOgni riquadro è un pezzo del prodotto reale. L'interfaccia per ora è in francese; cinque lingue sono previste per la 0.2.
src/webhooks/dispatch.rs:48 Aperto
Un commento resta legato alla sua riga. Chi revisiona può scrivere un suggerimento che l'autore applica con un clic, come commit. Le approvazioni vengono contate, i conflitti rilevati.
Dopo ogni push, FerrisGit legge il file sul branch predefinito e crea una pipeline. Gli stage sono barriere, needs sono dipendenze; i job girano in container Docker tramite un piccolo runner, o come Pod Kubernetes.
Etichette, milestone, assegnatari e quattro stati. Trascina una scheda per cambiarne lo stato, o usa il menu della scheda da tastiera.
| Azione | Lett. | Collab. | Manut. |
|---|---|---|---|
| Sfogliare, clonare, leggere | |||
| Push, aprire ticket e richieste, revisionare | |||
| Unire, pubblicare release, impostazioni, collaboratori |
Un ruolo assegnato su un gruppo vale per tutto ciò che contiene. Vince il ruolo più alto.
Dodici eventi su merge request, ticket, pipeline e collaboratori. Ogni invio porta una firma HMAC-SHA256 del corpo grezzo; il segreto è cifrato a riposo.
I visitatori sfogliano catalogo, README, file, commit e release dei repository pubblici, e li clonano. Un interruttore di amministrazione spegne le pagine pubbliche.
Nessun account può farne a meno. App di autenticazione (TOTP), passkey (WebAuthn) e dieci codici di recupero monouso.
Repository, ticket, merge request e utenti, mentre scrivi. Le notifiche nell'applicazione ti dicono cosa ti riguarda.
Descrivi i job in .ferrisgit-ci.yml alla radice del repository. Dopo ogni push riuscito, FerrisGit legge il file sul branch predefinito e crea una pipeline. Attiva l'interruttore per vedere cosa fa lo scheduler quando un job fallisce.
stages: [lint, test]
jobs:
format:
stage: lint
image: rust:1
script:
- rustup component add rustfmt
- cargo fmt --all -- --check
clippy:
stage: lint
image: rust:1
script:
- rustup component add clippy
- cargo clippy --all-targets -- -D warnings
test:
stage: test
image: rust:1
needs: [format, clippy]
script:
- cargo test --all-targets
Pipeline riuscita
lint
test
format e clippy partono insieme; test dichiara needs: [format, clippy] e parte quando entrambi sono riusciti.
ferrisgit-runner interroga il server ed esegue ogni job in un container. Oppure Kubernetes: il server crea un Pod per job nel tuo cluster.FerrisGit è un'immagine container con PostgreSQL accanto. Provalo con Docker Compose, installa il chart Helm su Kubernetes, o avvialo dai sorgenti.
git clone https://github.com/Masmarino/FerrisGit.git
cd FerrisGit
cp .env.example .env
# set POSTGRES_PASSWORD, JWT_SECRET, SETTINGS_ENCRYPTION_KEY and the admin password in .env
docker compose up -d --build
Compose costruisce l'immagine dai sorgenti. Per usare l'immagine pubblicata, sostituisci build: . con image: masmarino/ferrisgit:0.1.1 in docker-compose.yml.
git clone https://github.com/Masmarino/FerrisGit.git
cd FerrisGit
helm upgrade --install ferrisgit ./helm/ferrisgit \
--namespace ferrisgit --create-namespace \
--set image.tag=0.1.1 \
--set ingress.host=git.example.com \
--set-string ferrisgit.trustedProxyCidrs=10.42.0.0/16
kubectl -n ferrisgit rollout status deployment/ferrisgit
Se lasciati vuoti, il chart genera la password del database, JWT_SECRET, SETTINGS_ENCRYPTION_KEY e la password del primo amministratore nel Secret ferrisgit-secrets. La release deve chiamarsi ferrisgit.
git clone https://github.com/Masmarino/FerrisGit.git
cd FerrisGit
cp .env.example .env # then set real secrets
./scripts/dev.sh # PostgreSQL via Compose, cargo run on :8080, ng serve on :4201
Servono rustup, Node.js 26, Docker con Compose e git nel PATH. Lo script avvia PostgreSQL, applica le migrazioni e lancia il backend sulla porta 8080 e il server di sviluppo Angular sulla porta 4201.
Un processo, cinque crate, un'architettura esagonale: il dominio non sa nulla del database, gli adattatori non sanno nulla dei casi d'uso.
Fig. 1 Un'istanza. La linea arancione segue un push dal client ai job che avvia.
Ciò che protegge un'istanza, con il suo nome preciso. I dati non lasciano mai il tuo server.
SETTINGS_ENCRYPTION_KEY.X-Frame-Options: DENY, e le route di accesso sono limitate per IP.Cinque versioni, nessuna rilasciata. Una voce viene spuntata solo quando è rilasciata.
L'istanza pubblica mostra il prodotto. La tua istanza custodisce il tuo codice.
camille · 2 min
Backoff esponenziale, così un endpoint instabile smette di essere martellato.