# GitHub, GitLab of Bitbucket koppelen voor deployments

> Koppel GitHub, GitLab (ook self-hosted) of Bitbucket aan Vimonto Deploy om repo's te kiezen, read-only deploy-sleutels te zetten en bij elke push te deployen.

Git-koppelingen verbinden je Git-accounts met je organisatie, zodat sites vanuit je repository's kunnen deployen. Vimonto Deploy ondersteunt **GitHub**, **GitLab** (gitlab.com), **GitLab (self-hosted)** en **Bitbucket**. Met een koppeling kies je een repository en branch uit een lijst als je [een site aanmaakt](https://ops.vimonto.com/docs/nl/sites/create-a-site), en Vimonto Deploy richt de repository voor je in: een read-only deploy-sleutel zodat de server hem kan clonen, en een webhook voor pushes zodat elke push een [deployment](https://ops.vimonto.com/docs/nl/sites/deployments) kan starten.

Je koppelt GitHub, GitLab en Bitbucket met OAuth (één klik, inloggen bij de Git-host); een self-hosted GitLab met een personal access token. Je kunt meerdere accounts koppelen, ook van dezelfde dienst. Ze staan onder **Git** op **Instellingen** → [Integraties](https://ops.vimonto.com/docs/nl/connections/integrations).

![Het deel Git met de gekoppelde GitHub-, GitLab- en Bitbucket-accounts](https://ops.vimonto.com/docs-media/nl/source-control.webp?v=161e760d "Instellingen → Integraties → Git")

## Wie kan een Git-account koppelen?

Elk lid ziet de gekoppelde accounts. Voor koppelen, testen, hernoemen, opnieuw verbinden en ontkoppelen heb je de rol **Eigenaar** of **Beheerder** nodig. Is een account eenmaal gekoppeld, dan kan elk lid dat sites mag beheren het voor zijn sites gebruiken. Koppelen, hernoemen en ontkoppelen komen in het [auditlog](https://ops.vimonto.com/docs/nl/organization/audit-log), zonder de tokens.

## GitHub, GitLab of Bitbucket koppelen

1. Open **Instellingen** → **Integraties**.
2. Kies onder **Integratie toevoegen** voor **Verbinden** op de kaart **GitHub**, **GitLab** of **Bitbucket**.
3. Log in bij de Git-host en geef toegang.
4. Je komt terug op **Integraties** met de melding dat het account gekoppeld is. De koppeling krijgt de naam van de dienst en je gebruikersnaam daar, bijvoorbeeld `GitHub (octocat)`.

Koppel je hetzelfde account nog een keer, dan werkt Vimonto Deploy de bestaande koppeling bij in plaats van een dubbele toe te voegen.

> [!NOTE]
> Een Git-host toont **Binnenkort beschikbaar** totdat een platformbeheerder de OAuth-app heeft geregistreerd (één keer, voor het hele platform, onder **Beheer** → **Integraties**). Beheerders zien in plaats daarvan **Instellen** op de kaart.

### Om welke toegang vraagt Vimonto Deploy?

| Dienst | Gevraagde toegang | Waarom |
| --- | --- | --- |
| GitHub | `repo`, `admin:repo_hook`, `read:user`, `read:org` | Je repository's lezen (ook privé-repository's en die van je GitHub-organisaties), deploy-sleutels en webhooks voor pushes toevoegen |
| GitLab | `api` | Je projecten lezen, deploy-sleutels en webhooks voor pushes toevoegen |
| Bitbucket | Account: Read, Repositories: Admin, Webhooks: Read and write | Je repository's lezen, deploy-sleutels en webhooks voor pushes toevoegen |

Met OAuth krijgt Vimonto Deploy toegang tot alle repository's die het account kan zien. Wil je dat beperken? Gebruik dan een **Eigen Git-URL** met de eigen deploy-sleutel van de site, en voeg die sleutel zelf toe aan die ene repository.

## Een self-hosted GitLab koppelen

1. Open in je GitLab **Preferences** → **Access tokens** → **Add new token**.
2. Kies de scope `api` en een vervaldatum die past bij je beleid.
3. Kies in Vimonto Deploy **Verbinden** op de kaart **GitLab (self-hosted)** onder **Integratie toevoegen**.
4. Vul het **Adres van je GitLab** in (bijvoorbeeld `https://gitlab.company.com`) en de **Personal access token**.
5. Kies **Controleren en koppelen**.

Vimonto Deploy controleert de token meteen door GitLab te vragen van wie hij is. Het adres moet HTTPS gebruiken. Je GitLab moet bereikbaar zijn vanaf Vimonto Deploy (voor de API) en vanaf je servers (om te clonen).

> [!WARNING]
> Een personal access token werkt niet meer na zijn vervaldatum. Sites die al gekoppeld zijn, blijven deployen: de server clonet met de deploy-sleutel van de site en pushes komen binnen via de webhook. Maar Vimonto Deploy kan dan je projecten niet meer tonen en geen deploy-sleutels en webhooks meer toevoegen of verwijderen. Kies vóór of na de vervaldatum **Token bijwerken** in het menu (⋯) van de koppeling, plak een nieuwe token van hetzelfde GitLab-account en kies **Controleren en opslaan**. De koppeling en de sites die hem gebruiken blijven zoals ze zijn.

## Een repository kiezen voor een site

Kies bij het [aanmaken van een site](https://ops.vimonto.com/docs/nl/sites/create-a-site) het gekoppelde account onder **Broncode**. Maak de lijst eventueel kleiner met **Organisatie**, en kies dan de **Repository** en de branch. De lijst begint met de 100 repository's waarin het account het laatst actief was. Typ in het zoekveld om bij de Git-host te zoeken in alle repository's waar het account toegang toe heeft; wat gevonden wordt, komt erbij in de lijst. Je kunt ook elke repository gebruiken via een **Eigen Git-URL**. De repository van een site wijzig je later op de pagina **Deployments** van de site.

## Wat gebeurt er als een site een koppeling gebruikt?

Maak je een site aan met een repository uit een gekoppeld account, of wijzig je later de repository van een site? Dan voert Vimonto Deploy een taak uit die de repository koppelt:

1. **Deploy-sleutel.** Standaard krijgt elke site een eigen SSH-sleutelpaar (de optie **Eigen deploy-sleutel voor …** bij het aanmaken van een site). De publieke sleutel wordt bij de Git-host aan de repository toegevoegd als **read-only** deploy-sleutel, met de naam van het domein en de server van de site. De privésleutel komt op de server, zodat de server kan clonen en pullen, maar nooit pushen.
2. **Webhook voor pushes.** **Deployen bij elke push** (quick deploy) staat aan voor een repository uit een gekoppeld account. Vimonto Deploy voegt dus een webhook aan de repository toe die elke push naar de deploy-URL van de site stuurt. Pushes naar de branch van de site starten dan een deploy. Zet je quick deploy uit op de pagina **Deployments** van de site, dan wordt de webhook weer verwijderd. Weigert de Git-host de webhook, dan gaat quick deploy uit en staat in de taak waarom; de site deployt nog steeds als je zelf een deploy start.
3. **Eerste deploy.** Bij een nieuwe site start de eerste deploy zodra de repository gekoppeld is.
4. **Opruimen.** Zet je een site over naar een andere repository of koppeling, of verwijder je de site? Dan worden de oude deploy-sleutel en webhook bij de Git-host verwijderd. Lukt dat niet, bijvoorbeeld omdat de toegang van de oude koppeling verlopen is, dan staat dat in de taak en verwijder je ze zelf bij de Git-host. Bij een overstap krijgt de site dan een nieuwe deploy-sleutel, zodat de nieuwe repository de oude niet weigert.

Zonder eigen deploy-sleutel clonet een site met de eigen sleutel van de server. Die sleutel vind je onder **Publieke sleutel van de server** op het overzicht van de server; voeg hem zelf toe bij je Git-host.

> [!NOTE]
> Op GitHub kan een deploy-sleutel maar bij één repository worden gebruikt. Weigert GitHub de sleutel van de site omdat die nog bij een andere repository staat, dan geeft Vimonto Deploy de site een nieuwe deploy-sleutel en voegt die toe. Verwijder de oude sleutel zelf bij de andere repository.

## Tokens verversen

Sommige Git-hosts geven toegangstokens uit die na een paar uur verlopen (GitLab en Bitbucket altijd, GitHub afhankelijk van de app). Vimonto Deploy bewaart de refresh-token en haalt zelf een nieuwe toegangstoken op, vlak voordat een verzoek hem nodig heeft. Je hoeft daarvoor niet opnieuw te koppelen.

Mislukt het verversen, omdat de toegang bij de Git-host is ingetrokken of het account is verwijderd? Dan mislukken verzoeken met een melding zoals "De koppeling met GitHub is verlopen. Koppel opnieuw." Kies **Opnieuw verbinden** in het menu van de koppeling om opnieuw in te loggen; je sites blijven dezelfde koppeling gebruiken.

## Een koppeling testen, hernoemen en opnieuw verbinden

Elke koppeling toont **Werkt** als de laatste controle gelukt is, en anders **Opnieuw verbinden**. In het menu (⋯) naast een koppeling kun je:

- **Verbinding testen**: vraagt de Git-host bij welk account de token hoort en toont "Ingelogd als …".
- **Opnieuw verbinden**: logt opnieuw in met OAuth en vernieuwt de tokens (GitHub, GitLab en Bitbucket).
- **Token bijwerken**: vervangt de personal access token van een koppeling met een self-hosted GitLab (alleen GitLab (self-hosted)). De nieuwe token moet bij hetzelfde GitLab-account horen.
- **Naam wijzigen**: wijzigt de naam die Vimonto Deploy toont.
- **Ontkoppelen**: verwijdert de koppeling.

## Een Git-account ontkoppelen

Kies **Ontkoppelen** in het menu en bevestig. Ontkoppelen houdt geen enkele site tegen om te deployen. Wat stopt, is alles wat via het account loopt: je kunt er geen repository's meer uit kiezen, en Vimonto Deploy kan geen deploy-sleutels en webhooks meer toevoegen of verwijderen bij de repository's ervan. Sites die via dit account gekoppeld waren, houden hun repository-adres, deploy-sleutel en webhook, dus ze blijven clonen en pushes starten nog steeds deploys; op hun pagina **Deployments** tonen ze nu een **Eigen Git-URL**. Verwijder je zo'n site, verwijder dan zelf de deploy-sleutel en webhook bij de Git-host.

Vimonto Deploy trekt zijn toegang bij de Git-host niet in. Wil je dat wel? Verwijder dan ook de geautoriseerde OAuth-app (of de toegangstoken) bij GitHub, GitLab of Bitbucket.

## Veelgestelde vragen

### Heb ik een Git-koppeling nodig om te deployen?

Nee. Je kunt ook deployen vanaf een **Eigen Git-URL**: SSH (`git@…`) voor privé-repository's, met de deploy-sleutel van de site die je zelf aan de repository toevoegt, of HTTPS voor openbare repository's. Je start deploys dan zelf of vanuit CI met de deploy-URL van de site. Zie [deployments](https://ops.vimonto.com/docs/nl/sites/deployments).

### Kan Vimonto Deploy naar mijn repository pushen?

Nee. Deploy-sleutels worden read-only toegevoegd, dus een server kan clonen en pullen, maar niet pushen.

### Ziet Vimonto Deploy al mijn repository's?

Met OAuth kan Vimonto Deploy elke repository lezen die het gekoppelde account kan lezen. Het wijzigt alleen de repository's die je aan een site koppelt (een deploy-sleutel en, met quick deploy, een webhook). Wil je strakkere toegang? Koppel dan een apart Git-account dat alleen toegang heeft tot de repository's die je deployt, of gebruik een eigen Git-URL.

### Kan ik GitHub-organisaties gebruiken?

Ja. De lijst met repository's bevat repository's van je account en van de GitHub-organisaties waar je lid van bent, voor zover de organisatie de OAuth-app toestaat.

### Wat gebeurt er met gekoppelde repository's als ik een server overdraag?

De koppelingen blijven bij je organisatie. De sites op een [overgedragen server](https://ops.vimonto.com/docs/nl/servers/transfer-a-server) verliezen hun koppeling en quick deploy gaat uit; ze blijven deployen vanaf hun repository-adres met hun eigen deploy-sleutel. De nieuwe organisatie kan ze op de pagina **Deployments** van elke site aan een van haar eigen koppelingen koppelen.
