doc-locale/fr-fr/integration/github.md
{{< details >}}
{{< /details >}}
Vous pouvez intégrer votre instance GitLab à GitHub.com et GitHub Enterprise. Vous pouvez importer des projets depuis GitHub ou vous connecter à GitLab avec vos identifiants GitHub.
Pour activer le fournisseur GitHub OmniAuth, vous avez besoin d'un identifiant client OAuth 2.0 et d'un secret client provenant de GitHub :
https://gitlab.example.com.https://gitlab.example.com/users/auth. Indiquez le numéro de port si votre instance GitLab utilise un port non standard.Pour certaines intégrations, la redirection secrète OAuth 2 peut compromettre les comptes GitLab. Pour atténuer cette vulnérabilité, ajoutez /users/auth à l'URL de rappel d'autorisation.
Cependant, GitHub ne valide pas la partie sous-domaine du redirect_uri. Par conséquent, une prise de contrôle de sous-domaine, une attaque XSS ou une redirection ouverte sur n'importe quel sous-domaine de votre site web pourrait permettre l'attaque par redirection secrète.
Configurez les paramètres communs pour ajouter github en tant que fournisseur d'authentification unique. Cela active le provisionnement de compte Just-In-Time pour les utilisateurs qui ne disposent pas d'un compte GitLab existant.
Modifiez le fichier de configuration GitLab en utilisant les informations suivantes :
| Paramètre GitHub | Valeur dans le fichier de configuration GitLab | Description |
|---|---|---|
| ID client | YOUR_APP_ID | ID client OAuth 2.0 |
| Secret client | YOUR_APP_SECRET | Secret client OAuth 2.0 |
| URL | https://github.example.com/ | URL de déploiement GitHub |
Pour les installations de paquets Linux :
Ouvrez le fichier /etc/gitlab/gitlab.rb.
Pour GitHub.com, mettez à jour la section suivante :
gitlab_rails['omniauth_providers'] = [
{
name: "github",
# label: "Provider name", # optional label for login button, defaults to "GitHub"
app_id: "YOUR_APP_ID",
app_secret: "YOUR_APP_SECRET",
args: { scope: "user:email" }
}
]
Pour GitHub Enterprise, mettez à jour la section suivante et remplacez https://github.example.com/ par votre URL GitHub :
gitlab_rails['omniauth_providers'] = [
{
name: "github",
# label: "Provider name", # optional label for login button, defaults to "GitHub"
app_id: "YOUR_APP_ID",
app_secret: "YOUR_APP_SECRET",
url: "https://github.example.com/",
args: { scope: "user:email" }
}
]
Enregistrez le fichier et reconfigurez GitLab.
Pour les installations compilées manuellement :
Ouvrez le fichier config/gitlab.yml.
Pour GitHub.com, mettez à jour la section suivante :
- { name: 'github',
# label: 'Provider name', # optional label for login button, defaults to "GitHub"
app_id: 'YOUR_APP_ID',
app_secret: 'YOUR_APP_SECRET',
args: { scope: 'user:email' } }
Pour GitHub Enterprise, mettez à jour la section suivante et remplacez https://github.example.com/ par votre URL GitHub :
- { name: 'github',
# label: 'Provider name', # optional label for login button, defaults to "GitHub"
app_id: 'YOUR_APP_ID',
app_secret: 'YOUR_APP_SECRET',
url: "https://github.example.com/",
args: { scope: 'user:email' } }
Enregistrez le fichier et redémarrez GitLab.
Actualisez la page de connexion de GitLab. Une icône GitHub devrait s'afficher sous le formulaire de connexion.
Sélectionnez l'icône. Connectez-vous à GitHub et autorisez l'application GitLab.
Lorsque vous importez des projets depuis GitHub Enterprise à l'aide d'un certificat auto-signé, les imports échouent.
Pour résoudre ce problème, vous devez désactiver la vérification SSL :
Définissez verify_ssl sur false dans le fichier de configuration.
Pour les installations de paquets Linux :
gitlab_rails['omniauth_providers'] = [
{
name: "github",
# label: "Provider name", # optional label for login button, defaults to "GitHub"
app_id: "YOUR_APP_ID",
app_secret: "YOUR_APP_SECRET",
url: "https://github.example.com/",
verify_ssl: false,
args: { scope: "user:email" }
}
]
Pour les installations compilées manuellement :
- { name: 'github',
# label: 'Provider name', # optional label for login button, defaults to "GitHub"
app_id: 'YOUR_APP_ID',
app_secret: 'YOUR_APP_SECRET',
url: "https://github.example.com/",
verify_ssl: false,
args: { scope: 'user:email' } }
Remplacez l'option Git globale sslVerify par false sur le serveur GitLab.
Pour les installations du package Linux exécutant GitLab 15.3 et versions ultérieures :
gitaly['gitconfig'] = [
{key: "http.sslVerify", value: "false"},
]
Pour les installations du package Linux exécutant GitLab 15.2 et versions antérieures (méthode héritée) :
omnibus_gitconfig['system'] = { "http" => ["sslVerify = false"] }
Pour les installations compilées manuellement exécutant GitLab 15.3 et versions ultérieures, modifiez la configuration de Gitaly (gitaly.toml) :
[[git.config]]
key = "http.sslVerify"
value = "false"
Pour les installations compilées manuellement exécutant GitLab 15.2 et versions antérieures (méthode héritée) :
git config --global http.sslVerify false
Reconfigurez GitLab si vous avez installé GitLab à l'aide du package Linux, ou redémarrez GitLab si vous avez compilé votre installation manuellement.
Cette erreur peut survenir en raison d'un problème de connectivité réseau entre votre instance GitLab et GitHub Enterprise.
Pour vérifier l'existence d'un problème de connectivité :
Accédez au production.log sur votre serveur GitLab et recherchez l'erreur suivante :
Faraday::ConnectionFailed (execution expired)
Démarrez la console Rails et exécutez les commandes suivantes. Remplacez <github_url> par l'URL de votre instance GitHub Enterprise :
uri = URI.parse("https://<github_url>") # replace `GitHub-URL` with the real one here
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.verify_mode = 1
response = http.request(Net::HTTP::Get.new(uri.request_uri))
Si une erreur execution expired similaire est renvoyée, cela confirme que l'erreur est due à un problème de connectivité. Assurez-vous que le serveur GitLab peut accéder à votre instance GitHub Enterprise.
Lorsque vous vous connectez à GitLab, vous obtenez l'erreur suivante :
Signing in using your GitHub account without a pre-existing
GitLab account is not allowed. Create a GitLab account first,
and then connect it to your GitHub account
Pour résoudre ce problème, vous devez activer la connexion via GitHub dans GitLab :