github-sync) di ogni pod di Ayakaleaf Pro. Richiede l’integrazione Git. Crea l’applicazione OAuth e leggi cosa fa ciascuna impostazione in Sincronizzazione con GitHub; questa pagina la riporta su Kubernetes.
Configurazione
1
ConfigMap
30-config.yaml (additions)
GIT_BRIDGE_ENABLED: "true" e lo StatefulSet di git-bridge descritto in Integrazione Git devono essere presenti: senza di essi le impostazioni dell’account e l’editor nascondono la sincronizzazione con GitHub.2
Secret
GITHUB_TOKEN_CIPHER_PASSWORD cifra i token di accesso GitHub degli utenti in MongoDB. Tutte le repliche devono usare lo stesso valore, e modificarlo in seguito obbliga ogni utente a collegare di nuovo GitHub.3
CA privata (facoltativo)
Se il tuo GitHub usa un certificato emesso dalla tua CA, aggiungi la CA al Secret
overleaf-certs montato in /var/lib/overleaf/certs (vedi Certificati e altri file) e imposta NODE_EXTRA_CA_CERTS: /var/lib/overleaf/certs/ca.pem nella ConfigMap.4
Applica, riavvia e verifica
000 significa che non lo è.Più repliche
Nulla di aggiuntivo oltre al valore condiviso diGITHUB_TOKEN_CIPHER_PASSWORD. Una sincronizzazione acquisisce un lock in Redis, condiviso con le altre sincronizzazioni Git, quindi due repliche non sincronizzano mai lo stesso progetto contemporaneamente.
Testato su Kubernetes
Contro un mock di github.com e delle sue API REST e GraphQL (considerato attendibile tramiteNODE_EXTRA_CA_CERTS da overleaf-certs), su Kubernetes 1.37 con una replica e l’integrazione Git attiva, i nostri test end-to-end per la sincronizzazione con GitHub vengono superati (31 casi): collegamento e scollegamento dell’account, token revocati, esportazione di un progetto in un nuovo repository privato o di un’organizzazione, importazione di un repository (anche oltre il limite di upload), pull e push, merge, conflitti e merge manuali, branch eliminati e sottoposti a force push, file binari, rinomine ed eliminazioni, perdita dell’accesso in push, e cosa possono fare proprietari, editor e lettori.
