{{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