Taille: 5277
Commentaire: gitlab for dummies
|
Taille: 4708
Commentaire:
|
Texte supprimé. | Texte ajouté. |
Ligne 2: | Ligne 2: |
Ligne 9: | Ligne 8: |
== Lien == Le dépôt Gitlab du Crans se trouve à l'adresse https://gitlab.crans.org. |
|
Ligne 14: | Ligne 9: |
Ligne 19: | Ligne 13: |
== Le Gitlab du Crans == Les adhérents du Crans ont la possibilité d'y héberger '''jusqu'à 75 projets''' qui peuvent être ''publics'', ''privés'', ou ouverts seulement aux utilisateurs connectés (''internes''). Il est possible de demander une augmentation de cette limite en envoyant un mail à <<MailTo(nounou AT crans DOT org)>> === Lien === Le dépôt Gitlab du Crans se trouve à l'adresse https://gitlab.crans.org. === Tuto === ==== 1ère utilisation ==== * Vous pouvez vous connecter avec votre login/mot de passe Cr@ns. * Si vous n'avez pas de clé SSH, générez-en une. Cf WikiInformatique/ConnexionSsh#Les_clefs_SSH * Allez dans {{{Profile settings}}} puis {{{SSH Keys}}} * {{{Add SSH Key}}} * Donnez-lui un nom sympathique dans {{{Title}}} (comme, par exemple, le nom de la machine sur laquelle elle est) et collez le contenu du fichier {{{~/.ssh/id_rsa.pub}}} dans {{{Key}}}. ==== Cloner un dépôt ==== Quand vous êtes sur la page gitlab d'un dépôt, pour le cloner, il faut récupérer l'uri. Vous pouvez choisir SSH ou HTTPS. En SSH, l'url ressemble à {{{git@gitlab.crans.org:namespace/projet.git}}}, en HTTPS {{{https://gitlab.crans.org/namespace/projet.git}}} |
|
Ligne 20: | Ligne 39: |
Pour permettre l'authentification via le CAS du crans : vérifier que {{{gem 'omniauth-cas3'}}} est bien dans {{{/gitlab/gitlab/Gemfile}}}, sinon l'y ajouter et lancer : | |
Ligne 21: | Ligne 41: |
Pour permettre l'authentification via le CAS du crans : Ajouter {{{gem 'omniauth-cas'}}} dans {{{/gitlab/gitlab/Gemfile}}} lancer : |
|
Ligne 29: | Ligne 46: |
Éditer dans {{{/gitlab/gitlab/config/gitlab.yml}}} la section sur omniauth comme ceci : | |
Ligne 30: | Ligne 48: |
Pour le crans, remplacer {{{vendor/bundle/ruby/1.9.1/gems/vendor/bundle/ruby/1.9.1/gems/omniauth-cas*}}} par https://gitlab.crans.org/nounous/omniauth-cas qui a été tweaké pour le crans. Éditez dans {{{/gitlab/gitlab/config/gitlab.yml}}} la section sur omniauth comme ceci : |
|
Ligne 43: | Ligne 57: |
allow_single_sign_on: true | allow_single_sign_on: false |
Ligne 46: | Ligne 60: |
# Locks down those users until they have been cleared by the admin (default: true). block_auto_created_users: true # Look up new users in LDAP servers. If a match is found (same uid), automatically # link the omniauth identity with the LDAP account. (default: false) auto_link_ldap_user: true |
|
Ligne 50: | Ligne 70: |
# see https://github.com/gitlabhq/gitlab-public-wiki/wiki/Working-custom-omniauth-provider-configur$ | # see https://github.com/gitlabhq/gitlab-public-wiki/wiki/Working-custom-omniauth-provider-configura$ |
Ligne 62: | Ligne 82: |
- { name: 'cas', "args":{ 'host': 'cas.crans.org', 'port': 443, 'ssl': true, 'service_validate_url': '/cas/serviceValidate', 'login_url': '/cas/login', 'logout_url': '/cas/logout', 'disable_ssl_verification': false, 'email_key': 'login_mail' } } |
- { name: 'cas3', label: 'cas', args: { url: 'https://cas.crans.org', login_url: '/login', service_validate_url: '/p3/serviceValidate', logout_url: '/logout'} } |
Ligne 73: | Ligne 90: |
Enfin, redémarrer gitlab : | |
Ligne 74: | Ligne 92: |
Enfin, il y a un petit hack a faire dans le code de gitlab pour que l'auth CAS fonctionne de façon transparente avec l'auth ldap : il faut éditer le fichier {{{/gitlab/gitlab/ib/gitlab/oauth/user.rb}}} {{{ --- a/lib/gitlab/oauth/user.rb +++ b/lib/gitlab/oauth/user.rb @@ -42,7 +42,7 @@ module Gitlab private def find_by_uid_and_provider - model.where(provider: provider, extern_uid: uid).last + model.where(extern_uid: uid).last end def uid @@ -62,7 +62,7 @@ module Gitlab end def provider - auth.provider + "ldap" end def log }}} Sinon un user par mode d'authentification est créé. Enfin, en redémarre gitlab : |
|
Ligne 106: | Ligne 96: |
== Known Bug == Lors du push d'une nouvelle branche, celle-ci n'est pas correctement chargé par gitlab et n'apparait pas dans le menu déroulant, mais uniquement dans la page branches. |
|
Ligne 107: | Ligne 99: |
L'issue est registered ici : https://github.com/gitlabhq/gitlabhq/issues/4864 | |
Ligne 108: | Ligne 101: |
Un second petit hack : je ne sais pas pourquoi, mais si on essaye de s'auth avec le CAS alors qu'on est déjà auth sur gitlab le provider ldap est remplacé par le provider CAS ce qui empêche par la suite de s'auth lorsque l'on push du coup : {{{ samir@geet $ sudo -u postgres psql gitlabhq_production |
Pour fixe sur geet : |
Ligne 112: | Ligne 103: |
CREATE OR REPLACE FUNCTION set_ldap_provider() RETURNS TRIGGER AS $$ BEGIN NEW.provider := CASE WHEN NEW.provider = 'cas' THEN 'ldap' ELSE NEW.provider END; |
{{{ cd /gitlab/gitlab && sudo -u git -H bundle exec rake cache:clear RAILS_ENV=production }}} |
Ligne 119: | Ligne 105: |
RETURN NEW; END $$ LANGUAGE plpgsql; CREATE TRIGGER set_ldap_provider_trigger BEFORE INSERT OR UPDATE ON users FOR EACH ROW EXECUTE PROCEDURE set_ldap_provider(); }}} vala vala == Tuto == === 1ère utilisation === * Vous pouvez vous connecter avec votre login/mot de passe Cr@ns. * Si vous n'avez pas de clé SSH, générez-en une. Cf WikiInformatique/ConnexionSsh#Les_clefs_SSH * Allez dans {{{Profile settings}}} puis {{{SSH Keys}}} * {{{Add SSH Key}}} * Donnez-lui un nom sympathique dans {{{Title}}} (comme, par exemple, le nom de la machine sur laquelle elle est) et collez le contenu du fichier {{{~/.ssh/id_rsa.pub}}} dans {{{Key}}}. === Cloner un dépôt === Quand vous êtes sur la page gitlab d'un dépôt, pour le cloner, il faut récupérer l'uri. Vous pouvez choisir SSH ou HTTPS. En SSH, l'url ressemble à {{{git@gitlab.crans.org:namespace/projet.git}}}, en HTTPS {{{https://gitlab.crans.org/namespace/projet.git}}} |
GitLab
GitLab est une interface Web pour les dépôts Git proposant de multiples fonctionnalités pratiques pour visualiser un dépôt, et donner des droits de commit/push à des utilisateurs n'existant pas sur le serveur.
Il est initialement basé sur gitolite, mais est devenu totalement indépendant récemment.
Sommaire
Installation
Pour installer Gitlab, on a suivi cette page : https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/install/installation.md .
Depuis, gitlab propose un paquet tout fait pour l'installer sur debian (7.5) : https://about.gitlab.com/downloads/ .
Le Gitlab du Crans
Les adhérents du Crans ont la possibilité d'y héberger jusqu'à 75 projets qui peuvent être publics, privés, ou ouverts seulement aux utilisateurs connectés (internes).
Il est possible de demander une augmentation de cette limite en envoyant un mail à nounou@crans.org
Lien
Le dépôt Gitlab du Crans se trouve à l'adresse https://gitlab.crans.org.
Tuto
1ère utilisation
- Vous pouvez vous connecter avec votre login/mot de passe Cr@ns.
Si vous n'avez pas de clé SSH, générez-en une. Cf WikiInformatique/ConnexionSsh#Les_clefs_SSH
Allez dans Profile settings puis SSH Keys
Add SSH Key
Donnez-lui un nom sympathique dans Title (comme, par exemple, le nom de la machine sur laquelle elle est) et collez le contenu du fichier ~/.ssh/id_rsa.pub dans Key.
Cloner un dépôt
Quand vous êtes sur la page gitlab d'un dépôt, pour le cloner, il faut récupérer l'uri. Vous pouvez choisir SSH ou HTTPS.
En SSH, l'url ressemble à git@gitlab.crans.org:namespace/projet.git, en HTTPS https://gitlab.crans.org/namespace/projet.git
CAS
Pour permettre l'authentification via le CAS du crans : vérifier que gem 'omniauth-cas3' est bien dans /gitlab/gitlab/Gemfile, sinon l'y ajouter et lancer :
git@geet:~/gitlab$ bundle install --without development test mysql --no-deployment --path vendor/bundle
dans /gitlab/gitlab/
Éditer dans /gitlab/gitlab/config/gitlab.yml la section sur omniauth comme ceci :
## OmniAuth settings omniauth: # Allow login via Twitter, Google, etc. using OmniAuth providers enabled: true # CAUTION! # This allows users to login without having a user account first (default: false). # User accounts will be created automatically when authentication was successful. allow_single_sign_on: false # Locks down those users until they have been cleared by the admin (default: true). block_auto_created_users: false # Locks down those users until they have been cleared by the admin (default: true). block_auto_created_users: true # Look up new users in LDAP servers. If a match is found (same uid), automatically # link the omniauth identity with the LDAP account. (default: false) auto_link_ldap_user: true ## Auth providers # Uncomment the following lines and fill in the data of the auth provider you want to use # If your favorite auth provider is not listed you can use others: # see https://github.com/gitlabhq/gitlab-public-wiki/wiki/Working-custom-omniauth-provider-configura$ # The 'app_id' and 'app_secret' parameters are always passed as the first two # arguments, followed by optional 'args' which can be either a hash or an array. providers: # - { name: 'google_oauth2', app_id: 'YOUR APP ID', # app_secret: 'YOUR APP SECRET', # args: { access_type: 'offline', approval_prompt: '' } } # - { name: 'twitter', app_id: 'YOUR APP ID', # app_secret: 'YOUR APP SECRET'} # - { name: 'github', app_id: '', # app_secret: '', # args: { scope: 'user:email' } } - { name: 'cas3', label: 'cas', args: { url: 'https://cas.crans.org', login_url: '/login', service_validate_url: '/p3/serviceValidate', logout_url: '/logout'} }
Enfin, redémarrer gitlab :
samir@geet $ sudo service gitlab restart
Known Bug
Lors du push d'une nouvelle branche, celle-ci n'est pas correctement chargé par gitlab et n'apparait pas dans le menu déroulant, mais uniquement dans la page branches.
L'issue est registered ici : https://github.com/gitlabhq/gitlabhq/issues/4864
Pour fixe sur geet :
cd /gitlab/gitlab && sudo -u git -H bundle exec rake cache:clear RAILS_ENV=production