Vai al contenuto
CodeQuay

Piattaforma

Tutto quello che serve per ospitare codice importante

L'hosting git che il tuo team conosce già, con regole che il server applica sempre. Ecco cosa trovi nella piattaforma.

Esempio della console CodeQuay: il repository acme/portale/api con il ruolo maintainer, l'URL di clone HTTPS, il branch main protetto, l'elenco dei file e il README.

Ogni giorno

Il git di sempre, senza sorprese

Per chi sviluppa non cambia nulla: clone, branch, push e tag come oggi. La differenza la fa il server.

  • File browser

    Evidenziazione della sintassi e README in anteprima.

  • Cronologia e blame

    Storia paginata, blame riga per riga, confronto fra branch.

  • Confronto

    Diff fra branch, tag e commit, anche su storie lunghe.

  • Ricerca

    Nei repository a cui hai accesso, e solo in quelli.

  • Organizzazioni e progetti

    Ruoli ereditati e restrizioni per singolo utente.

  • HTTPS e SSH

    Clone e push con il protocollo che il team usa già.

Protezioni lato server

Regole che non si aggirano, nemmeno da owner e admin

Le protezioni sono verificate dal server prima di accettare qualunque push. Non dipendono dagli hook installati sui computer degli sviluppatori e non esiste un ruolo che le scavalchi.

  • Branch protetti per pattern

    main, release/*, develop: per ogni pattern scegli il ruolo minimo per il push. Force-push e cancellazione sono vietati.

  • Tag di rilascio immutabili

    Un tag come v2.4.0 si crea una volta e non si sposta né si cancella: lo stesso numero di versione indica sempre lo stesso codice.

  • Rifiuti spiegati nella tua lingua

    Chi tenta un'operazione vietata legge nel terminale quale regola l'ha fermato e come procedere, in italiano o in inglese secondo la sua preferenza.

  • Restrizioni per utente

    Limita il ruolo di un singolo utente su un repository, ad esempio un consulente in sola lettura.

Esempio della console CodeQuay: protezioni dei branch main, release/* e develop, senza force push e non eliminabili; policy di push con tag v* immutabili, limite di 50 MB per file e blocco dei segreti attivo.
git push --force origin v2.4.0
Esempio: lo spostamento del tag v2.4.0 viene rifiutato perché il tag è immutabile; il server suggerisce di pubblicare una nuova versione.
~/progetti/api $ git push --force origin v2.4.0remote:remote: CodeQuay: push RIFIUTATOremote:   - refs/tags/v2.4.0: il tag 'v2.4.0' è immutabileremote:     (pattern v*) e non può essere spostato; per unaremote:     correzione pubblica una nuova versioneremote: ! [remote rejected] v2.4.0 -> v2.4.0 (pre-receive hook declined)

Segreti e policy di push

Le credenziali si fermano prima di entrare nella storia

Una chiave committata per errore, una volta nella storia, va considerata compromessa. CodeQuay analizza i file nuovi di ogni push e respinge quelli che contengono credenziali riconoscibili.

Credenziali riconosciute

  • Chiavi private PEM (RSA, EC, DSA, OpenSSH, PGP)
  • Chiavi di accesso AWS
  • Chiavi API Google
  • Chiavi Stripe di produzione
  • Token GitHub, anche fine-grained
  • Token Slack
  • Token personali CodeQuay

Regole aziendali sul contenuto

  • Formato dei messaggi di commit con un'espressione regolare, ad esempio feat|fix|docs: ….
  • Dimensione massima dei file: i binari pesanti restano fuori dal repository.
  • Nel registro di audit finisce la regola violata, mai il valore del segreto.
git push origin feature/pagamenti
Esempio: un push che contiene una chiave di accesso AWS nel file config/prod.env viene rifiutato; il server indica file e riga, mostra solo l'inizio della chiave e invita a rimuoverla dalla storia e a revocarla.
~/progetti/api $ git push origin feature/pagamentiWriting objects: 100% (7/7), 2.31 KiB | 2.31 MiB/s, done.remote:remote: CodeQuay: push RIFIUTATOremote:   - possibile segreto in 'config/prod.env' riga 12:remote:     chiave di accesso AWS (AKIA7Q2M…(20 caratteri));remote:     rimuovilo dalla storia (non basta un commitremote:     successivo) e revoca la credenzialeremote: ! [remote rejected] feature/pagamenti -> feature/pagamenti   (pre-receive hook declined)

Accesso moderno

Identità solide, per le persone e per gli script

Gli utenti entrano come preferiscono, gli script usano credenziali limitate nel tempo e nei permessi.

Passkey
Accesso con impronta, volto o PIN del dispositivo, senza password da ricordare.
App di autenticazione
Verifica in due passaggi configurata con codice QR, con codici di recupero.
Accesso federato
Google, Apple, Microsoft 365 e provider aziendali compatibili OIDC.
Token con scadenza obbligatoria
Scope separati per API e git, scadenza massima di un anno, revoca immediata.
HTTPS e SSH
Clone e push con il protocollo che il team usa già, con le stesse regole.
Blocco dei tentativi
Limiti di frequenza e blocco temporaneo dopo ripetuti accessi falliti.
Verifica del dispositivo nuovo
Chi entra con la sola password da un dispositivo mai usato prima conferma l'accesso con un codice ricevuto per email.
Email di sicurezza
Avvisi per nuovi accessi da dispositivi non riconosciuti, passkey e 2FA modificate, password o email cambiate, nuovi token e chiavi SSH.
Esempio della console CodeQuay, impostazioni di sicurezza dell'account: due passkey registrate, la configurazione della verifica in due passaggi con il codice QR da inquadrare con l'app di autenticazione e gli account collegati Google e Microsoft 365.
Esempio della console CodeQuay: token personali con scope limitati e scadenza obbligatoria, con stato attivo, in scadenza o scaduto; accesso con verifica in due passaggi e provider aziendali.

Team e collaborazione

Le persone giuste, sul codice giusto

Spazi separati per il lavoro personale e per quello aziendale, inviti che scadono, accessi limitati al singolo repository quando serve.

  • Spazi personali e aziendali

    Ogni account ha uno spazio personale per prove ed esperimenti, visibile solo a te e a chi inviti. Il codice di lavoro sta nelle organizzazioni aziendali, sotto il controllo degli amministratori.

  • Inviti per email o username

    Owner e maintainer invitano un collega con un ruolo mai superiore al proprio. L'invito vale 7 giorni e si può reinviare o revocare.

  • Collaboratori sul singolo repository

    Un consulente può lavorare su un solo repository senza vedere gli altri repository del progetto.

  • Registrazione sotto controllo

    Gli amministratori scelgono se la registrazione è aperta, riservata ai domini aziendali o chiusa. Un invito basta sempre per entrare.

  • In inglese e in italiano

    Console, email e messaggi di git nella lingua scelta da ciascun utente.

  • Mirror verso GitHub per repository

    Chi è maintainer attiva dalle impostazioni del repository la replica automatica di ogni push su GitHub.

Prestazioni

Veloce anche quando la storia è lunga

Navigazione del codice, cronologia, blame e diff restano fluidi anche su repository molto grandi. Gli indici di git vengono mantenuti ogni notte, senza interventi da parte tua.

< 2 s

p95 di storia, diff e blame

100k

commit nel repository di prova usato per la misura

Esempio della console CodeQuay: il diff di un commit, con righe aggiunte e rimosse evidenziate.

CodeQuay Actions

CI/CD integrata, con la sintassi di GitHub Actions

I workflow in .github/workflows girano sui runner di CodeQuay, accanto al codice e sotto le stesse regole. La sintassi resta quella che il team conosce: di solito cambiano solo registry, segreti ed etichette dei runner.

Trigger
Push su branch e tag con filtri di percorso, esecuzione manuale con input, esecuzione programmata e workflow riutilizzabili.
Segreti e variabili cifrati
Per organizzazione, progetto, repository e ambiente. Mai restituiti dalle API, mascherati nei log.
Ambienti con approvazione
Un deploy in produzione parte solo dopo l'approvazione e solo dai branch o dai tag ammessi.
Artefatti e cache
upload-artifact e cache funzionano come su GitHub; gli artefatti si scaricano dalla console.
Action da un mirror interno
Le action pubbliche arrivano da un mirror su CodeQuay: i run non dipendono da github.com.
Container o host del runner
Job in container Docker oppure direttamente sull'host del runner, per deploy con ssh, helm o kubectl.

L'esecuzione si basa su act (nektos/act), open source. Nella console: log per step, riesecuzione dei job falliti, annullamento, approvazione dei deploy.

.github/workflows/rilascio.yml
Esempio di workflow: a ogni tag v* un job gira sul runner self-hosted, nell'ambiente production con approvazione, estrae il codice e lancia lo script di deploy con il nome del tag.
on:  push:    tags: ["v*"]jobs:  deploy:    runs-on: [self-hosted, linux]    environment: production    steps:      - uses: actions/checkout@v4      - run: ./deploy.sh ${{ github.ref_name }}

Migrazione

Da GitHub a CodeQuay, senza fermare la CI

L'import porta branch e tag e analizza tutta la storia alla ricerca di segreti. Il mirror replica poi ogni push su GitHub, dove la CI su GitHub Actions può continuare a girare. Il formato resta git standard: nessun vincolo per il futuro. Oppure i workflow passano a CodeQuay Actions, con la stessa sintassi.

Come funziona la migrazione
Esempio della console CodeQuay, mirror di un repository verso GitHub: sincronizzato, ultima sincronizzazione riuscita 40 secondi fa, con interruttore attivo e pulsante Sincronizza ora.

Vuoi vedere le protezioni all'opera sui tuoi repository?

Crea il tuo account e inizia gratis. Per un'istanza dedicata o un contratto su misura, scrivici: ti rispondiamo noi, in italiano.