> ## 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.

# Synchronizace s GitHubem

> Umožněte uživatelům synchronizovat jejich projekty s repozitáři GitHub nebo GitHub Enterprise v nasazení na Kubernetes.

Synchronizace s GitHubem běží ve službě **web** (modul `github-sync`) každého podu Ayakaleaf Pro. Vyžaduje [integraci s Gitem](https://ayakaleaf-pro.mintlify.site/cs/on-premises/configuration/kubernetes/integrations/git-integration.md). Vytvořte OAuth aplikaci a přečtěte si, co jednotlivá nastavení dělají, v části [Synchronizace s GitHubem](https://ayakaleaf-pro.mintlify.site/cs/on-premises/configuration/overleaf-toolkit/integrations/github-synchronisation.md); tato stránka to přenáší do Kubernetes.

| | |
| - | - |
| Služba | web (modul `github-sync`) v každém podu Ayakaleaf Pro; načítá se při startu webu |
| Pod → GitHub | `https://api.github.com` (REST a GraphQL) nebo API z `GITHUB_SYNC_URL`, kdykoli uživatel propojuje, importuje, exportuje nebo synchronizuje |
| Prohlížeč → GitHub | `https://github.com/login/oauth/authorize` pro propojení účtu, poté zpět na `${OVERLEAF_SITE_URL}/user/github-sync/oauth2/callback` |
| GitHub → Overleaf | žádné: žádný webhook, instance nemusí být z GitHubu dostupná |
| Uložená data | přístupové tokeny uživatele ke GitHubu, šifrované, v MongoDB |
| Periodické úlohy | žádné: synchronizace proběhne, když uživatel klikne |

### Konfigurace

**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"` a StatefulSet git-bridge z [integrace s Gitem](https://ayakaleaf-pro.mintlify.site/cs/on-premises/configuration/kubernetes/integrations/git-integration.md) musí být nasazeny: bez nich nastavení účtu i editor synchronizaci s GitHubem skryjí.

**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` šifruje přístupové tokeny uživatelů ke GitHubu v MongoDB. Všechny repliky musí používat stejnou hodnotu a její pozdější změna donutí všechny uživatele propojit GitHub znovu.

**3. Soukromá CA (volitelné)**

Pokud má váš GitHub certifikát od vaší vlastní CA, přidejte CA do Secretu `overleaf-certs` připojeného do `/var/lib/overleaf/certs` (viz [Certifikáty a další soubory](https://ayakaleaf-pro.mintlify.site/cs/on-premises/configuration/kubernetes#certifikáty-a-další-soubory)) a v ConfigMapu nastavte `NODE_EXTRA_CA_CERTS: /var/lib/overleaf/certs/ca.pem`.

**4. Použití, restart a kontrola**

```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
```

Jakýkoli stavový kód HTTP znamená, že GitHub je z daného podu dostupný; `000` znamená, že není.

### Více replik

Kromě sdíleného `GITHUB_TOKEN_CIPHER_PASSWORD` nic dalšího. Synchronizace si v Redisu vezme zámek sdílený s ostatními synchronizacemi Gitu, takže dvě repliky nikdy nesynchronizují stejný projekt současně.

### Testováno na Kubernetes

Proti napodobenině github.com a jeho REST a GraphQL API (důvěryhodné díky `NODE_EXTRA_CA_CERTS` z `overleaf-certs`), na Kubernetes 1.37 s jednou replikou a zapnutou integrací s Gitem, procházejí naše end-to-end testy synchronizace s GitHubem (31 případů): propojení a zrušení propojení účtu, odvolané tokeny, export projektu do nového soukromého nebo organizačního repozitáře, import repozitáře (i nad limitem pro nahrávání), pull a push, merge, konflikty a ruční merge, smazané větve a větve po force pushi, binární soubory, přejmenování a mazání, ztráta oprávnění k push a co mohou dělat vlastníci, editoři a čtenáři.


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