github-sync module) of every Ayakaleaf Pro pod. It needs the Git integration. Create the OAuth application and read what each setting does in GitHub Synchronisation; this page puts it into Kubernetes.
Configuration
1
ConfigMap
30-config.yaml (additions)
GIT_BRIDGE_ENABLED: "true" and the git-bridge StatefulSet from Git integration must be in place: without them the account settings and the editor hide GitHub Synchronisation.2
Secret
GITHUB_TOKEN_CIPHER_PASSWORD encrypts the users’ GitHub access tokens in MongoDB. Every replica must use the same value, and changing it later makes every user link GitHub again.3
Private CA (optional)
If your GitHub has a certificate from your own CA, add the CA to the Secret
overleaf-certs mounted at /var/lib/overleaf/certs (see Certificates and other files) and set NODE_EXTRA_CA_CERTS: /var/lib/overleaf/certs/ca.pem in the ConfigMap.4
Apply, restart and check
000 means it is not.Several replicas
Nothing extra beyond the sharedGITHUB_TOKEN_CIPHER_PASSWORD. A sync takes a lock in Redis, shared with the other Git synchronisations, so two replicas never sync the same project at once.
Tested on Kubernetes
Against a mock of github.com and its REST and GraphQL APIs (trusted throughNODE_EXTRA_CA_CERTS from overleaf-certs), on Kubernetes 1.37 with one replica and the Git integration on, our end-to-end tests for GitHub Synchronisation pass (31 cases): linking and unlinking the account, revoked tokens, exporting a project into a new private or organization repository, importing a repository (also over the upload limit), pulling and pushing, merges, conflicts and manual merges, deleted and force-pushed branches, binary files, renames and deletions, losing push access, and what owners, editors and viewers may do.
