4471
Commentaire:
|
← Version 21 à la date du 2020-12-28 14:58:41 ⇥
4048
|
Texte supprimé. | Texte ajouté. |
Ligne 5: | Ligne 5: |
Il est initialement basé sur gitolite, mais est devenu totalement indépendant récemment. | Il est initialement basé sur gitolite, mais est devenu totalement indépendant. |
Ligne 7: | Ligne 7: |
= Lien = | <<TableOfContents>> |
Ligne 9: | Ligne 9: |
Le dépôt Gitlab du Crans se trouve à l'adresse https://gitlab.crans.org. | == Installation == |
Ligne 11: | Ligne 11: |
= Installation = | Pour installer Gitlab, on a suivi cette page : [[https://about.gitlab.com/install/#debian]]. C'est un paquet « Omnibus » qui contient l'ensemble de l'environnement Gitlab. Il permet de grandement simplifier les mises à jours. Le gitlab n'utilise donc pas thot pour sa base de donnée mais l'installation locale de pgsql fourni avec le paquet omnibus. |
Ligne 13: | Ligne 15: |
Pour installer Gitlab, on a suivi cette page : https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/install/installation.md . | /!\ Le serveur web nginx de l'omnibus n'est pas utilisé, on utilise le serveur nginx de debian pour pouvoir gérer les certificats de gitlab.adm.crans.org et gitlab.crans.org séparément. |
Ligne 15: | Ligne 17: |
Depuis, gitlab propose un paquet tout fait pour l'installer sur debian (7.5) : https://about.gitlab.com/downloads/ . | Pour l'intégration avec le CAS du Crans, voir [[https://docs.gitlab.com/ce/integration/cas.html]]. |
Ligne 17: | Ligne 19: |
== CAS == | Les dépôts git se trouvent dans {{{/var/opt/gitlab/git-data/repositories}}} |
Ligne 19: | Ligne 21: |
Pour permettre l'authentification via le CAS du crans : Ajouter {{{gem 'omniauth-cas'}}} dans {{{/gitlab/gitlab/Gemfile}}} lancer : |
== Documentation == Pour la maintenance, les mise à jour et autre voir https://docs.gitlab.com/omnibus/README.html == 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)>> === Gitlab CI === Pour faire de l'intégration en continu, le crans dispose d'un ''gitlab runner'' installé sur [[CransTechnique/LesServeurs/ServeurVulcain|Vulcain]]. Pour l'installer: * On suit la doc là: [[https://docs.gitlab.com/runner/install/linux-repository.html]] * L'installation du paquet s'arrete à la création de l'utilisateur (pas d'acces sur le NFS) du coup on finit à la main : |
Ligne 23: | Ligne 38: |
git@geet:~/gitlab$ bundle install --without development test mysql --no-deployment --path vendor/bundle | sudo useradd -m -d /data/gitlab-runner gitlab-runner sudo apt -f install gitlab-runner |
Ligne 25: | Ligne 41: |
dans {{{/gitlab/gitlab/}}} | * On installe docker : [[https://docs.docker.com/install/linux/docker-ce/debian/#install-docker-ce]] * On configure le gitlab et le gitlab-runner pour qu'ils communiquent entre eux [[https://docs.gitlab.com/runner/register/index.html]] ,où l'on choisit {{{docker}}} comme "executor". |
Ligne 27: | Ligne 44: |
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 : {{{ ## 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: true # Locks down those users until they have been cleared by the admin (default: true). block_auto_created_users: false ## 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-configur$ # 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: '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' } } }}} |
Pour utiliser ce service il faut ajouter au dépot concerné le fichier de configuration {{{.gitlab-ci.yml}}} en spécifiant notamment l'image docker à utiliser. |
Ligne 74: | Ligne 48: |
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éé. |
=== Lien === Le GitLab du Crans se trouve à l'adresse https://gitlab.crans.org. |
Ligne 99: | Ligne 51: |
Enfin, en redémarre gitlab : {{{ samir@geet $ sudo service gitlab restart }}} |
=== Tutoriel === |
Ligne 104: | Ligne 53: |
==== 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}}}. |
|
Ligne 105: | Ligne 60: |
==== 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. |
|
Ligne 106: | Ligne 63: |
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 |
En SSH, l'url ressemble à {{{git@gitlab.crans.org:namespace/projet.git}}}, en HTTPS {{{https://gitlab.crans.org/namespace/projet.git}}} |
Ligne 110: | Ligne 65: |
CREATE OR REPLACE FUNCTION set_ldap_provider() RETURNS TRIGGER AS $$ BEGIN NEW.provider := CASE WHEN NEW.provider = 'cas' THEN 'ldap' ELSE NEW.provider END; |
==== Annoncer les commits sur IRC ==== |
Ligne 117: | Ligne 67: |
RETURN NEW; END $$ LANGUAGE plpgsql; |
Le Cr@ns met à disposition un bot irc qui peut annoncer les commits d'un dépôt sur un salon irc. Le bot s'appelle !GitlabBot sur irc. Pour l'utiliser, il suffit de le configurer sur le dépôt. Dans "Settings/Integrations" il faut paramétrer le "Project services" qui s'appelle "Irker (IRC gateway)" avec les paramètres suivants : * Default IRC URI : l'adresse du serveur irc (pour l'irc Cr@ns: ircs://irc.crans.org:6697/) * Recipients : le salon irc ou les annonces doivent être faites. Et le reste des paramètres par défaut. |
Ligne 120: | Ligne 73: |
CREATE TRIGGER set_ldap_provider_trigger BEFORE INSERT OR UPDATE ON users FOR EACH ROW EXECUTE PROCEDURE set_ldap_provider(); |
== Bogues connus == |
Ligne 125: | Ligne 75: |
}}} vala vala |
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.
Sommaire
Installation
Pour installer Gitlab, on a suivi cette page : https://about.gitlab.com/install/#debian. C'est un paquet « Omnibus » qui contient l'ensemble de l'environnement Gitlab. Il permet de grandement simplifier les mises à jours. Le gitlab n'utilise donc pas thot pour sa base de donnée mais l'installation locale de pgsql fourni avec le paquet omnibus.
Le serveur web nginx de l'omnibus n'est pas utilisé, on utilise le serveur nginx de debian pour pouvoir gérer les certificats de gitlab.adm.crans.org et gitlab.crans.org séparément.
Pour l'intégration avec le CAS du Crans, voir https://docs.gitlab.com/ce/integration/cas.html.
Les dépôts git se trouvent dans /var/opt/gitlab/git-data/repositories
Documentation
Pour la maintenance, les mise à jour et autre voir https://docs.gitlab.com/omnibus/README.html
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
Gitlab CI
Pour faire de l'intégration en continu, le crans dispose d'un gitlab runner installé sur Vulcain.
- Pour l'installer:
On suit la doc là: https://docs.gitlab.com/runner/install/linux-repository.html
- L'installation du paquet s'arrete à la création de l'utilisateur (pas d'acces sur le NFS) du coup on finit à la main :
sudo useradd -m -d /data/gitlab-runner gitlab-runner sudo apt -f install gitlab-runner
On installe docker : https://docs.docker.com/install/linux/docker-ce/debian/#install-docker-ce
On configure le gitlab et le gitlab-runner pour qu'ils communiquent entre eux https://docs.gitlab.com/runner/register/index.html ,où l'on choisit docker comme "executor".
Pour utiliser ce service il faut ajouter au dépot concerné le fichier de configuration .gitlab-ci.yml en spécifiant notamment l'image docker à utiliser.
Lien
Le GitLab du Crans se trouve à l'adresse https://gitlab.crans.org.
Tutoriel
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
Annoncer les commits sur IRC
Le Cr@ns met à disposition un bot irc qui peut annoncer les commits d'un dépôt sur un salon irc. Le bot s'appelle GitlabBot sur irc. Pour l'utiliser, il suffit de le configurer sur le dépôt. Dans "Settings/Integrations" il faut paramétrer le "Project services" qui s'appelle "Irker (IRC gateway)" avec les paramètres suivants :
Default IRC URI : l'adresse du serveur irc (pour l'irc Cr@ns: ircs://irc.crans.org:6697/)
- Recipients : le salon irc ou les annonces doivent être faites.
Et le reste des paramètres par défaut.