> ## Documentation Index
> Fetch the complete documentation index at: https://ayakaleaf-pro.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Synchronizacja z GitHub

> Pozwól użytkownikom synchronizować projekty z repozytoriami GitHub lub GitHub Enterprise we wdrożeniu Kubernetes.

Synchronizacja z GitHub działa w usłudze **web** (moduł `github-sync`) każdego poda Ayakaleaf Pro. Wymaga [integracji z Git](https://ayakaleaf-pro.mintlify.site/pl/on-premises/configuration/kubernetes/integrations/git-integration.md). Utwórz aplikację OAuth i przeczytaj, do czego służy każde ustawienie, na stronie [Synchronizacja z GitHub](https://ayakaleaf-pro.mintlify.site/pl/on-premises/configuration/overleaf-toolkit/integrations/github-synchronisation.md); ta strona przenosi tę konfigurację do Kubernetes.

| | |
| - | - |
| Usługa | web (moduł `github-sync`), w każdym podzie Ayakaleaf Pro; odczytywana przy uruchomieniu web |
| Pod → GitHub | `https://api.github.com` (REST i GraphQL) lub API pod adresem `GITHUB_SYNC_URL`, za każdym razem, gdy użytkownik łączy konto, importuje, eksportuje lub synchronizuje |
| Przeglądarka → GitHub | `https://github.com/login/oauth/authorize` w celu połączenia konta, a następnie powrót do `${OVERLEAF_SITE_URL}/user/github-sync/oauth2/callback` |
| GitHub → Overleaf | brak: żadnego webhooka, instancja nie musi być osiągalna z GitHub |
| Przechowywane dane | tokeny dostępu GitHub użytkownika, zaszyfrowane, w MongoDB |
| Zadania okresowe | brak: synchronizacja odbywa się, gdy użytkownik kliknie |

### Konfiguracja

**1. ConfigMap**

```yaml title="30-config.yaml (additions)" theme={null}
  GITHUB_SYNC_ENABLED: "true"
  GITHUB_SYNC_CLIENT_ID: <client ID>
  # GitHub Enterprise: its web address
  # GITHUB_SYNC_URL: https://github.example.com
  # optional: send the module's requests to GitHub through an HTTP proxy
  # GITHUB_SYNC_PROXY_URL: http://proxy.example.com:3128
```

`GIT_BRIDGE_ENABLED: "true"` oraz StatefulSet git-bridge z [integracji z Git](https://ayakaleaf-pro.mintlify.site/pl/on-premises/configuration/kubernetes/integrations/git-integration.md) muszą być na miejscu: bez nich ustawienia konta i edytor ukrywają synchronizację z GitHub.

**2. Secret**

```bash theme={null}
kubectl -n overleaf patch secret overleaf-secrets --type merge -p '{"stringData":{
  "GITHUB_SYNC_CLIENT_SECRET":"<client secret>",
  "GITHUB_TOKEN_CIPHER_PASSWORD":"'"$(openssl rand -hex 32)"'"}}'
```

`GITHUB_TOKEN_CIPHER_PASSWORD` szyfruje tokeny dostępu GitHub użytkowników w MongoDB. Każda replika musi używać tej samej wartości, a późniejsza jej zmiana zmusza każdego użytkownika do ponownego połączenia GitHub.

**3. Prywatny CA (opcjonalnie)**

Jeśli Twój GitHub ma certyfikat wystawiony przez własny urząd certyfikacji (CA), dodaj ten CA do Secretu `overleaf-certs` zamontowanego w `/var/lib/overleaf/certs` (zobacz [Certyfikaty i inne pliki](https://ayakaleaf-pro.mintlify.site/pl/on-premises/configuration/kubernetes#certyfikaty-i-inne-pliki)) i ustaw `NODE_EXTRA_CA_CERTS: /var/lib/overleaf/certs/ca.pem` w ConfigMap.

**4. Zastosuj, uruchom ponownie i sprawdź**

```bash theme={null}
kubectl apply -f 30-config.yaml
kubectl -n overleaf rollout restart deployment/overleaf     # or statefulset/overleaf
for p in $(kubectl -n overleaf get pod -l app=overleaf -o name); do   # app=overleaf-ha for several replicas
  kubectl -n overleaf exec "$p" -- curl -sS -o /dev/null -w "$p %{http_code}\n" https://api.github.com
done
```

Dowolny kod statusu HTTP oznacza, że GitHub jest osiągalny z danego poda; `000` oznacza, że nie jest.

### Kilka replik

Nic dodatkowego poza wspólnym `GITHUB_TOKEN_CIPHER_PASSWORD`. Synchronizacja zakłada blokadę w Redis, współdzieloną z innymi synchronizacjami Git, więc dwie repliki nigdy nie synchronizują tego samego projektu jednocześnie.

### Przetestowano na Kubernetes

Na atrapie github.com oraz jego API REST i GraphQL (zaufanej przez `NODE_EXTRA_CA_CERTS` z `overleaf-certs`), na Kubernetes 1.37 z jedną repliką i włączoną integracją z Git, nasze testy end-to-end synchronizacji z GitHub przechodzą pomyślnie (31 przypadków): łączenie i odłączanie konta, unieważnione tokeny, eksport projektu do nowego prywatnego repozytorium lub repozytorium organizacji, import repozytorium (również przekraczającego limit przesyłania), pobieranie i wypychanie, scalanie, konflikty i ręczne scalanie, usunięte gałęzie i gałęzie po wymuszonym wypchnięciu, pliki binarne, zmiany nazw i usunięcia, utrata uprawnień do wypychania oraz to, co mogą robić właściciele, edytorzy i osoby z dostępem tylko do odczytu.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.