{{tag>dev git gitlab gestion projet todo}}
====== Gitlab ======
===== docker-compose =====
Ci dessous le docker-compose pour un test en local
networks:
# Nomme explicitement le réseau par défaut utilisé par les services définis dans ce fichier
default_vnet:
services:
gitlab:
image: 'gitlab/gitlab-ce:14.1.8-ce.0'
restart: always
hostname: 'gitlab.services.localhost'
networks:
default_vnet:
aliases:
- gitlab.services.localhost
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://gitlab.services.localhost'
gitlab_rails['gitlab_shell_ssh_port'] = 2222
ports:
- '127.0.0.1:8084:80'
- '127.0.0.1:4443:443'
- '127.0.0.1:2222:22'
volumes:
- '$GITLAB_HOME/config:/etc/gitlab'
- '$GITLAB_HOME/logs:/var/log/gitlab'
- '$GITLAB_HOME/data:/var/opt/gitlab'
La valeur de la variable ''external_url'' doit être suffixée avec le port exposé par le conteneur si le port est redéfini. Ne pas utiliser la valeur du port publiée de l’hôte.
Pour s'authentifier sur la WebUI récupérer le mot de passe root:
docker-compose exec gitlab grep 'Password:' /etc/gitlab/initial_root_password
Le fichier contenant le mot de passe root généré à l'installation est automatiquement effacé au bout de quelques heures. Si le mot de passe root est perdu, il est possible de ne redéfinir.
===== Redéfinir le mot de passe administrateur =====
# ouvrir une console Ruby on Rails
gitlab-rails console -e production
# retrouver l'utilisateur via l'ID
user = User.where(id: 1).first
# ou via l'email
# user = User.find_by(email: 'admin@example.com')
# vérifier que l'objet instancié est bien l'utilisateur souhaité
puts user.email, user.id
# Redéfinir le mot de passe
user.password = 'newpass123'
user.password_confirmation = 'newpass123'
# sauvegarder les modifications
user.save!
# Quitter la console interactive
exit
source:
* https://docs.gitlab.com/ee/security/reset_user_password.html
Pour pousser un projet git existant
git push --set-upstream ssh://git@gitlab.services.localhost:2222/root/$(git rev-parse --show-toplevel | xargs basename).git $(git rev-parse --abbrev-ref HEAD)
===== Utilisateurs =====
Création des utilisateurs
* Menu -> Admin
* Panneau Admin Area, Overview -> Users
Depuis l'instance de test, le service de mail ne fonctionne pas, utiliser la procédure ci dessus pour définir le mot de passe de l'utilisateur.
Une fois identifié l'utilisateur peut créer sa clé SSH
# générer une paire de clés
cd ~/.ssh
ssh-keygen -t rsa -b 4096 -C "yoann@gitlab.services.localhost" -f yoann_gitlab_localhost_rsa
# Afficher la clé publique
cat yoann_gitlab_localhost_rsa.pub
# copier /coller la valeur de la clé publique
Pour tester la connexion au serveur:
# Vérifier la valeur du fingerprint du serveur gitlab
ssh -l git -p 2222 -T -i ~/.ssh/yoann_gitlab_localhost_rsa gitlab.services.localhost
On notera qu'on utilise toujours le login **git** pour la connexion SSH. Le serveur différencie les utilisateurs via la clé publique déposée sur l'interface Web.
Pour faciliter la connexion, on peut définir une entrée dans le fichier **~/.ssh/config**
Host gitlab
HostName gitlab.services.localhost
User git
Port 2222
PreferredAuthentications publickey
IdentityFile ~/.ssh/yoann_gitlab_localhost_rsa
Valider la configuration par un test:
$ ssh -T gitlab
Welcome to GitLab, @yoann!
Créer un projet à partir d'un dépot existant:
# Depuis dans le dépot git local
cd filez
# Commande de création du dépot référence proposée par l'interface Web
git push --set-upstream ssh://git@gitlab/yoann/$(git rev-parse --show-toplevel | xargs basename).git $(git rev-parse --abbrev-ref HEAD)
===== Modifier la page d'accueil =====
Par défaut les utilisateurs non authentifiés sont redirigés sur la page de login. On peut changer ce comportement et proposer la page listant les projets publics.
Depuis le compte root:
* ''Menu > admin''
* Une fois le panneau ''Admin Area'' chargé, sélectionner ''Settings > General''
* Déployer la section ''Sign-in restrictions''
* Modifier le champ intitulé ''Home page URL'' avec l' URL souhaitée (%%http://gitlab.fqdn:port/explore%%)
* Valider les modification en via le bouton ''Save changes'' en fin de section
===== Déploiement sur serveur distant =====
Pour déployer l'instance créée localement sur une machine distante:
* Créer un répertoire pour l'application sur la machine distante. Pour l'exemple ''/path/to/gitlab''
* Copier les fichiers docker-compose.yml et .env
* Exporter et recréer les volumes si on souhaite conserver les données produites sur l'instance de test
* Adapter le docker-compose au nouvel hôte
# copier le docker-compose.yml et le .env via ssh
scp docker-compose.yml .env server.fqdn:/path/to/gitlab
# les commandes suivantes utilisent des conteneurs temporaires pour monter les volumes,
# écrire leurs données sur la sortie standard, rediriger la sortie standard via un tunnel ssh
# sur l’entrée standard du conteneur sur l'hote distant et écrire les données dans
# de nouveaux volumes sur le serveur distant:
docker container run --rm -v gitlab_config:/mnt:ro busybox:latest /bin/tar -C /mnt -cf- . | ssh server.fqdn docker container run --rm -i -v gitlab_config:/mnt busybox:latest tar -C /mnt -xf-
docker container run --rm -v gitlab_logs:/mnt:ro busybox:latest /bin/tar -C /mnt -cf- . | ssh server.fqdn docker container run --rm -i -v gitlab_logs:/mnt busybox:latest tar -C /mnt -xf-
docker container run --rm -v gitlab_data:/mnt:ro busybox:latest /bin/tar -C /mnt -cf- . | ssh server.fqdn docker container run --rm -i -v gitlab_data:/mnt busybox:latest tar -C /mnt -xf-
===== Références =====
* https://about.gitlab.com/install/
* https://docs.gitlab.com/ee/install/docker.html
* https://www.troispointzero.fr/le-blog/la-gestion-de-projet-avec-gitlab/
* https://makina-corpus.com/devops/gerer-des-projets-avec-gitlab